研究概要 |
GPGPUで現在主流となっているのはCUDA環境であるが,NVIDIA製GPUのみを対象としているという制限がある.他のベンダのGPUやメニーコアプロセッサも対象とする共通のプログラム環境の中でCUDAに一番近いものがOpenCLである.OpenCL環境ではCUDAとほぼ同じ機能が提供されており,特にFFTの計算を実行するカーネル部分のコードは似ている.唯一の差異はFFTで利用する三角関数のテープルの扱いで,CUDAではテクスチャメモリを利用していたがOpenCLではコンスタントメモリを使用した.AMD製RADEON HD7970を用いてCUDA+NVIDIA製GPUを超える性能を実現することができた.一方,性能のポータビリティはOpenCLでは確保されていない.NVIDIA製GPUではCUDA版と比べるとOpenCL版の性能は現時点ではかなり劣る.今後ドライバの成熟を待てばこの差は縮まることが期待される. さらに複数GPUへの対応も進めている.特にGPUのデバイスメモリ容量は限られるため,実アプリケーションでは容量を確保するために複数GPUを利用するケースも少なくない.GPU間の転送はPCI-ExpressインターフェイスやInfiniBandなどのノード間インターコネクトの性能に大きく依存し,実行時間の大部分をGPU間のall-to-all通信が占めることになる.CUDAではversion4.0からこのGPU間通信を強化しており,PCI-Expressネットワークを介したGPU問の直接通信や,InfinlBand HCAとの協調動作などがサポートされた.これらの機能を活用することで,通信が全く必要ないシングルGPU実行時と比べても4GPU搭載システムで約2倍,64ノード64GPUのクラスタで最大13倍の性能向上を実現した.通信関連の各種自動最適化は今後の課題である。
|