我的内核非常简单。它尝试查看代码是否有效,然后根据前缀扫描输出仅存储唯一代码:
__kernel void moveValid(__global int* sortCode, __global int* mark, __global int* processorOffsets, __global int* uniqueCode,__global int* numPoints, __global int* pointIndex)
{
int ig = get_global_id(0);
int m = mark[ig];
int j= processorOffsets[ig];
atomic_inc(&numPoints[j-1]);
// select
if(m == true)
{
uniqueCode[j] = sortCode[ig];
pointIndex[j] = ig;
}
barrier(CLK_GLOBAL_MEM_FENCE);
}
好像内核真的很慢。是因为if语句吗?任何人都可以就如何改进内核提供任何提示吗?也可以在这种情况下使用select吗?