初心者のためのGPGPU/CUDAの基礎と実践プログラミング講座

画像、解析などを高速処理するGPGPUを基礎から学ぶ特別基礎講座!

初心者のためのGPGPU/CUDAの基礎と実践プログラミング講座〜1人1台PC実習付〜

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

日時:2011年10月24日(月) 10:30〜17:30

[講師の言葉]
本講座では、NVIDIAGPGPU環境であるCUDAを用いたプログラミングを実習により習得します。まず、CUDAが誕生するまでの道のりをたどり、CUDAがもたらしたGPU上の汎用プログラミングの特色について説明します。
 次に、CUDAのソフトウエアアーキテクチャを理解し、基礎的なCUDAプログラミングを、Hands-on形式にて行います。例として、GPU上のメモリの扱いや、並列リダクションによる総和の取得など、簡便な例を用いて、実際に、CUDA プログラムの実装・実行を体験して頂きます。
 加えて、CUDAで用いられるNVIDIAGPUの動作について平易な解説を行い、CUDAを応用分野に適用していくために必要となる基礎知識を取得します。最後に、応用的なプログラミングを、複数の例題を用いて習得します。まず、 (1)メモリアクセスパターンの実習を通じ、GPUの特色である超広帯域のメモリバンド幅を引き出すための書き方を実践します。また、(2) 画像処理における並列プログラミング、(3) 数値演算によるデータ処理 (4) メッシュ系のシミュレーションなど、CUDAにより大きなパフォーマンスの向上が見られることが知られている例に対して、実習やコードレビューを行い、実践的なプログラミングを体験・習得します。

[プログラム]
Ⅰ. GPGPU/CUDA
  1. GPGPU/CUDA以前
  2. CUDAとは
Ⅱ. CUDAプログラミングの概要
  1. ホストプログラミング
  2. GPUカーネルプログラミング
Ⅲ. 基本プログラミング実習
  1. 開発環境の構築
  2. サンプル1 ホスト/デバイスメモリの扱い
  3. サンプル2 小規模なカーネル(並列リダクション)
  4. サンプル3 スケールするカーネル(並列リダクション)
Ⅳ. 応用プログラミングへの基礎知識
  1. CUDAハードウエアの基礎
  2. CUDAの制約とその改善
Ⅴ. 応用プログラミング実習
  1. メモリアクセスパターン
    a. 高速なメモリアクセス
    b. 低速なメモリアクセス
  2. 画像処理
    a. OpenGLとCUDAの連携
    b. テクスチャの利用
    c. 簡単な画像フィルタ
  3. 数値演算
    a. FFT
    b. デジタルフィルタ
  4. シミュレーション
    a. メッシュと袖領域
    b. 状態の更新
    c. ライフゲーム
Ⅵ. より高度なプログラミングのために