簡體   English   中英

CUDA,設備,表達式必須具有整數或枚舉類型

[英]Cuda, device, expression must have integral or enum type

if語句中的兩個targets分配引發以下錯誤。

error: expression must have integral or enum type

操作中的所有變量都是或返回如此聲明的浮點值。 但是,它不喜歡轉換為整數。 為什么是這樣? 不同種類的浮點數或整數之間有區別嗎?

__global__
void generateTargets(int* targets, int targetAmount, float radius, float angleStep){
   float i = blockIdx.x;
   if(i < targetAmount){ // Ensure it stays in range
       // Access the 1d array representation of the 2d array [MAX_TARGETS][2]
       targets[i + MAX_TARGETS*0] = __float2int_rd(radius*__cosf(i*angleStep)); // X value
       targets[i + MAX_TARGETS*1] = __float2int_rd(radius*__sinf(i*angleStep)); // Y value
   }
}

targets[i + MAX_TARGETS*0]targets[i + MAX_TARGETS*1]您使用的是i ,它是float 這使得用於計算數組索引的整個表達式都是float 您不能執行此操作,因為數組索引必須是整數類型(沒有元素4.5)。

如果你想保持i一個float你需要轉換/它轉換成一個'整型或澆鑄/表達式的結果轉換為整數類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM