ThinkStation S20がやってきた(CUDA編)
私は一応AMD派なので、ATI系のGPUカードを使います(買収前はNVIDIA派だった)。このため、ThinkStation S20の搭載されているQuadro FX1800で久々のNVIDIAののGPUです。また、CUDAが動くGPUは初めてです。
"Top500 CPUアーキテクチャの推移の考察(2010.6)"に現時点でNo.2のスパコンはCUDAを搭載して性能を上げています。
また、私はGPGPUが離陸(いまだ低空飛行だが)すると2009年から考えていたのでQuadro FX1800を使ってみました。
CUDAを使うには、NVIDIAのドライブ類とVisual C++ 2008が必要です。2010だとプロジェクトファイルが読み込めませんでした。このため、本などでVisula C++ 2008を引っ張りだしてインストールしました。
このあたりは、"CUDA高速GPUプログラミング入門"を参考にインストールしました。
ただしOSが64bitでしたのでそこは注意しました。また、サンプルは32bitです。
まずはSandraで見ることができるCPUとGPUのハードスペックです。
■CPU:Xeon E5530(4コア、TB/HTあり、2.4GHz)
■GPU:Quadro FX1800(G94コア,64unit、1.4GHz)
カタログスペックの浮動小数点演算ならば性能はGPUが桁違いに高性能です。
CUDA高速GPUプログラミング入門の最初のサンプル(行列計算)をCPU、CPU(OpenMP)、GPUで速度を調べてみました。
■Xeon E5530(4コア、TB/HTあり、2.4GHz)シングルスレッド
■Xeon E5540(4コア、TB/HTあり、2.4GHz)OpenMP
■Quadro FX1800(G94コア,SU:64、1.4GHz) CUDA
G94コアのためそれほど早くはありませんが結果は、CUDAが圧勝でした。CPU計算のほうもマルチスレッドでないためCPUには不利な計算です。
OpenMPは計算をするためにforの手前で_OPENMPを挿入しました。
ですが、ループ数が多すぎてスレッド生成が足かせになったみたいです。一番最初のfor分にいると落ちてしまったので、もう少しOpenMPの使い方を勉強が必要なようです(私が)。
NVIDIAローカールなCUDAよりもオープンなOpenCLの方が勉強するのには良いかと思っていたのですが、最近のスパコンはNVIDIA系GPGPUの方が普及しているので、これをいい機会にCUADをちょっとかじってみました。思ったよりも速くて、CPUとGPUは用途によって使い分ける時期が来たような気がします(ビデオエンコードはもうそのように使われていますが)。
ただし、CUDAにしろOpenCLにしろ参考にする本が少ないのでそのあたりはもっと普及してほしいものです。
【ThinkStation関連】
・ThinkStation S20がやってきた(ベンチ編)
・ThinkStation S20がやってきた(CPU設定編)
・ThinkPad X201sを選択した3つの理由
・Top500 CPUアーキテクチャの推移の考察(2010.6)