如果多个线程同时写入一个内存位置。,会有竞争条件,对吧??在我的情况下,同样的事情正在发生..
考虑来自“reduce.cl”的模块
int i = get_global_id(0);
int n,j;
n = keyMobj[i]; // this n is the key..It can be either 0 or 1.
for(j=0; j<2; j++)
sumMobj[n*2+j] += dataMobj[i].dattr[j]; //summing operation.
在这里,内存位置
sumMobj===> [...0..., ....1...] 被 4 个线程同时访问 & sumMobj===> [....3..., . ...4 ...]同时访问6个线程..
有没有办法让它并行,比如使用锁定或信号量?因为这个求和是我算法中非常重要的一部分......