|
GPGPUとは
General Purpose Graphics Processing Unit の略で、CPUではなくグラフィックカード(GPU)に計算をさせる仕組みです。
もともとグラフィックカードは高速で緻密な3D描写を行うために、CPUと比べて並列性が高く卓越した浮動小数点演算能力を持っています。この能力をグラフィック描画のみならず汎用の数値計算に使用する技術がGPGPUです。NVIDIAが開発したGPGPU用演算ハードウェアが「TESLA」でありそれを動作させるためのソフトウェアが「CUDA」となります。
▲上に戻る
プログラムの組み方や環境にもよりますが、NVIDIAのホームページでは以下のような実績が報告されています。
上記のような物理シミュレーション系の作業はTESLA/CUDAにとって最も得意とする分野です。
行列演算のプログラムでも以下のような驚くべき値を出しています。

| m |
Time(ms) |
| CPU |
TESLA |
| 256x256 |
46
|
16 |
| 512x512 |
344 |
31 |
| 1024x1024 |
1,344 |
63 |
| 1536x1536 |
4,406 |
188 |
| 2048x2048 |
20,812 |
407 |
| 2560x2560 |
313,227 |
765 |
| 3072x3072 |
925,256 |
1,313 |
| 3584x3584 |
1,210,267 |
2,047 |
| 4096x4096
|
1,803,735 |
3,032 |
|
|
 |
▲上に戻る
Computer Unified Device Architecture の略で、通常GPUの演算リソースを使用するためにはNVIDIA「Cg」等のシェーディング言語(グラフィック描画用の専用のプログラミング環境)を使用しなければなりませんが変数量が限られたていたり、仮想メモリの仕組みを持たないビデオメモリでは取り扱えるデータ量に上限がある等汎用的なプログラミングの記述は難しいものがありました。
この問題を解決実現したものがNVIDIAのGPU向け開発環境「CUDA」です。
CUDAはドライバ、コンパイラ、ライブラリ等から構成されたC言語ベースのハードウェア、ソフトフェアの統合開発環境です。汎用コンピューティングに適した標準的なC言語をベースとしているため、飛躍的に扱いやすい環境になっています。

CUDAの特徴
・C++を独自に拡張しているので従来のCgと比べると遙かに簡単
・APIが充実している
・CUDAの使用によりGPUを並列演算コプロセッサとして利用可能
・複数のGPUに対応
▲上に戻る
CUDAはNVIDIAのサイトから無償で入手できます。
http://developer.nvidia.com/object/cuda.html
▲上に戻る
CUDAはC++をベースとした開発環境ではありますが、残念ながら既存のC++ソースプログラムをそのまま利用することは出来ません。ソースコードをCUDA用に書き換える作業が必要になります。
CUDAはNVIDIAのサイトからフリーでダウンロードできるソフトウェアですが、現時点での実質的なCUDAに対するサポートは同サイトのガイドとフォーラムのみとなります。
▲上に戻る
|