用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' );
写入令牌时存在竞争条件。
如果你想每个块有一个本地数组,你可以使用共享内存。如果希望每个线程都有一个本地数组,则需要使用本地的每线程内存,并在堆栈上声明该数组。在第一种情况下,您还必须处理块内的并发性。对于后者,您不必这样做,尽管您可能会潜在地浪费更多的内存(并减少协作)。
相关文章:
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- C ++如何在使用"tolower"时将char转换为int
- C++ (U256)*(H256 const*)(char*[] + int) 将重写转换为 Java
- char*(int)在C 中是什么意思
- 是否可以<char> <int> 在 C++ 中将 std::list 转换为 std::list
- Qt5 对'QApplication::QApplication(int&, char**, int)'的未定义引用
- 没有运算符"="匹配这些操作数操作数操作数类型为 std::basic_ostream<char、std::char_traits<char>> = int
- 编程语言中的 char-int 等价性
- C++。为什么 std::cout << char + int 打印 int 值?
- 关于运行良好的堆栈RPN程序上的char/int
- 在 C# 中从 char int 直接转换为 char
- 从文本文件中提取特定值(char & int)并插入到多个变量中C++
- 编译错误 - 数组下标'char[int]'的类型无效
- 从“char*”到“char”[-fpermissive]的转换无效,数组下标的类型“char[int]”无效
- 如何在文件中读取,其中包含char, int和空白到链表
- 如何在我的程序中查找"const char* + int"表达式
- While loop and cin char, int
- 如何将输入作为字符串,并将每个字符标识为char, int或float
- 如何正确使用char[int]