Это относится к аргументу времени компиляции в openCL. У меня есть массив констант фиксированного размера, и я передаю его в качестве компиляции аргумента следующим образом:Ошибка в аргументах времени компиляции с AMD
-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, я получаю значительное преимущество в производительности, по сравнению с передачей коэффициентов в качестве другого аргумента ядру.
Проблема в AMD, это не скомпилировано. Я получаю следующее сообщение об ошибке:
0.2f:
Catastrophic error: cannot open source file "0.2f"
1 catastrophic error detected in the compilation of "0.2f".
Compilation terminated.
Я понимаю, что в AMD (запятая) также принимается в качестве разделительного символа для аргументов во время компиляции, и это вызывает ошибку.
Любая помощь для решения этой проблемы будет оценена по достоинству. Заранее спасибо.
Это работает для меня, используя как Intel и AMD OpenCL. Моя версия AMD opencl - «OpenCL 1.2 AMD-APP (937.2)». Какая версия создает эту ошибку? – ScottD
Я использую OpenCL 1.2 AMD-APP (1311.2) – Neeba
Я переключился на новейшую AMD Windows OpenCL, которую я смог найти (OpenCL 1.2 AMD-APP (1268.1)), и теперь у меня возникает точно такая же проблема, как и вы. Все, что я знаю, это использовать более старый OpenCL или несколько уродливую работу, такую как компиляция с '-DCOEFF0 = 0,1f -DCOEFF1 = 0.2f -DCOEFF2 = 0.5f -DCOEFF3 = 0.2f -DCOEFF4 = 0,1f' и используя код C: 'float chnWeight [] = {COEFF0, COEFF1, COEFF2, COEFF3, COEFF4};' – ScottD