我想申请在这片我的内核的代码减少(1个维数据):OpenCL的浮子总和减少
__local float sum = 0;
int i;
for(i = 0; i < length; i++)
sum += //some operation depending on i here;
代替具有正好1个线程执行此操作的,我想有n个线程(n =长度),最后有1个线程作总和。
在伪代码,我想能写这样的事:
int i = get_global_id(0);
__local float sum = 0;
sum += //some operation depending on i here;
barrier(CLK_LOCAL_MEM_FENCE);
if(i == 0)
res = sum;
有没有办法?
我总有一个竞赛条件。
这就是所谓的并行减少,查找它。它不像你的片段那么容易,但也不是很难。只需要更多的工作。 – Thomas