コース概要

導入

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

開始方法

  • Visual Studio CodeでOpenACCプロジェクトの作成
  • プロジェクト構造とファイルの探索
  • プログラムのコンパイルと実行
  • printfとfprintfを使用した出力表示

OpenACCディレクティブと節

  • OpenACCディレクティブと節の理解
  • 並列リージョンを作成するための並列ディレクティブの使用
  • コンパイラー管理型並列性のためにカーネルディレクティブを使用する
  • ループを並列化するためにループディレクティブを使用する
  • データ移動を管理するためのデータディレクティブの使用
  • データの同期を行うアップデートディレクティブの使用
  • キャッシュディレクティブを使用してデータの再利用性を向上させる
  • ルーチンディレクティブを使用してデバイス関数を作成する
  • イベントの同期のためにウェイトディレクティブを使用する

OpenACC API

  • OpenACC APIの役割の理解
  • デバイス情報と機能の照会
  • デバイス番号とタイプの設定
  • エラーと例外の処理
  • イベントの作成と同期

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

  • OpenACCライブラリと相互運用性の理解
  • 数学、乱数、複素数ライブラリの使用
  • CUDA、OpenMP、MPIなどの他のモデルとの統合
  • cuBLAS、cuFFTなどのGPUライブラリとの統合

OpenACCツール

  • 開発におけるOpenACCツールの理解
  • OpenACCプログラムのプロファイリングとデバッグ
  • PGI Compiler、NVIDIA Nsight Systems、Allinea Forgeを使用したパフォーマンス分析

最適化

  • OpenACCプログラムのパフォーマンスに影響を与える要因
  • データローカリティの最適化と転送量の削減
  • ループ並列性と結合の最適化
  • カーネル並列性と結合の最適化
  • ベクトル化とオートチューニングの最適化

まとめと次へのステップ

要求

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

対象者

  • OpenACCを使用してヘテロジニアスデバイスをプログラミングし、並列性を活用したい開発者
  • 異なるプラットフォームやデバイスで実行できるポータブルでスケーラブルなコードを書きたいための技術者
  • ヘテロジニアスプログラミングの高レベル側面を探索し、コード生産性を最適化したいプログラマ
 28 時間

参加者の人数


参加者1人当たりの料金

今後のコース

関連カテゴリー