Используйте дополнительную проверку ошибок в вашей сборке, например,
// Build the program
ret = clBuildProgram(program, 1, &deviceId, NULL, NULL, NULL); RC_TEST2(ret, "clBuildProgram");
if(ret != CL_SUCCESS){
size_t len = 0;
clGetProgramBuildInfo(program, deviceId, CL_PROGRAM_BUILD_LOG, 0, NULL, &len);
char *buffer = calloc(len, sizeof(char));
ret = clGetProgramBuildInfo(program, deviceId, CL_PROGRAM_BUILD_LOG, len, buffer, NULL);
fprintf(stderr, "%s", buffer);
exit(1);
}
Но в вашем случае ясно, что путь к файлу cl неправильный. Таким образом, компилятор не может собрать ядро. Что-то не так с относительным путем. Попробуйте использовать абсолютный путь, если вы не можете это исправить.