我想申請在這片我的內核的代碼減少(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