与AMD的编译时参数出错

时间:2013-10-15 13:46:08

标签: opencl intel amd-processor

这是关于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};

}

这样,使用intel-SDK,与将Coefficients作为内核的另一个参数传递相比,我获得了相当大的性能优势。

问题出在AMD,这不是编译。我收到以下错误:

0.2f:
Catastrophic error: cannot open source file "0.2f"

1 catastrophic error detected in the compilation of "0.2f".
Compilation terminated.

据我所知,AMD(逗号)也被视为编译时参数的分隔符,这导致错误。

任何帮助解决这个问题将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试将字符串引用到-DCOEFF="0.1f,0.2f,0.5f,0.2f,0.1f"

看起来编译器正在查找文件“0.2f”并且这是第二个元素,因此在第一个元素和逗号之后,编译器已经停止将输入解释为COEFF定义的一部分。

答案 1 :(得分:0)

在版本937.2和1268.1之间的某个时间,这个问题被引入AMD OpenCL。这是一个解决方法:

替换, -DCOEFF=0.1f,0.2f,0.5f,0.2f,0.1f-D COEFF=0.1f,0.2f,0.5f,0.2f,0.1f