문제

This is regarding compile time argument in openCL. I have an array of constants of fixed size, and I am passing it as compile-time argument, as follows:

 -DCOEFF=0.1f,0.2f,0.5f,0.2f,0.1f

And in the Kernel, I am reading it as,

__kernel void Smoothing(__global const float *in, __global float *out)
{
    float chnWeight[] = {COEFF};

}

This way, using intel-SDK, I am getting a considerable amount of performance benefit, compared to passing the Coefficients as another argument to the kernel.

The problem is in AMD, this is not getting compiled. I am getting the following error :

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

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

I understand that in AMD (comma) is also taken as a separating character for the compile time arguments, and this is causing the error.

Any help to solve this problem will be appreciated. Thanks in advance.

도움이 되었습니까?

해결책

This problem was introduced into AMD OpenCL sometime between versions 937.2 and 1268.1. Here is a work-around:

Replace, -DCOEFF=0.1f,0.2f,0.5f,0.2f,0.1f with -D COEFF=0.1f,0.2f,0.5f,0.2f,0.1f

다른 팁

Try quoting the string to -DCOEFF="0.1f,0.2f,0.5f,0.2f,0.1f"

It looks that the compiler is looking for the file "0.2f" and that is the second element, so after the first element and comma the compiler has already stopped interpreting the input as part of the COEFF define.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top