警告:“毫无意义的无符号整数与零的比较”cuda

时间:2017-02-26 23:29:29

标签: c++ cuda warnings unsigned-integer

在做

if(blockIdx.y-threadIdx.y >=0){
//some operation }

我得到了上述警告。任何人都可以告诉我为什么CUDA编译器将此作为警告抛出。我只是试图只允许符合上述条件的那些线程进入if语句。 如果我忽略它,会有任何后果吗? 请注意,我正在启动多个块:

dim3 nblocks (7,7)
dim3 nthreadsperblock (256,256)
kernel<<<nblocks,nthreadsperblock>>>(...)

1 个答案:

答案 0 :(得分:1)

您应该将变量转换为signed int s或将表达式更改为与if(blockIdx.y>=threadIdx.y){数学相同的if(blockIdx.y-threadIdx.y >=0){

很快,您可以将所有(a - b *op* 0)替换为(a *op* b),其中*op*是比较运营商之一。