コース概要

導入

  • OpenACCとは何ですか?
  • OpenACC vs OpenCL vs CUDA vs SYCL
  • OpenACC の機能とアーキテクチャの概要
  • 開発環境のセットアップ

はじめる

  • Visual Studio コードを使用して新しい OpenACC プロジェクトを作成する
  • プロジェクトの構造とファイルを調べる
  • プログラムのコンパイルと実行
  • printf と fprintf を使用した出力の表示

OpenACC の指令と条項

  • ホストおよびデバイス コードにおける OpenACC ディレクティブと句の役割を理解する
  • OpenACC 並列ディレクティブと句を使用して並列領域を作成し、ギャング、ワーカー、ベクターの数を指定する
  • OpenACC カーネル ディレクティブと句を使用してカーネル領域を作成し、コンパイラに並列処理を決定させる
  • OpenACC ループ ディレクティブと句を使用してループを並列化し、ループの分散、縮小、縮小、タイルを指定する
  • OpenACC データ ディレクティブと句を使用したデータ移動とデータ領域の管理
  • OpenACC 更新ディレクティブと句を使用してホストとデバイス間でデータを同期する
  • OpenACC キャッシュ ディレクティブと句を使用してデータの再利用と局所性を向上させる
  • OpenACC ルーチンのディレクティブと句を使用してデバイス関数を作成し、関数のタイプとベクトル長を指定する
  • OpenACC wait ディレクティブと句を使用してイベントと依存関係を同期する

OpenACC API

  • ホスト プログラムにおける OpenACC API の役割を理解する
  • OpenACC API を使用してデバイスの情報と機能をクエリする
  • OpenACC API を使用してデバイス番号とデバイス タイプを設定する
  • OpenACC API を使用してエラーと例外を処理する
  • OpenACC API を使用したイベントの作成と同期

OpenACC ライブラリと相互運用性

  • デバイス プログラムにおける OpenACC ライブラリと相互運用機能の役割を理解する
  • 数学、ランダム、複素数などの OpenACC ライブラリを使用して一般的なタスクと操作を実行する
  • deviceptr、use_device、acc_memcpy などの OpenACC 相互運用機能を使用して、OpenACC を CUDA、OpenMP、MPI などの他のプログラミング モデルと統合する
  • host_data や宣言などの OpenACC 相互運用機能を使用して、OpenACC を cuBLAS や cuFFT などの GPU ライブラリと統合する

OpenACC ツール

  • 開発プロセスにおける OpenACC ツールの役割を理解する
  • OpenACC ツールを使用して OpenACC プログラムのプロファイリングとデバッグを行い、パフォーマンスのボトルネックと機会を特定する
  • PGI コンパイラー、NVIDIA Nsight Systems、Allinea Forge などの OpenACC ツールを使用して、実行時間とリソース使用率を測定および改善する

最適化

  • OpenACC プログラムのパフォーマンスに影響を与える要因を理解する
  • OpenACC ディレクティブと句を使用してデータの局所性を最適化し、データ転送を削減する
  • OpenACC ディレクティブと句を使用してループの並列処理と融合を最適化する
  • OpenACC ディレクティブと句を使用してカーネルの並列処理と融合を最適化する
  • OpenACC ディレクティブと句を使用してベクトル化と自動チューニングを最適化する

概要と次のステップ

要求

  • C/C++またはFortran言語と並列プログラミングの概念の理解
  • コンピュータアーキテクチャとメモリ階層に関する基礎知識
  • コマンドラインツールとコードエディタの使用経験

対象者

  • OpenACCを使用してヘテロジニアスデバイスをプログラムし、その並列性を利用する方法を学びたい開発者
  • 異なるプラットフォームやデバイス上で実行可能なポータブルでスケーラブルなコードを書きたい開発者
  • ヘテロジニアス・プログラミングのハイレベルな側面を探求し、コードの生産性を最適化したいプログラマー
 28 時間

参加者の人数



Price per participant

お客様の声 (1)

関連コース

GPU Programming with OpenCL

28 時間

GPU Programming with CUDA

28 時間

GPU Programming - OpenCL vs CUDA vs ROCm

28 時間

AMD GPU Programming

28 時間

ROCm for Windows

21 時間

Introduction to GPU Programming

21 時間

関連カテゴリー