2017-04-21 15 views
2

OpenCL 2.1および2.2は、従来のOpenCL Cカーネル言語に加えて、OpenCL C++カーネル言語を導入しました。 OpenCLをCをサポートする環境で使用する必要がありますが、C++はサポートしていません。 OpenCL C++では使用可能で、OpenCL Cでは使用できないC++構文以外のOpenCL 2.2の機能はありますか?OpenCL C++では利用可能ですが、OpenCL Cでは利用できないOpenCL 2.2の機能はありますか?

OpenCL C++カーネル言語を使用するには、C++コンパイラ(C++メインプログラムを作成する)を使用する必要がありますか? OpenCL C++カーネル言語を処理するための限定されたC++コンパイラがいくつかのOpenCL実装に含まれていました。

+0

私は追加された機能についてはわかりません。そのためのスペックを見る必要があります。しかし、それはC + +のコードなので、あなたがいくつかの仕事に行くのでなければ、あなたはC++コンパイラを使うつもりです。 – Petesh

答えて

3

私はそれを試したことはありませんが、OpenCL 2.1/2.2でC++カーネル言語を使用するにはC++コンパイラが必要ではないと思います。 C++コンパイラで)。もちろん、あなたのホストプログラムはC++でなくCでなければなりません。

+0

どうしたのですか? Cコンパイラが 'kernel'キーワードに続いてC++コードを検出するとどうなりますか? –

+1

@PaulJurczakホストコードとカーネルコードをOpenCLに混在させることはできません。 – BlueWanderer

+1

OpenCLではホストコードとカーネルコードが別々であるため、CホストコードとC++カーネルコードを持つことができます。 SYCLではそれらが結合されます。ホストコードとカーネルコード用の単一のコードモジュールがあります。しかし、あなたはそれを使用していません。 – Dithermaster

0

GPU OpenCL 2.1コードをビルドするには、OpenCLコンパイラがC++をサポートしている必要があります。少なくともGPU側ではC++をサポートしなければなりません(自動的に、それを含むOpenCLコンパイラです)。

それ以外のホストコードには、Cコードを使用できます。

関連する問題