次のカーネル コードを並列にしたいと考えました。以下のコードでは、a のサイズは n、b および c は 8*n であり、d のサイズは n より小さい値です (例: 3*n/4)。
j=0;
for(i=0;i<n;i++)
{
if (a[b[i]]!=a[c[i]])
{
d[j]=b[i];
j++;
}
}
a と d の要素の数が同じではないため、i=get_global_id(0) を与えるという問題に直面しています。犯す…!では、どうすれば平行にできますか..?そうでない場合、値が d に配置されている位置を別の配列に格納すると、カーネル内の d の「値のない」位置を削除できますか..?