お問い合わせ

コース概要

はじめに

  • GPUプログラミングとは何か?
  • なぜGPUプログラミングを用いるのか?
  • GPUプログラミングにおける課題やトレードオフは何か?
  • GPUプログラミングに用いられるフレームワークにはどのようなものがあるか?
  • 目的に合わせて適切なフレームワークを選択する方法

OpenCL

  • OpenCLとは何か?
  • OpenCLの利点と欠点は何か?
  • OpenCL用の開発環境を設定する方法
  • OpenCLを用いてベクター加算処理を行う基本的なプログラムを作成する
  • OpenCL APIでデバイス情報の照会、メモリ管理、データ転送、カーネル起動、スレッド同期などを実現する方法
  • OpenCL C言語を用いてデバイス上で動作しデータ操作を行うカーネルプログラムを記述する方法
  • 組み込み関数や変数、ライブラリを用いて一般的な処理を実装する方法
  • global、local、constant、privateといったメモリ領域の活用によりデータ転送およびメモリアクセスを最適化する手法
  • ワークアイテムやワークグループ、NDレンジ等を用いた並列処理制御の方法 </li>
  • CodeXLなどのツールでOpenCLプログラムをデバッグ・テストする手順 </li>
  • データ結合化やキャッシュ活用、プリフェッチング、プロファイリングといった手法を用いた最適化方法 </li>

CUDA

  • CUDAとは何か? </li>
  • CUDAの利点と欠点は何か? </li>
  • CUDA用の開発環境を設定する方法 </li>
  • CUDAを用いてベクター加算処理を行う基本的なプログラムを作成する </li>
  • CUDA APIでデバイス情報の照会、メモリ管理、データ転送、カーネル起動、スレッド同期などを実現する方法 </li>
  • CUDA C/C++言語を用いてデバイス上で動作しデータ操作を行うカーネルプログラムを記述する方法 </li>
  • 組み込み関数や変数、ライブラリを用いて一般的な処理を実装する方法 </li>
  • global、shared、constant、localといったメモリ領域の活用によりデータ転送およびメモリアクセスを最適化する手法 </li>
  • スレッドやブロック、グリッドを用いた並列処理制御の方法 </li>
  • CUDA-GDB、CUDA-MEMCHECK、NVIDIA NsightなどのツールでCUDAプログラムをデバッグ・テストする手順 </li>
  • データ結合化やキャッシュ活用、プリフェッチング、プロファイリングといった手法を用いた最適化方法 </li>

ROCm

  • ROCmとは何か? </li>
  • ROCmの利点と欠点は何か? </li>
  • ROCm用の開発環境を設定する方法 </li>
  • ROCmを用いてベクター加算処理を行う基本的なプログラムを作成する </li>
  • ROCm APIでデバイス情報の照会、メモリ管理、データ転送、カーネル起動、スレッド同期などを実現する方法 </li>
  • ROCm C/C++言語を用いてデバイス上で動作しデータ操作を行うカーネルプログラムを記述する方法 </li>
  • 組み込み関数や変数、ライブラリを用いて一般的な処理を実装する方法 </li>
  • global、local、constant、privateといったメモリ領域の活用によりデータ転送およびメモリアクセスを最適化する手法 </li>
  • スレッドやブロック、グリッドを用いた並列処理制御の方法 </li>
  • ROCm DebuggerやROCm ProfilerなどのツールでROCmプログラムをデバッグ・テストする手順 </li>
  • データ結合化やキャッシュ活用、プリフェッチング、プロファイリングといった手法を用いた最適化方法 </li>

比較とまとめ

  • OpenCL、CUDA、ROCmの特徴・性能・互換性を総合的に比較する方法 </li>
  • ベンチマークや各種指標を用いてGPUプログラムの評価を行う手法 </li>
  • GPUプログラミングにおけるベストプラクティスやノウハウを学ぶ方法 </li>
  • GPUプログラミングの現状および今後の動向・課題について理解する方法 </li>

まとめと次のステップ

要求

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

対象者

  • GPUプログラミングに用いる複数のフレームワークの特徴や性能、互換性を比較したい開発者
  • さまざまなプラットフォームやデバイスで動作する移植性・拡張性に優れたコードを記述したい開発者
  • GPUプログラミングおよび最適化における課題とトレードオフを学びたいプログラマー
 28 時間

参加者の人数


参加者1人あたりの価格

今後のコース

関連カテゴリー