GPGPU/CUDAを用いた実践的アプリケーション開発講座

画像処理や物理シミュレーションの格段の高速化を実現するCUDAの実践講座!

GPGPU/CUDAを用いた実践的アプリケーション開発講座 〜1人1台 PC実習付〜

共催:R&D支援センター

日時:2011年7月26日 (火) 10:30〜17:30

[講師の言葉]
本講座では、NVIDIAGPGPU環境であるCUDAを用いたプログラミングをHands-On形式にて習得します。あわせて、ハードウエアアーキテクチャの理解や、プロファイラの使用法の習得を通じて、より効率の高いCUDAプログラミングを行うために必須となる基礎を身につけます。
 まず、CUDAのソフトウエアアーキテクチャの理解から始め、基礎的なCUDAプログラミングについて実習を行います。より実践的な実習として、 (1)画像処理、(2) ライフゲーム(物理シミュレーションに用いられるメッシュを用いた処理の例)、(3)疎行列のソルバ(構造計算、流体シミュレーションなどに用いられる)など、本格的なCUDAによるプログラミングへと繋がる題材を用います。また、最適化のための前提知識となる、ハードウエアアーキテクチャについて、説明を行います。その後、プロファイラによる性能評価を行い、結果をハードウエアアーキテクチャと対応づけて理解します。加えて、NVIDIAから配布されているCUDA SDKに含まれるサンプルを題材に、GPUにおける効率よいアルゴリズムや、サンプルにおける並列処理の構成などを、具体的に解説します。より高度なトピックとして、CUDAにおける並列処理が、非常に高性能となり得る理由を、CPUアーキテクチャとの比較を通じて、明らかにし、その長所、短所について理解します。
 最後に、オープンスタンダードであるOpenCLについて、CUDAとの対比を行いながら、説明します。また、AMDGPU(RADEONシリーズ)における、OpenCLを用いたプログラミングについても、説明します。

PCは主催側で用意いたします
※用意するPCはWindows XPです。
MacOSLinux で実習をご希望の方は、ご持参ください

[プログラム]
Ⅰ. CUDAソフトウエアアーキテクチャ解説
Ⅱ. 基本プログラミング実習 
  1. 開発環境
  2. サンプル1 ホスト/デバイスメモリの扱い
  3. サンプル2 小規模なカーネル(並列リダクション) 
  4. サンプル3 スケールするカーネル(並列リダクション) 
Ⅲ. 応用プログラミング実習 
  1. 画像系(テクスチャ、OpenGL Interoperability)
  2. メッシュ系(共有メモリ・袖領域の扱い)
  3. 疎行列ソルバ
Ⅳ. プロファイラを用いた性能評価
  1. CUDAハードウエアアーキテクチャ解説
  2. プロファイラによる性能評価
Ⅴ. GPGPUの特性
  1. 高いパフォーマンスが得られる理由
  2. 得意な分野・苦手な分野
Ⅵ. サンプルとアルゴリズム解説(CUDA SDKダイジェスト) 
  1. N体シミュレーション
  2. 物理シミュレーションのための疑似乱数生成
  3. 二次元流体
  4. ボリュームレンダリング
Ⅶ. OpenCL
  1. CUDAデバイスにおけるOpenCL
  2. AMD GPU(RADEONシリーズ)におけるOpenCL