这是关于 openCL 中的编译时参数。我有一个固定大小的常量数组,我将它作为编译时参数传递,如下所示:
-DCOEFF=0.1f,0.2f,0.5f,0.2f,0.1f
在内核中,我将其解读为,
__kernel void Smoothing(__global const float *in, __global float *out)
{
float chnWeight[] = {COEFF};
}
这样,使用英特尔 SDK,与将系数作为另一个参数传递给内核相比,我获得了相当多的性能优势。
问题出在 AMD 中,它没有被编译。我收到以下错误:
0.2f:
Catastrophic error: cannot open source file "0.2f"
1 catastrophic error detected in the compilation of "0.2f".
Compilation terminated.
我知道在 AMD 中(逗号)也被用作编译时参数的分隔符,这导致了错误。
任何解决此问题的帮助将不胜感激。提前致谢。