首先我可以在内核内部初始化一个数组,例如“ float output [3] = {0}”
第二,我想使用我从内核的一部分得到的结果,并在下一部分(在同一内核中)使用它。例如,我写给定的内核,所以我想使用 output的值在下一部分中[id] 和 output1 [id] 以获得 output2 [id] 和 output3 [id] ,但是给我“程序构建失败”
假设InputA [3] = {1、2、3}
InputB [3] = {1、2、3}
InputC [3] = {1、2、3}
const char *ProgramSource =
"__kernel void add(__global float *inputA, __global float *inputB, __global
float *inputC, __global float *output2, __global float *output3)\n"\
"{\n"\
" size_t id = get_global_id(0);\n"\
"float a = 0.0f;\n"\
"float b = 0.0f;\n"\
"float output[3] = {0};\n"\
"float output1 [3] = {0};\n"\
"a = inputB[id] + inputC[id];\n"\
"b = inputA[id] + inputC[id];\n"\
" output[id] = a;\n"\
" output1[id] = b;\n"\
"float c = 0.0f;\n"\
"float d = 0.0f;\n"\
"c = inputB[id] + output[id]);\n"\
"d = inputA[id] + output1[id];\n"\
" output2[id] = c;\n"\
" output3[id] = d;\n"\
"}\n";
答案 0 :(得分:1)
您在此行上还有一个括号:
"c = inputB[id] + output[id]);\n"\
如果您的OpenCL程序无法编译,则可以用clGetProgramBuildInfo
调用CL_PROGRAM_BUILD_LOG
来获取易于理解的错误消息。