1

在我的内核中,我已经定义了这个。

#define ACTIVATION_FUNCTION(X) (1.7159f*tanh(2.0f/3.0f*X))

我想在 clBuildProgram 调用中定义它,这样我就可以在运行时更改内核。我怎样才能做到这一点?

4

1 回答 1

1

您可以通过在函数-D的参数中传递参数来使用 OpenCL 编译器的options参数clBuildProgram。传递-D x=y, 相当于#define x y在内核文件的顶部添加。类似地,传递-D x等同于添加#define x(当然,对于任何xand y)。

在你的情况下,你可能想要传递这样的东西:

-D ACTIVATION_FUNCTION(X)=(1.7159f*tanh(2.0f/3.0f*X))

然后,您可以在运行时直接从您的程序中根据需要进行更改。

请注意,您也可以打开内核文件并将定义直接写入其中,作为替代解决方案,但这可能是最干净的方式。请注意换行符,我不确定它们的处理情况如何。


参考。clBuildProgram 上的此文档页面,“预处理器选项”部分。

于 2013-03-11T07:45:07.757 回答