4

このドキュメントページ6(AMDによってリリースされた) (およびこのトピック?)によると、OpenCLでテンプレートを使用するいくつかの方法があります。ただし、最初のドキュメントでは、存在しないように見えるclBuildProgramWithSourceでいくつかのオプションを使用することでこれを実行できると報告されています...とにかく、前のオプションではなくclBuildProgramであると仮定して、いわゆる「-x」オプションを使用しようとしました「clc++」を使用しますが、それでも認識されません:

warning: ignoring build option: "-x"

実際、Khronosに由来するドキュメントによると、このオプションは利用できません。このドキュメントはどういうわけか非推奨になるかもしれませんが、OpenCLコード内でテンプレートを使用する他の方法はありますか?

4

2 に答える 2

6

この-xオプションは、OpenCL1.2および静的C++言語拡張をサポートする最新のAMDOpenCLランタイムでのみ使用できます。これはすべてAMDイニシアチブであり、最終的にはベンダーの拡張機能であるため、公式のKhronosドキュメントにはそれについての情報はありません。

私はあなたが正しいランタイムを持っていると仮定しているので、あなたのカーネルはこれらのオプションで構築される必要があります:

-x clc++

これを使用してクラスでカーネルを構築できる場合は、テンプレートを使用できるはずです。

これが機能しない場合は、ランタイムのインストールが失敗していることを意味します。たとえば、間違ったコンパイラを使用しているなど、適切なランタイムがないことを意味します。もしそうなら、あなたのプラットフォーム情報を教えてください。

私はしばらく前に静的C++拡張機能をいじりましたが、それが機能することを証明でき-x clc++ます。


また、この拡張機能を使用すると、コードが移植可能でなくなり、AMD準拠のデバイスにロックインされることに注意してください。他のベンダーがまったく同じ拡張機能を導入する可能性は低いためです(存在する場合)。

また、Khronosのドキュメントに関するメモ-googleによって返されるものは、通常、イライラする可能性のあるOpenCL1.0バージョンです。OpenCLを頻繁に使用する場合は、1.1または1.2標準をダウンロードし、関連するHTMLドキュメントのローカルコピーを入手してすばやくアクセスすることをお勧めします。助けになる。

于 2013-02-21T03:11:24.743 に答える