Cuda 在内联PTX中设置32位地址大小

Cuda 在内联PTX中设置32位地址大小,cuda,inline-assembly,nvcc,ptxas,Cuda,Inline Assembly,Nvcc,Ptxas,我正在将作为单独文件编写的PTX转换为内联PTX。在单独的PTX文件中,我定义了ISA和目标,如下所示: .version 1.2 .target sm_13 .version 3.0 .target sm_20 .address_size 64 在编译器生成的PTX文件中,在内联PTX后,编译器已指定ISA和目标,如下所示: .version 1.2 .target sm_13 .version 3.0 .target sm_20 .address_size 64 .address\u

我正在将作为单独文件编写的PTX转换为内联PTX。在单独的PTX文件中,我定义了ISA和目标,如下所示:

.version 1.2
.target sm_13
.version 3.0
.target sm_20
.address_size 64
在编译器生成的PTX文件中,在内联PTX后,编译器已指定ISA和目标,如下所示:

.version 1.2
.target sm_13
.version 3.0
.target sm_20
.address_size 64
.address\u size 64
对我来说是个问题,因为这意味着我必须将内联PTX中的指针算法从32位更新到64位

考虑到32位可以寻址4GB,内存比我的卡还多,是否可以让编译器指定32位地址大小,这样我就不必更新指针算法


在新的统一寻址系统下,sm_20是否支持32位地址?

默认情况下,64位版本的NVCC编译器生成64位PTX。如果您尝试将-m32作为命令行选项传递给nvcc,它将生成32位指针。该选项包含在NVCC文档中:


我非常确定,在compute 2.x和更新的设备上,指针是不可协商的64位指针。