10

OpenCL の 1.0 仕様が数日前に公開されたばかりで (仕様はこちら)、私はそれを読み始めたところです。OpenMP ( spec ) などの他の高性能マルチプロセッシング API とうまく連携するかどうかを知りたいです。また、何を学ぶべきかを知りたいです。だから、ここに私の基本的な質問があります:

  1. すでに OpenMP を使用している場合、それによって OpenCL が壊れますか、またはその逆ですか?
  2. OpenCL は OpenMP よりも強力ですか? それとも、それらは補完的であることを意図していますか?
  3. OpenCL プログラムを標準の C99 プログラム (または他の言語) に接続する標準的な方法はありますか? それは何ですか?
  4. 誰かが OpenCL の本を書いているかどうか知っていますか? 仕様を読んでいますが、本の方が役立つことがわかりました。
4

4 に答える 4

7

OpenMP と OpenCL は別個のものですが、連携させることができます。どちらも他方を「壊す」べきではありません。

議論のために、既存のコードベースへの変更を最小限に抑えることと、パフォーマンスまたは計算能力との間にトレードオフがあると仮定しましょう。OMP は、1 つまたは 2 つのクイック プラグマを使用して、恥ずかしいほど並列の問題に「魔法のように」適用できるという点で「簡単」です。

OpenCL は、典型的な OS スレッド モデルを超えたまったく新しい高レベルの概念を導入しています。クロノスはおそらくそれを大声で言いたくないでしょうが、その起源は NVIDIA の CUDA にあります。現在の動作を確認したい場合は、CUDA SDK をダウンロードしてプレイを開始してください。NVIDIA GPU がなくても心配はいりません。GPU エミュレータ ソフトウェア オプションがあります。OpenCL は、CPU、DSP、「アクセラレータ」 (IBM の CellBE およびおそらく Intel の Larrabee に対する Khronos のニックネーム) に適用される GPU の便利な抽象化です。

OpenCL は「C99 で直接記述」することは想定されていません。構文が C99 と類似/同一であり、いくつかの新しいキーワードがあるため、C99 拡張機能と呼ばれます。カーネルから libc (またはその他のライブラリ) を呼び出すことはできません。

両方を使用することもできますが、理論的には、コードを移植する意思がある場合は、OpenCL の方が (より多くのコンピューティング デバイスに移植できるという点で) 「優れている」はずです。OpenCL カーネルでは OpenMP プラグマを使用できません。

以下も参照してください。

于 2009-01-07T05:40:30.767 に答える
0
  1. OpenCLはC99afaikで直接書かれることになっていますか?とにかくそれのために現在利用可能なヘッダーファイルがあります。
于 2008-12-19T08:51:56.553 に答える
0

ちなみに、CUDAを使ってgpgpuにopenMpした作品があります。

于 2010-04-12T23:23:56.267 に答える