我想将以下内核代码并行化,在下面的代码中,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中的位置存储在另一个数组中,是否有可能删除d在内核中的“无值”位置。
我想使以下内核代码并行,在下面的代码中,a的大小为n,b和c为8 * n,而d的大小小于n(例如:3 * n / 4)j = 0; for(i = 0; i
基本上,这是基于谓词的并行数组压缩。
看看Parallel Prefix Sum (Scan) with CUDA或推力http://docs.nvidia.com/cuda/thrust/index.html