[英]char to int conversion in host device with CUDA
在CUDA程序的宿主函數中,從單個字符轉換為整數時遇到了麻煩。 后行-
token[j] = token[j] * 10 + (buf[i] - '0' );
我使用cuda-gdb檢查token [j]的值,並且我總是得到似乎沒有模式的不同數字。 我還嘗試了簡單的強制轉換,而不是乘以十(我在另一個線程中看到),而不是減去“ 0”,而且我似乎總是得到不同的結果。 任何幫助,將不勝感激。 這是我第一次在堆棧溢出時發布消息,因此如果格式很糟糕,請給我休息一下。
-一位掙扎的編碼員
__global__ void rread(unsigned int *table, char *buf, int *threadbytes, unsigned int *token) {
int i = 0;
int j = 0;
*token = NULL;
int tid = threadIdx.x;
unsigned int key;
char delim = ' ';
for(i = tid * *threadbytes; i <(tid * *threadbytes) + *threadbytes ; i++)
{
if (buf[i] != delim) { //check if its not a delim
token[j] = token[j] * 10 + (buf[i] - '0' );
寫入令牌存在競爭條件。
如果要每個塊有一個本地數組,則可以使用共享內存。 如果要每個線程一個本地數組,則需要使用本地每個線程內存,並在堆棧上聲明該數組。 在第一種情況下,您還必須處理塊內的並發。 在后者中,您不必這樣做,盡管您可能會浪費更多的內存(並減少協作)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.