簡體   English   中英

OpenCL內核匯總

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM