コース概要

はじめに

  • 何がGPUプログラミングなのか?
  • なぜGPUプログラミングを使うのか?
  • GPUプログラミングの課題とトレードオフは何か?
  • GPUプログラミングのフレームワークとツールは何か?
  • 自身のアプリケーションに適したフレームワークとツールを選択する。

OpenCL

  • 何がOpenCLなのか?
  • OpenCLの利点と欠点は何ですか?
  • OpenCLの開発環境を設定する。
  • ベクトル加算を行う基本的なOpenCLプログラムを作成する。
  • デバイス情報の取得、デバイスメモリの確保と解放、ホストとデバイス間でのデータのコピー、カーネルの起動、スレッドの同期など、OpenCL APIを使用する。
  • デバイスで実行されデータを操作するカーネルを書くためにOpenCL C言語を使用する。
  • 一般的なタスクや操作を行うためにOpenCL組み込み関数、変数、ライブラリを使用する。
  • データ転送とメモリアクセスを最適化するためにグローバル、ローカル、定数、プライベートなどのOpenCLメモリ空間を使用する。
  • ワークアイテム、ワークグループ、NDレンジが定義する並列性を制御するためにOpenCL実行モデルを使用する。
  • CodeXLなどのツールを使用してOpenCLプログラムのデバッグとテストを行う。
  • コールエシング、キャッシュ、プリフェッチ、プロファイリングなどのテクニックを使用してOpenCLプログラムを最適化する。

CUDA

  • 何がCUDAなのか?
  • CUDAの利点と欠点は何ですか?
  • CUDAの開発環境を設定する。
  • ベクトル加算を行う基本的なCUDAプログラムを作成する。
  • デバイス情報の取得、デバイスメモリの確保と解放、ホストとデバイス間でのデータのコピー、カーネルの起動、スレッドの同期など、CUDA APIを使用する。
  • デバイスで実行されデータを操作するカーネルを書くためにCUDA C/C++言語を使用する。
  • 一般的なタスクや操作を行うためにCUDA組み込み関数、変数、ライブラリを使用する。
  • データ転送とメモリアクセスを最適化するためにグローバル、共有、定数、ローカルなどのCUDAメモリ空間を使用する。
  • スレッド、ブロック、グリッドが定義する並列性を制御するためにCUDA実行モデルを使用する。
  • CUDA-GDB、CUDA-MEMCHECK、NVIDIA Nsightなどのツールを使用してCUDAプログラムのデバッグとテストを行う。
  • コールエシング、キャッシュ、プリフェッチ、プロファイリングなどのテクニックを使用してCUDAプログラムを最適化する。

ROCm

  • 何がROCmなのか?
  • ROCmの利点と欠点は何ですか?
  • ROCmの開発環境を設定する。
  • ベクトル加算を行う基本的なROCmプログラムを作成する。
  • デバイス情報の取得、デバイスメモリの確保と解放、ホストとデバイス間でのデータのコピー、カーネルの起動、スレッドの同期など、ROCm APIを使用する。
  • デバイスで実行されデータを操作するカーネルを書くためにROCm C/C++言語を使用する。
  • 一般的なタスクや操作を行うためにROCm組み込み関数、変数、ライブラリを使用する。
  • データ転送とメモリアクセスを最適化するためにグローバル、ローカル、定数、プライベートなどのROCmメモリ空間を使用する。
  • スレッド、ブロック、グリッドが定義する並列性を制御するためにROCm実行モデルを使用する。
  • ROCm DebuggerとROCm Profilerなどのツールを使用してROCmプログラムのデバッグとテストを行う。
  • コールエシング、キャッシュ、プリフェッチ、プロファイリングなどのテクニックを使用してROCmプログラムを最適化する。

HIP

  • 何がHIPなのか?
  • HIPの利点と欠点は何ですか?
  • HIPの開発環境を設定する。
  • ベクトル加算を行う基本的なHIPプログラムを作成する。
  • デバイスで実行されデータを操作するカーネルを書くためにHIP言語を使用する。
  • 一般的なタスクや操作を行うためにHIP組み込み関数、変数、ライブラリを使用する。
  • データ転送とメモリアクセスを最適化するためにグローバル、共有、定数、ローカルなどのHIPメモリ空間を使用する。
  • スレッド、ブロック、グリッドが定義する並列性を制御するためにHIP実行モデルを使用する。
  • HIPプログラムのデバッグとテストを行うためにROCm DebuggerとROCm Profilerなどのツールを使用する。
  • コールエシング、キャッシュ、プリフェッチ、プロファイリングなどのテクニックを使用してHIPプログラムを最適化する。

比較

  • OpenCL、CUDA、ROCm、HIPの機能、性能、互換性を比較する。
  • ベンチマークやメトリクスを使用してGPUプログラムを評価する。
  • GPUプログラミングのベストプラクティスとヒントを学ぶ。
  • GPUプログラミングの現在と将来の傾向、課題を探る。

まとめと次なるステップ

要求

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

対象者

  • GPUプログラミングの基本と主要なフレームワーク、ツールを学びたい開発者
  • 異なるプラットフォームやデバイスで実行できる移植性とスケーラビリティのあるコードを書くことを目指す開発者
  • GPUプログラミングの利点や課題、最適化について探求したいプログラマ
 21 時間

参加者の人数


参加者1人当たりの料金

今後のコース

関連カテゴリー