OpenCL 2.0 - Error: function "work_group_reduce_add" declared implicitly
OpenCL 2.0 - Error: function "work_group_reduce_add" declared implicitly
我在使用以下内核代码执行 OpenCL 代码(使用 AMD-APP SDK v3.0 编译)时遇到问题:
__kernel void sumGPU ( __global const int *input,
__global int *sum )
{
uint local_id = get_local_id(0);
uint group_size = get_local_size(0);
uint global_id = get_global_id(0);
uint res = input[global_id];
// workgroup reduction (introduced in OpenCL 2.0)
res = work_group_reduce_add(res);
// atomic reduce in global memory
if (local_id == 0)
atomic_add(sum, res);
}
这用于计算所有数组元素的总和。
我收到以下错误:
CL Compilation failed:
"/tmp/OCL32344T1.cl", line 11: error: function "work_group_reduce_add"
declared implicitly
res = work_group_reduce_add(res);
^
1 error detected in the compilation of "/tmp/OCL32344T1.cl".
Frontend phase failed compilation.
Aborted
似乎缺少 work_group_reduce_add 的原型,但我无法在 OpenCL 2.0 (CL/cl.h) 中找到它。
有谁能看出哪里出了问题吗?谢谢
为了在您的内核中使用 OpenCL 2.0 功能,您需要通过 clBuildProgram
.
将 -cl-std=CL2.0
标志传递给编译器
我在使用以下内核代码执行 OpenCL 代码(使用 AMD-APP SDK v3.0 编译)时遇到问题:
__kernel void sumGPU ( __global const int *input,
__global int *sum )
{
uint local_id = get_local_id(0);
uint group_size = get_local_size(0);
uint global_id = get_global_id(0);
uint res = input[global_id];
// workgroup reduction (introduced in OpenCL 2.0)
res = work_group_reduce_add(res);
// atomic reduce in global memory
if (local_id == 0)
atomic_add(sum, res);
}
这用于计算所有数组元素的总和。
我收到以下错误:
CL Compilation failed:
"/tmp/OCL32344T1.cl", line 11: error: function "work_group_reduce_add"
declared implicitly
res = work_group_reduce_add(res);
^
1 error detected in the compilation of "/tmp/OCL32344T1.cl".
Frontend phase failed compilation.
Aborted
似乎缺少 work_group_reduce_add 的原型,但我无法在 OpenCL 2.0 (CL/cl.h) 中找到它。
有谁能看出哪里出了问题吗?谢谢
为了在您的内核中使用 OpenCL 2.0 功能,您需要通过 clBuildProgram
.
-cl-std=CL2.0
标志传递给编译器