簡體   English   中英

使用CUDA在主機設備中將char轉換為int

[英]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.

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