我一直有麻煩從單個字符轉換爲整數,而在我的CUDA程序的主機功能。行後 -炭爲int在主機裝置與轉換CUDA
token[j] = token[j] * 10 + (buf[i] - '0');
我使用CUDA-GDB檢查令牌[J]值,我總是不似乎有一個模式不同的數字。我也嘗試過簡單的轉換,而不是乘以10(我在另一個線程中看到),不減去'0',而且我似乎總是得到不同的結果。任何幫助,將不勝感激。這是我第一次發佈堆棧溢出,如果我的格式很糟糕,請給我一個休息時間。
-A傢伙掙扎編碼器
__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');
BUF [I] - 「0」只會直到9,那麼你獲得工作的垃圾爲數字字符。我也看不出那是什麼* 10 –
的字符在這種情況下,BUF [I],將永遠是一個單一的數字位數,這意味着0-9。 * 10並不重要,即使我擺脫了這一點,我仍然得到不同的結果。 – DanGordon
如果我改變的代碼: 令牌[J] =(BUF [Ⅰ] - '0'); 我仍然有同樣的問題。即使在gdb,當我輸入: p BUF [I] - 「0」 我得到正確的數量,但一些與 – DanGordon