编写cuda核函数时,整数的大小是多少?

18
在Cuda编程指南中,我似乎找不到这个简单问题的答案:使用nvcc编译内核时,short、int、long和long long声明的整数大小是多少?它是否依赖于我的主机架构,因此我应该使用int16_t、int32_t和int64_t,还是它总是固定大小?
1个回答

13

这取决于主机编译器。具体来说,nvcc 对这些类型的定义将与主机编译器的表示相符。

实际上,在 CUDA 支持的所有平台上,charshortint 数据类型的大小都是可预测的(分别为 8、16 和 32 位)。但是,long 的大小因平台而异。


1
你确定这是正确的吗?设备代码需要转换为ptx命令。如果此过程与主机架构有关,那将会很奇怪。我查看了CUDA文档,但没有找到任何相关信息。 - nsanders
4
设备的数据类型必须与主机的数据类型相匹配,否则就无法预测需要将多少数据复制到主机。 - Edric
谢谢。这正是我所需要的。这确实有道理,因为如果我要负责在我的主机代码和内核代码之间匹配类型,那将是一场噩梦。 - John Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接