[英]OpenCL Kernel summatory
我想知道這是否有可能...我想檢查java內核內部,數組是否包含數字和字符,如果是,請保存它們在輸出數組中出現的次數。
private static String programSource =
"__kernel void sampleKernel(__global const char *a, __global int *c){" +
" c[0]=0; c[1]=0;"+
" int gid = get_global_id(0);" +
" if((a[gid] > 64 && a[gid] < 91) || (a[gid] > 96 && a[gid] < 123)) c[0]+=1; "+
" else if(a[gid] > 47 && a[gid] < 58) c[1]+=1;" +
"}";
這是我的代碼...但是在輸出數組中,它始終是數字1 ...這是什么問題? 該問題的解決方案是什么?
謝謝!
所有工作項同時修改c [0]和c [1],導致輸出錯誤。
一種解決方案是使用atomic_inc 。 atomic_inc(c)代替c [0] + = 1,atomic_inc(c + 1)代替c [1] + = 1。
接下來,由於只有兩個輸出,因此會有很多沖突,並且這可能會很慢。 類似減少的算法將是更可取的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.