2010-10-14 50 views
11

在Cuda编程指南中,我似乎找不到这个简单问题的答案:编译内核时使用nvcc,什么大小的整数由short,int,long和漫长的?它取决于我的主机架构,所以我应该使用int16_t,int32_t和int64_t,还是始终是固定大小?编程cuda内核时整数大小

回答

10

它取决于主机编译器。具体而言,nvcc对这些类型的定义将与主机编译器的表示形式一致。

在实践中,charshort,和int数据类型具有CUDA支撑件(8,16和32位分别地)所有平台上的预测的大小。然而,long的大小因平台而异。

+1

您确定这是对的吗?设备代码需要转换为ptx命令。如果这个过程是主机架构特定的,那将会很奇怪。我查看了CUDA文档,但无法找到任何内容。 – nsanders 2010-10-15 01:43:34

+2

是的,设备数据类型必须与主机类型匹配,否则将无法预测要向主机执行多少memcpy操作。 – Edric 2010-10-15 07:20:04

+0

谢谢。这正是我需要的。它确实有道理,因为如果我负责匹配我的主机代码和我的内核代码之间的类型,那将是一场噩梦。 – 2010-10-15 16:26:03