64bit atomicAdd in CUDA
64bit atomicAdd in CUDA
我在CUDA 7下使用atomicAdd
有问题。atomicAdd
定义为"int
","unsigned int
"answers"unsigned long long int
",说明它使用"32位或64位值"。
uint32_t
和uint64_t
。然而,gcc是这样定义的:
#if __WORDSIZE == 64
typedef unsigned long int uint64_t;
#else
__extension__
typedef unsigned long long int uint64_t;
#endif
所以当我把uint64_t
传递给atomicAdd
时,它会报错,因为它没有为"unsigned long int
"定义。
是保存假设uint64_t == long long int
CUDA编译如编程指南中所述?
回答这个问题,以备将来参考:
有两个选项:要么使用typedef定义64位cuda类型,如:
typedef long long int int64_cu
typedef unsigned long long int uint64_cu
并且可能通过(boost-) static_asserts
来保护它们的大小相同
或者像@Anastasiya Asadullayeva建议的那样,在调用中使用reinterpret_cast,这也可以由static_assert更好地保护。
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- 编译时未启用intel oneApi CUDA支持
- 在cuda线程之间共享大量常量数据
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- C++ MFC Libraries in Travis CI
- CUDA内核和数学函数的显式命名空间
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- CUDA:统一内存和指针地址的更改
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- cuda 10.2 in Qt 5.14 ubuntu 18.04
- <<< >>> cuda in vscode
- Performance in CUDA
- float(0.0) vs 0.0f in CUDA
- 64bit atomicAdd in CUDA
- count3's in cuda is very slow
- thrust::device_vector in CUDA