__kernel void cl_test(__global int* Number)
{
int id = get_global_id(0);
if (id%5==0)
{
Number[0]++;
}
if (id%10==0)
{
Number[1]++;
}
}
ご覧のとおり、これは非常に単純な OpenCL カーネル テスト コードです。目的は、範囲内で 5 と 10 で割り切れる数を収集することです。
ここに問題があります。すべての作業項目の計算は純粋な並列計算ではないため、異なる項目の Number[0] または [1] が関連しています。Number[0] または Number[1] を読み取っても正しい結果が得られません。
C++ の「グローバル変数」のような解決策はありますか?
ありがとう!