お問い合わせ

コース概要

はじめに

  • OpenACCとは何か?
  • OpenACCとOpenCL/CUDA/SYCLの違い
  • OpenACCの機能およびアーキテクチャ概要
  • 開発環境のセットアップ方法

はじめてみよう

  • Visual Studio CodeでOpenACCプロジェクトを作成する
  • プロジェクト構造や各ファイルについて理解する
  • コンパイルおよびプログラムの実行方法
  • printfおよびfprintfを用いた出力表示方法

OpenACCの指示子と句

  • OpenACCの指示子・句の基本知識
  • 並列領域を作成するための並列化指示子の利用法
  • コンパイラ主導型の並列処理設定に用いるカーネル指示子
  • ループの並列化設定に使うループ指示子
  • データ移動を管理するためのデータ関連指示子
  • データ同期に用いるアップデート指示子
  • キャッシュ利用によりデータ再利用性を高める方法
  • デバイス側で実行可能な関数定義時のルーチン指示子
  • イベント同期化に必要な待機指示子

OpenACC APIについて

  • OpenACC APIの役割の理解方法
  • デバイス情報や対応能力の確認手順
  • 使用するデバイスの種類・番号の指定法
  • エラーおよび例外処理手法
  • イベント生成と同期化方法

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

  • 各種OpenACCライブラリや他モデルとの連携の仕組み
  • 数学・乱数処理・複素数演算向けライブラリの活用方法
  • CUDA/OpenMP/MPIなど別技術との統合手法
  • cuBLASやcuFFTなどのGPU用ライブラリとの連携法

OpenACCツールについて

  • 開発時における各種OpenACCツールの有効利用法
  • プログラムのプロファイリングおよびデバッグ手法
  • PGIコンパイラやNVIDIA Nsight Systems、Allinea Forgeを用いたパフォーマンス分析技法

最適化技術について

  • OpenACCプログラムのパフォーマンスに影響する要因
  • データ局所性の向上および転送回数削減手法
  • ループ並列処理の最適化と結合処理法
  • カーネルの並列処理や統合処理の最適化手法
  • ベクトル化および自動チューニングによる最適化技術

まとめと次のステップ

要求

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

受講対象者

  • OpenACCを使って異種混在環境向けプログラミングおよび並列性活用方法を学びたい開発者
  • さまざまなプラットフォームやデバイス上で実行可能かつ拡張性の高いコード作成に興味がある開発者
  • 異種混在環境プログラミングの概要を把握し、生産性向上のためのコード最適化手法を学びたいプログラマー
 28 時間

参加者の人数


参加者1人あたりの価格

今後のコース

関連カテゴリー