在我的内核中,我已经定义了这个。
#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 编译器的options
参数clBuildProgram
。传递-D x=y
, 相当于#define x y
在内核文件的顶部添加。类似地,传递-D x
等同于添加#define x
(当然,对于任何x
and y
)。
在你的情况下,你可能想要传递这样的东西:
-D ACTIVATION_FUNCTION(X)=(1.7159f*tanh(2.0f/3.0f*X))
然后,您可以在运行时直接从您的程序中根据需要进行更改。
请注意,您也可以打开内核文件并将定义直接写入其中,作为替代解决方案,但这可能是最干净的方式。请注意换行符,我不确定它们的处理情况如何。
参考。clBuildProgram 上的此文档页面,“预处理器选项”部分。