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 プラグマを使用できません。
以下も参照してください。