CUDAによる行列計算
CPUとGPUでどのくらい違うものなのか、CUDAの行列計算でベンチマークを取ってみた。Snow Leopard環境ではまだCUDAの問題が残っているようなので、テスト環境は相変わらずLeopadのまま変更無し。
- MacOS X 10.5.8
- CUDA Toolkit 2.3
- MacBook Pro 13"/Core2 Duo 2.26GHz/4GB/GeForce 9400M
ソースコードは下記より入手した。2つの行列の乗算を求めるものだ。
計算結果は下記の通り。
処理方法 | 使用関数 | 結果(ms) | 備考 |
---|---|---|---|
CPU | Host() | 1083 | |
GPU | Kernel1() | 118 | |
GPU | Kernel2() | 51 | Shared memory使用 |
GPU | Kernel3() | 51 | ループ・アンローリング使用 |
この結果から、次の事が分かる。
- GPUを使う場合の行列計算は、CPUを使う場合に比べて約9倍以上速かった。
- シェアードメモリを使うと、速度はさらに2倍以上も向上した。
- ループ・アンローリング(展開)を使っても、速度は向上しなかった。
単純な計算処理だけど、GPUの威力が分かって面白い。CPUからGPUへ処理を移すだけで、簡単に20倍近い能力差が付いてしまうのは凄いね。GPUチップの種類やドライバ、OSによって結果はいろいろ変わると思うけど、ご参考までに。