Research

Home > Research > GPUコンピューティング

GPUコンピューティング

General-purpose computing on graphics processing units
パソコンのグラフィクス・ボード等に搭載される画像処理プロセッサGPU(Graphics Processing Unit)は、より高速に、より美しく、より精細に画面表示することが求められ続け、その描画性能と表示機能が進化し続けています。

そんなにGPUが進化しているなら、GPUを汎用計算に使えるのではという試み「GPUコンピューティング」(GPGPU(General-Purpose GPU)と同義)が2000年あたりから始まりました。大きな節目は、2006年にNVIDIA社が自社のGPUに対してGPGPU用の統合開発環境としてCUDA(Compute Unified Device Architecture)をリリースしたことです。それまでは画像処理の機能を汎用計算に置き換えてプログラミングしなければなりませんでしたが、CUDAの登場で標準C言語とGPGPU用の拡張だけでプログラミングすることができるようになり、一気にGPGPUの利用が広まり始めました。さらに2009年にはCUDAのFORTRAN版もリリースされ、GPUの性能向上に合わせて頻繁なバージョン・アップがなされ、その機能もますます向上しています。2009年末には特定のGPUだけでなく、AMD社、Intel社のGPUやCellなどでも同じプログラムが動作するように標準化として策定されてきたOpen CL も正式にリリースされ、よりGPUコンピューティングが普及する環境が整ってきています。

Tesla_C2050
NVIDIA社製 GPU搭載グラフィクス・ボード

GPUはポリゴンに対する幾何学的処理を高速化するために開発されてきたため、1TFlopsを超えるようなピーク演算性能を持ちます。また、GPUは手元のパソコンに装着して使うことができますし、パソコン市場で展開する製品の流用であるためコストが極めて低いという特徴があります。さらに、GPUは消費電力当たりの演算性能が高いため、スパコンの低消費電力化に向けたアクセラレータとして広く認識されるようになっています。2008年には東京工業大学・学術国際情報センターが680個のGPUをスパコンTSUBAMEに導入し、世界から注目を集めました。NVIDIAは2010年に倍精度浮動小数点演算性能の向上やECCメモリに対応したFermiコアのGPUがリリースし、GPUをHPC(High Performance Computing)で利用する条件が整ってきています。2010年11月のスパコンTop500のランキングでは、1位と3位に中国のGPUスパコンが入り、4位に東京工業大学のTSUBAME 2.0 がランクインするなど、GPUマシンが上位を独占しています。


東京工業大学・学術国際情報センターの TSUBAME2.0

 

(1)GPUのアーキテクチャとプログラミング・モデル
GPUのアーキテクチャは汎用CPUと異なり、2010年の最新NVIDIA GPUでは1チップ当たり500個以上の演算ユニット(CUDAコア)が搭載されています。さらに8〜32個のCUDAコアが1つのマルチプロセッサを構成していて、そこにはL1キャッシュと共有メモリもあります。GPGPUでは、多数の演算ユニットを効率的に使うようにプログラミングすることにより、高い実行性能を達成させることがポイントです。データ並列性の高い問題に対してGPGPUの適用は非常に有効であると言えます。数100の演算ユニットに対して、数1000以上の数のスレッドを実行することにより始めて十分な性能を引き出すことができます。プログラミングはマルチプロセッサ単位ではSPMD(Single Program Multiple Data)であり、その中では32個のスレッドが単位になってSIMD(Single Instruction Multiple Data)が実行されます。

(2)粒子計算
GPGPUが始まってすぐの頃は、重力多体問題での性能が注目を集めました。GRAPEなどの専用計算機と同様にGPUを演算負荷の高い部分にアクセラレータとして利用することにより、高い実行性能を引き出すことができました。その影響で個別要素法(DEM: Discrete Element Method)やSPH(Smoothed Particle Hydrodynamics)法などの粒子法の計算が比較的早くからGPUの利用を開始しました。分子動力学計算(MD: Molecular Dynamics)では、メジャーな汎用MDコードがGPUをサポートするようになって、複数GPUでの大規模計算例も報告されています。

(3)格子計算
ClearSpeedやGRAPEなど従来型のアクセラレータとGPUの最大の違いは、広いメモリバンド幅にあります。流体計算などの格子系のステンシル計算では、演算よりもメモリアクセスに時間がかかり、GPUは格子系のアプリケーションにおいてもCPUと比較して高い実行性能を達成することができます。格子を使う気象計算では、4000GPUを使って150TFlops近い実行性能が達成されています。

(4)多様なアプリケーション
GPGPUは限定された計算への利用ではなく、スパコン・センターに導入されていることからも分かるように、物理、化学、金融、データ処理等の様々な分野のアプリケーションへの適用が進んでいます。