【 ここから本文 】
- TOP
- > Topics : IBMウォッチ
- >
IBMウォッチ
ソーシャルブックマークに登録 :
印刷用ページの表示
【解説】
「GPUコンピューティング」の可能性――高速汎用計算に挑む
GPUの汎用的な計算処理への応用で、ベクトル型HPC市場を切り開くか
(2008年06月30日)
GPUコンピューティングはCPUとの連携で実現される
GPUを汎用的な科学計算に利用するためには、賢いCPUの力を借りて“CPU-GPU連合”を形成したうえで、例えばC言語で使えるような、並列プログラミング・モデルの環境を作り上げる必要がある(図3)。その際、CUDAが、GPUのような特殊な並列処理プロセッサを汎用の計算に使うための、いわば並列プログラミング・モデル環境の統合開発環境として用いられる。
| 図3:CUDAを利用した、CPUとGPUの連携によるGPUコンピューティングのイメージ |
CUDAの構造と機能について、順に述べることにする。例えば、NVIDIAのGPUに「GeForce 8800」がある。GeForce 8800は、さらにHPC向けのTeslaシリーズへと発展しており、TeslaはCUDAの開発環境において、図4のようなCPUとの共存関係でその能力を発揮する。
| 図4:GPUコンピューティングにおけるCPUとGPUの関係 |
最新のGPUにおいては、ワンチップ上に16個のマルチコア(マルチプロセッサ)が載った階層型メニイコア構造となっている。そして、1つのマルチコアは、8個のコア(プロセッサ)で構成されている。注意してほしいのは、GPUにおいてコアとプロセッサは同義であり、ここで言うプロセッサは通常のCPUとは異なるという点だ。なぜなら、GPU内に搭載された128個のコアは、SIMD型並列演算処理のために用意されたアクセラレータとして働くプロセッサ群であり、その機能がCPUとは異なるからである。
ホスト・コンピュータのCPUは、ユーザーが作成したプログラムをコンパイルし、並列プログラミング・モデルに従ったカーネルをプログラムとしてを作成し、グリッド・モデルで演算できるような状態にしてGPUに渡す。グリッドは、複数のブロックで構成されており、マルチスレッド構成の1つのブロックに対して1つのマルチコアがデータの処理を行う。
| 図5:GPUにおいてステージ化された各種演算パイプライン |
加えて、GeForce 8800やTeslaのようなGPUでは、GPU内の各コアにおいて演算パイプラインがステージ化されている。ステージ化されたパイプラインの演算機能も複数に及ぶが、1つのパイプラインが多重構成になっている点も重要である(図5)。
こうしたGPUの高度な演算性能をCUDA環境下でCPUと連携させることで活用可能にすれば、これまでのHPCに比べてはるかに低価格であるにもかかわらず、高度な処理能力を持ったHPCを構築できる。そのため、「価格が安い」というだけで、GPUコンピューティングの性能を軽んじるものではない。GPUコンピューティングでは、空間並列処理はSIMDで実現できるうえに、ステージ化されたパイプライン処理を実行できる。そのため、ベクトル型HPCが得意としている時間並列処理も可能なのである。


















