在做
if(blockIdx.y-threadIdx.y >=0){
//some operation }
我得到了上述警告。任何人都可以告诉我为什么CUDA编译器将此作为警告抛出。我只是试图只允许符合上述条件的那些线程进入if语句。 如果我忽略它,会有任何后果吗? 请注意,我正在启动多个块:
dim3 nblocks (7,7)
dim3 nthreadsperblock (256,256)
kernel<<<nblocks,nthreadsperblock>>>(...)
答案 0 :(得分:1)
您应该将变量转换为signed int
s或将表达式更改为与if(blockIdx.y>=threadIdx.y){
数学相同的if(blockIdx.y-threadIdx.y >=0){
。
很快,您可以将所有(a - b *op* 0)
替换为(a *op* b)
,其中*op*
是比较运营商之一。