在OpenCL的内核中传递输出

时间:2018-07-31 10:26:54

标签: kernel opencl

首先我可以在内核内部初始化一个数组,例如“ 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";

1 个答案:

答案 0 :(得分:1)

您在此行上还有一个括号:

"c = inputB[id] + output[id]);\n"\

如果您的OpenCL程序无法编译,则可以用clGetProgramBuildInfo调用CL_PROGRAM_BUILD_LOG来获取易于理解的错误消息。