2

私はSnowLeopardでOpenCLコードを開発しており、OpenCLのジャストインタイムコンパイルがClang/LLVMによって行われることを理解しています。Cプリプロセッサは使用されていますか?コンパイラで前処理定義を設定する方法はありますか?どのような定義がありますか?

コードがCPU用にコンパイルされているのかGPU用にコンパイルされているのかを認識して、たとえばデバッグにprintfステートメントを使用できるようにします。

4

2 に答える 2

5

APIはclBuildProgramコンパイラー引数(const char * optionsパラメーター)を取ります。

-D MYMACRO理解されているので、です-D MYMACRO=value

事前定義されたマクロについては、OpenCL仕様で完全なリストを参照してください(セクション6.9)。網羅的ではないリスト:

  • __FILE__
  • __LINE__
  • __OPENCL_VERSION__
于 2009-10-09T20:19:12.090 に答える
2

OpenCLの「プリプロセッサ」を使用して定義を定義することもできます(Cのように)。

#define dot3(x1, y1, z1, x2, y2, z2) ((x1)*(x2) + (y1)*(y2) + (z1)*(z2))

(角かっこに注意してください。変数に任意の式を挿入でき、式が正しく評価されるため、角かっこは重要です)

これは、アプリケーションの速度を向上させるのに役立ちます。

于 2010-07-10T23:22:29.163 に答える