CUDAによる行列計算

CPUとGPUでどのくらい違うものなのか、CUDAの行列計算でベンチマークを取ってみた。Snow Leopard環境ではまだCUDAの問題が残っているようなので、テスト環境は相変わらずLeopadのまま変更無し。

ソースコードは下記より入手した。2つの行列の乗算を求めるものだ。

計算結果は下記の通り。

処理方法 使用関数 結果(ms) 備考
CPU Host() 1083
GPU Kernel1() 118
GPU Kernel2() 51 Shared memory使用
GPU Kernel3() 51 ループ・アンローリング使用

この結果から、次の事が分かる。

  1. GPUを使う場合の行列計算は、CPUを使う場合に比べて約9倍以上速かった。
  2. シェアードメモリを使うと、速度はさらに2倍以上も向上した。
  3. ループ・アンローリング(展開)を使っても、速度は向上しなかった。

単純な計算処理だけど、GPUの威力が分かって面白い。CPUからGPUへ処理を移すだけで、簡単に20倍近い能力差が付いてしまうのは凄いね。GPUチップの種類やドライバ、OSによって結果はいろいろ変わると思うけど、ご参考までに。