質問
誰もがデスクトップ上にこの巨大な超並列スーパーコンピューターをグラフィックカードGPUの形で持っています。
- 「こんにちは世界」とはGPUコミュニティと同等ですか?
- 主要なGPUベンダー向けにGPUのプログラミングを開始するには、どうすればいいですか、どこに行きますか?
-アダム
解決
NVidiaのCUDAをご覧ください。IMOはGPUプログラミングを行うのに最も簡単なプラットフォームです。読むべきクールな資料がたくさんあります。
http://www.nvidia.com/object/cuda_home.html
Hello worldは、GPUを使用してあらゆる種類の計算を行うことです。
役立つこと。
他のヒント
- プログラム可能な頂点を取得し、 実行を許可するピクセルシェーダー GPUで直接コードの するバッファを操作する 描画されます。これらの言語(つまり OpenGLのGLシェーダーラングアンドハイ レベルシェーダーラングとDirectXの同等物 )、Cスタイルの構文であり、実際に 使いやすい。 HLSLのいくつかの例 XNAゲームのこちらにあります。 スタジオとDirectX。私は持っていません まともなGLSL参照ですが、私は 周りにたくさんあることを確認してください。これら シェーダー言語は計り知れない への電力量 頂点ごとに描画されるものを操作する または直接ピクセル単位で グラフィックスカードで、物を作る 影、照明、花のような 実装は本当に簡単です。
- 次に頭に浮かぶのは、 openCL で新しいコードをコーディングします 汎用GPUのライン。私は これの使い方はわかりませんが、私の 理解は、openCLが与えることです あなたができることの始まり 両方のプロセッサにアクセスします グラフィックカードと通常のCPU。これはまだ主流の技術ではなく、Appleが推進しているようです。
- CUDA はホットなトピックのようです。 CUDAは、nVidiaのGPUパワーへのアクセス方法です。 こちらにはいくつかの紹介 があります
他の人はあなたの2番目の質問に答えたと思います。 1つ目は、「Hello World」 CUDAの標準セットはないと思いますが、個人的には、並列加算器(つまり、N個の整数を合計するプログラム)をお勧めします。
「削減」を見た場合NVIDIA SDKの例では、表面的に単純なタスクを拡張して、結合読み取り、メモリバンクの競合、ループの展開など、CUDAのさまざまな考慮事項を示すことができます。
詳細については、このプレゼンテーションを参照してください:
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
ATI Stream Computing SDK をご覧ください。これは、スタンフォードで開発された BrookGPU に基づいています。
将来、すべてのGPU作業は OpenCL を使用して標準化されます。アップルが後援するイニシアチブで、グラフィックスカードベンダーに中立です。
OpenCL は、コードをプログラミングできるクロスプラットフォームライブラリを作成するための取り組みです。その他、GPU。実行するGPUを知らなくてもコードを記述できるため、いくつかのタイプのGPUを特にターゲットにせずにGPUのパワーの一部を簡単に使用できます。ネイティブのGPUコードほど性能が高いとは思いません(またはGPUメーカーが許可するほどネイティブではありません)が、一部のアプリケーションではトレードオフに値するものです。
まだ比較的初期の段階(この回答の時点では1.1)ですが、業界である程度の支持を得ています。たとえば、OS X 10.5以降でネイティブにサポートされています。
CUDAやOpenCLを使用せずにGPUプログラミングを開始する別の簡単な方法は、 OpenACC を使用して行うことです。
OpenACCはOpenMPのように動作し、コンパイラディレクティブ( #pragma acc kernels
など)を使用してGPUに作業を送信します。たとえば、大きなループがある場合(大きなループのみが実際にメリットがあります):
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カード用のOpenACCを現在サポートしているのはPGIコンパイラのみです。
MATLABを使用する場合、GPUを使用してテクニカルコンピューティング(マトリックス計算と重い計算/数値計算)を使用するのは非常に簡単になります。ゲーム以外でGPUカードを使用する場合に便利です。以下のリンクをご覧ください:
このトピックと並列プログラミングにも興味があります。 そして、次のリンクを見つけました。Udacity.comをご覧ください!