cuda里的求余运算
cuda里的求余运算结构好奇怪呀:
__device__ unsigned int dsync=0;
unsigned int sync=0;
__global__ void kernel()
{
int tid=threadIdx.x;
int bid=blockIdx.x;
if(bid%2==0 && tid==0)
{
atomicInc(&dsync,33);
}
}
由于一直没找到程序的错误,所以写了一个简单的测试程序,测试原来程序中使用院子函数的情况。我的bid范围为0~31,按理说经过上面的kernel运算后dsync应该是16才对呀,但是输出的结果却是dsync=26,但是我把if(bid%2==0 && tid==0)改为if(bid<16 && tid==0)结构就是16,为什么求余运算都不对呀?