警告:"pointless comparison of unsigned integer with zero"cuda

Warning:"pointless comparison of unsigned integer with zero" cuda

正在做

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

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

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

您应该将变量转换为 signed ints 或将表达式更改为 if(blockIdx.y>=threadIdx.y){,这在数学上与 if(blockIdx.y-threadIdx.y >=0){.

相同

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