私のカーネルでは、これを定義しています。
#define ACTIVATION_FUNCTION(X) (1.7159f*tanh(2.0f/3.0f*X))
実行時にカーネルを変更できるように、clBuildProgram呼び出しで定義したいと思います。これどうやってするの?
私のカーネルでは、これを定義しています。
#define ACTIVATION_FUNCTION(X) (1.7159f*tanh(2.0f/3.0f*X))
実行時にカーネルを変更できるように、clBuildProgram呼び出しで定義したいと思います。これどうやってするの?
関数のパラメーターで-D
引数を渡すことにより、引数を OpenCL コンパイラーに使用できます。を渡すことは、カーネル ファイルの先頭に追加することと同じです。同様に、渡すことは追加することと同じです(もちろん、 anyとの場合)。options
clBuildProgram
-D x=y
#define x y
-D x
#define x
x
y
あなたの場合、おそらく次のようなものを渡したいと思うでしょう:
-D ACTIVATION_FUNCTION(X)=(1.7159f*tanh(2.0f/3.0f*X))
実行時に、プログラムから直接、必要に応じて変更できます。
別の解決策として、カーネル ファイルを開いて直接定義を書き込むこともできますが、これがおそらく最もクリーンな方法です。改行に注意してください。改行がどれだけうまく処理されているかわかりません。
参考文献 clBuildProgram のこのドキュメント ページ、「プリプロセッサ オプション」セクション。