如何使用clBuildProgram for OpenCL添加宏

如何使用clBuildProgram for OpenCL添加宏,opencl,Opencl,在我的内核中,我定义了这个 #define ACTIVATION_FUNCTION(X) (1.7159f*tanh(2.0f/3.0f*X)) 我想在clBuildProgram调用中定义它,这样我可以在运行时更改内核。如何执行此操作?您可以将-D参数传递到clBuildProgram函数的options参数中,从而将其用于OpenCL编译器。传递-dx=y,相当于在内核文件的顶部添加#define xy。类似地,传递-dx等同于添加#define x(当然,对于任何x和y) 在您的情况下,

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

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

我想在clBuildProgram调用中定义它,这样我可以在运行时更改内核。如何执行此操作?

您可以将
-D
参数传递到
clBuildProgram
函数的
options
参数中,从而将其用于OpenCL编译器。传递
-dx=y
,相当于在内核文件的顶部添加
#define xy
。类似地,传递
-dx
等同于添加
#define x
(当然,对于任何
x
y

在您的情况下,您可能希望传递如下内容:

-D ACTIVATION_FUNCTION(X)=(1.7159f*tanh(2.0f/3.0f*X))
然后,您可以在运行时直接从程序中根据需要进行更改

注意,您也可以打开内核文件并将define直接写入其中,作为替代解决方案,但这可能是最干净的方法。只是要小心新线,我不知道他们处理得有多好



参考,“预处理器选项”部分。

您可以将
-D
参数传递到
clBuildProgram
函数的
Options
参数中,从而将其用于OpenCL编译器。传递
-dx=y
,相当于在内核文件的顶部添加
#define xy
。类似地,传递
-dx
等同于添加
#define x
(当然,对于任何
x
y

在您的情况下,您可能希望传递如下内容:

-D ACTIVATION_FUNCTION(X)=(1.7159f*tanh(2.0f/3.0f*X))
然后,您可以在运行时直接从程序中根据需要进行更改

注意,您也可以打开内核文件并将define直接写入其中,作为替代解决方案,但这可能是最干净的方法。只是要小心新线,我不知道他们处理得有多好



参考,“预处理器选项”部分。

谢谢,doh,我试过了-A NAME=(X)(…X…)。虽然我在正确的轨道上。谢谢。谢谢,doh,我试过了-一个名字=(X)(…X…)。虽然我在正确的轨道上。谢谢