誰もがデスクトップ上にグラフィックスカードGPUの形でこの巨大な超並列スーパーコンピューターを持っています。
-アダム
NVidiaのCUDAをご覧ください。IMOはGPUプログラミングを行うのに最も簡単なプラットフォームです。読むべきクールな資料がたくさんあります。 http://www.nvidia.com/object/cuda_home.html
Hello worldは、GPUを使用してあらゆる種類の計算を行うことです。
お役に立てば幸いです。
他の人はあなたの2番目の質問に答えたと思います。最初のCUDAの「Hello World」については、標準が設定されているとは思いませんが、個人的には、並列加算器(つまり、N個の整数を合計するプログラム)をお勧めします。
NVIDIA SDKの「削減」の例を見ると、表面的に単純なタスクを拡張して、結合読み取り、メモリバンクの競合、ループの展開など、CUDAのさまざまな考慮事項を示すことができます。
詳細については、このプレゼンテーションを参照してください。
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
ATI Stream Computing SDK をご覧ください。これは、スタンフォードで開発された BrookGP に基づいています。
将来的には、すべてのGPU作業が OpenCL を使用して標準化される予定です。これは、グラフィックカードベンダーに中立なAppleが後援するイニシアチブです。
OpenCL は、特にGPUに適したコードをプログラミングできるクロスプラットフォームライブラリを作成する取り組みです。どのGPUで実行されるかを知らなくてもコードを記述できるため、GPUのいくつかのタイプを特に対象とすることなく、GPUのパワーの一部を簡単に使用できます。私はそれがネイティブGPUコードほど高性能ではないと思います(またはGPUメーカーが許可するほどネイティブではありません)が、いくつかのアプリケーションにとってはトレードオフに値するでしょう。
まだ比較的初期の段階(この回答の時点では1.1)ですが、業界である程度の支持を得ています。たとえば、OS X 10.5以降でネイティブにサポートされています。
CUDAやOpenCLを使用せずにGPUプログラミングを開始するもう1つの簡単な方法は、 OpenACC を使用することです。
OpenACCはOpenMPと同様に動作し、GPUに作業を送信するためのコンパイラディレクティブ(#pragma acc kernels
など)を備えています。たとえば、大きなループがある場合(大きなループのみが実際にメリットがあります):
int i;
float a = 2.0;
float b[10000];
#pragma acc kernels
for (i = 0; i < 10000; ++i) b[i] = 1.0f;
#pragma acc kernels
for (i = 0; i < 10000; ++i) {
b[i] = b[i] * a;
}
編集:残念ながら、NVIDIA GPUカードの場合、PGIコンパイラのみが現在OpenACCを実際にサポートしています。
多分あなたはこれを好きになるでしょう GPGPU IDE 、これは一般的なGPU実験のための不必要な複雑さを隠します。現在、カーネルはOpenCLおよび/またはGLSLシェーダー用にプログラムできます。
MATLABを使用する場合、GPUを使用してテクニカルコンピューティングを簡単に実行できます(マトリックス計算と重い計算/数値計算)。ゲーム以外でGPUカードを使用する場合に役立ちます。以下のリンクをご覧ください。
このトピックと並列プログラミングにも興味があります。そして、私は次を見つけました link 、Udacity.comを見てください!