「無符號整數與零的比較毫無意義」關於做好警告:CUDA
if(blockIdx.y-threadIdx.y >=0){
//some operation }
我得到了上述警告。誰能告訴我爲什麼CUDA編譯器會將此作爲警告提示。我只是試圖只允許符合上述條件的線程進入if語句。 如果我忽略它,會有什麼後果嗎? 請注意,我推出多個塊爲:
dim3 nblocks (7,7)
dim3 nthreadsperblock (256,256)
kernel<<<nblocks,nthreadsperblock>>>(...)
警告告訴你一切。您可以減去兩個**無符號**值,因此結果總是至少爲0 – mpiatek
@mpiatek for blockidx.y = 1,threadix.y> 1的線程會導致負值?我試圖過濾掉 – darkfall94
@ darkfall94:沒有。無符號表達式的結果是無符號類型,因此必然是非負的。無符號類型在整型mod TYPE_MAX + 1上表現爲模運算。 –