GPUコンピューティング,またはGPGPUとは,多目的なサイエンスおよびエンジニアリング・コンピューティングを行うためGPU (グラフィックス・プロセッシング・ユニット)を利用することです。
GPUコンピューティングのモデルは、CPUとGPUを共に異種混合なコプロセッシング・コンピューティング・モデルにおいて用いるというものです。アプリケーションのシーケンシャルな部分はCPUで作動し、並列な演算部分はGPUでアクセラレートされます。ユーザの目には、アプリケーションが単により速く動作しているように見えます。というのも、パフォーマンス向上のためにGPUの高性能を利用しているからなのです。

GPUコンピューティングのモデルは、CPUとGPUを共に異種混合なコプロセッシング・コンピューティング・モデルにおいて用いるというものです。アプリケーションのシーケンシャルな部分はCPUで作動し、並列な演算部分はGPUでアクセラレートされます。ユーザの目には、アプリケーションが単により速く動作しているように見えます。というのも、パフォーマンス向上のためにGPUの高性能を利用しているからなのです。
GPGPUの過去数年における成功は、それに伴うCUDA並列プログラミング・モデルのプログラミングの容易さでした。このプログラミング・モデルでは、アプリケーション・デベロッパーがそのアプリケーションを修正し、計算集約型カーネルを取り上げ、それをGPUにマッピングできるようにします。アプリケーションのその他の部分はCPUに残ります。一つの機能のGPUへのマッピングには、その機能内のパラレリズムをむき出しにするためその機能をリライトすること、そしてデータをGPUへ、そしてGPUから移動させるためのC言語キーワードが存在します。デベロッパーは、数万ものスレッドを同時にローンチすることが可能になり、GPUハードウエアがスレッドを管理し、スレッドのスケジューリングも行います。
Tesla 20シリーズのGPUはCUDAアーキテクチャの最新版『Fermi』アーキテクチャを基礎としています。 Fermiは科学系のアプリケーションを対象に最適化されており、500ギガフロップ以上のIEEE基準の倍精度浮動小数点ハードウエア・サポート、L1およびL2キャッシュ、ECCメモリー・エラー・プロテクション、GPU全体に分散した共有メモリによるローカル・ユーザ管理のデータ・キャッシュ、結合したメモリー・アクセスなど主要な機能を持ちます。
GPUコンピューティングの歴史
グラフィックチップは、固定機能グラフィック・パイプラインとしてスタートしました。数年の間に、これらのグラフィックチップはしだいにプログラム可能になり、その結果、NVIDIAは最初のGPU(グラフィック処理ユニット)を導入したのです。1999年から2000年にかけて、医療画像や電磁気分野の特にコンピュータ科学者が、一般目的のコンピュータアプリケーションを動作させるためにGPUを使用し始めました。彼らは、GPUにおける素晴らしい浮動小数点性能が、幅広い科学的アプリケーションの性能の大幅な向上につながることを発見しました。これは、GPGPU(GPUにおける一般目的コンピューティング)と呼ばれる動きの幕開けでした。
問題は、GPGPUがGPUをプログラムするために、OpenGLやCgのようなグラフィックプログラミング言語の使用を必要とすることでした。開発者たちは、自分たちの科学アプリケーションをグラフィックアプリケーションのようにしなければならず、三角やポリゴンを描画する問題にぶつかりました。これが科学へのGPUの巨大な性能に近づくことを制限しました。
NVIDIAは、この性能をより広い科学分野にもたらす可能性を認め、科学的アプリケーションのためにGPUを完全にプログラム可能にするように修正するための投資を決定し、C、C++やFortranといった高水準言語へのサポートを加えました。これはGPUのためのCUDAアーキテクチャにつながっていきました。
CUDA並列アーキテクチャとプログラミングモモデル
CUDA並列ハードウェアアーキテクチャは、ファイングレインおよびコアースグレイン(きめの細かい)データおよびタスク並列の発現を可能にする一連の抽象化を提供する、CUDA並列プログラミングモデルを伴っています。プログラマは、C、C++、Fortranといった高水準言語、またはOpenCLやDirect-11 ComputeといったドライバAPIにおいて、並列性を表現することを選択できるのです。

NVIDIAは今日、C、C++、Fortran、OpenCL、そしてDirectComputeを用いたGPUのプログラミングのサポートを提供しています。上記の図と
『こちらのリンク』に示されたとおり、一式の『ソフトウエア開発ツール』と諸ライブラリとミドルウエアをデベロッパーの方々にご利用いただけます。
CUDA並列プログラミングモデルは、並列で個別に解決し得る下位問題にプログラマが大きく問題を分けられるようにします。下位問題におけるきめの細かい並列性は、それぞれの下位問題が並列において協同的に解決され得るように表現されます。
OpenCL はKhronos Groupのライセンス下で使用しているAppleの登録商標です。
DirectXは、Microsoft社の登録商標です。