0
我嘗試使用編程OpenCL的一個例子直方圖的工具。開始時,我只是想以原子的方式增加每個垃圾桶。我想出了以下內核代碼:OpenCL的原子能無能爲力
__kernel void Histogram(
__global const int* input,
__global int* histogram,
int numElements) {
// get index into global data array
int iGID = get_global_id(0);
// bound check, equivalent to the limit on a 'for' loop
if (iGID >= numElements) {
return;
}
if(iGID < 100) {
// initialize histogram
histogram[iGID] = 0;
}
barrier(CLK_GLOBAL_MEM_FENCE);
int bin = input[iGID];
atomic_inc(&histogram[bin]);
}
但是在每個bin中輸出直方圖都是零。這是爲什麼?而且,如果在最後一行放置一個printf(「」),真正奇怪的事情會發生。突然它起作用了。我完全失去了,有人知道爲什麼會發生這種情況?
P.S. 我啓用了所有擴展