2016-07-07 6 views
4

openCL C++ APIがありますが、カーネルのコンパイルに問題があります。カーネルはC言語で記述する必要がありますか?そして、C++で書かれたホストコードだけです。あるいは、私が見つけられないC++でカーネルを書くための方法がありますか?具体的には、pyopenclを使って自分のカーネルをコンパイルしようとしていますが、Cコードとしてコンパイルしているので失敗しているようです。C言語ではなくOpenCLカーネルを書くことはできますか?

+0

OpenCL CはC99のサブセットです。 C++ 14のサブセットであるOpenCL C++もありますが、まだどのベンダーでも実装されていません。ホストコードはC、C++、Pythonなどで記述できます。コードはどこにありますか? – doqtor

+0

私は答えとしてそれを受け入れるだろう。 OpenCL C++が指定されましたが、まだどのプラットフォームでも実装されていませんか?そして、私はOpenCL Cで自分のカーネルを書かなければなりませんか? –

+0

はい。今のところCです。 – mfa

答えて

9

OpenCL CC99のサブセットです。

OpenCL C++(OpenCLの2.1とOpenCLの2.2仕様)C++14のサブセットであるが、それはまだベンダーによって実装いない(部分的にインテルによって実装のOpenCL 2.1なく、C++カーネル)があります。

ホストコードを使用すると、wikipedia上のOpenCLについて読むことができ要するに等のC、C++、パイソン、中

を書き込むことができます。各OpenCLバージョンについての説明があります。 pyopenclでは、OpenCL1.2を使用することができます(私が知っている限り、OpenCL2.0のサポートはまだありません)。 OpenCLについての詳細は、Khronosのウェブサイトをご覧ください。

+0

AMDの実装では、2012年から[拡張](http://developer.amd.com/community/blog/2012/05/21/opencl-1-2-and-c- static-kernel-language-now-available /)を参照してください。 –

+0

@doqtor、現在の状況であなたの答えを更新できますか? – einpoklum

0

参考として、Boost.Computeもあります。それはpyopenclでは役に立ちませんが、pyopenclが行う多くの問題に対処し、OpenCLカーネルをC++で書くことを容易にするメタプログラミングの魔法をいくつか持っています。

This SO question(Boost.Compute FAQを参照してください)には、OpenCLが開発者にもたらす関連する設計制約の素敵な議論も含まれています。

関連する問題