在我的内核中我定义了这个。
#define ACTIVATION_FUNCTION(X) (1.7159f*tanh(2.0f/3.0f*X))
我想在clBuildProgram调用中定义它,这样我就可以在运行时更改内核。我怎么能这样做?
答案 0 :(得分:1)
您可以将-D
参数用于OpenCL编译器,方法是将其传递给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))
然后,您可以在运行时直接从程序中根据需要进行更改。
注意你也可以打开内核文件并直接将define写入其中,作为替代解决方案,但这可能是最干净的方法。请小心换行,我不确定它们的处理情况。
参考。 this documentation page on clBuildProgram,“预处理器选项”部分。