我有一個問題在的的OpenCL代碼(與AMD-APP SDK 3.0版編譯)用下面的內核代碼的執行:的OpenCL 2.0 - 錯誤:函數「work_group_reduce_add」隱式聲明
__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)。
任何人都可以看到有什麼問題嗎?謝謝
不知道爲什麼這是獲得downvotes,沒有辦法神奇地知道你需要做一些特殊的事情來獲得2.0的工作像接受的答案告訴你。剛剛有同樣的問題,謝謝你提出這個問題,因爲它最終爲我節省了很多時間。 – pmos