私はOpenCLをよく知らないけど、C/C++ APIではOpenCLコードを文字列として提供する必要があります。しかし最近、私はArrayFireライブラリを発見しました。このライブラリは、いくつかの計算を呼び出すために文字列コードを必要としません。私はそれがどのように機能しているのだろうと思った(オープンソースだが、コードはちょっと混乱している)。GPUで純粋なC++コードを実行することは可能ですか
template <typename F>
void parallel_for(int starts, int ends, F task) //API
{ /*some OpenCL magic */ }
//...
parallel_for(0, 255, [&tab](int i){ tab[i] *= 0.7; }); //using
PS:それは次のようにOpenCLのコンパイル(例えばx86の)の任意の部分を呼び出すバックエンドのコードと並列に書き込むことが可能になり、私はあまりにも楽観的、99%のためだ知っ
https://github.com/arrayfire/arrayfire - ソースは無料で入手できます。なぜそれを読んでいないのですか? – talonmies
OpenCL 2.2は、C++のサブセットで書かれたカーネルをサポートしています。 (仮想関数なし、新規/削除、例外など) – tmlen