Cuda PTX-注册表在哪里?

Cuda PTX-注册表在哪里?,cuda,nvidia,ptx,Cuda,Nvidia,Ptx,当我使用.reg声明寄存器时。。他们在哪里 我的意思是:如果我在一个设备函数中使用.reg,寄存器存储在每个线程拥有的寄存器文件中。。。但是,如果我在全局范围内的模块中声明一个.reg变量(不是.global,只是全局范围),该怎么办?任何.reg声明都会在PTX寄存器状态空间中结束。如何映射到硬件特性是由汇编程序决定的,但寄存器或本地内存的通常规则是正确的。您应该知道,模块作用域中的寄存器状态空间声明仅在PTX 1.x和2.x代码中受支持,不能与CUDA ABI一起使用。PTX文档说明: 寄存

当我使用
.reg
声明寄存器时。。他们在哪里


我的意思是:如果我在一个设备函数中使用
.reg
,寄存器存储在每个线程拥有的寄存器文件中。。。但是,如果我在全局范围内的模块中声明一个
.reg
变量(不是
.global
,只是全局范围),该怎么办?

任何
.reg
声明都会在PTX寄存器状态空间中结束。如何映射到硬件特性是由汇编程序决定的,但寄存器或本地内存的通常规则是正确的。您应该知道,模块作用域中的寄存器状态空间声明仅在PTX 1.x和2.x代码中受支持,不能与CUDA ABI一起使用。PTX文档说明:

寄存器不同于其他状态空间,因为它们不是 完全可寻址,即不可能引用 登记册。编译时使用应用程序二进制接口 (ABI),寄存器变量仅限于函数范围,不能 必须在模块范围内声明。编译旧PTX代码(ISA)时 包含模块作用域.reg变量的3.0之前的版本 编译器以静默方式禁用ABI的使用


在虚拟机的状态空间上下文中,“where”和“location”是什么意思?我的意思是它被分配到哪里:在线程上注册文件?即使我在一个全局作用域中声明了一个.reg名称,而不是在内核中,它也是在虚拟机的寄存器状态空间中“分配”的(这只允许在非CUDA ABI PTX代码中使用)。明白了吗。我打算遵守遵守ABI的PTX。谢谢,回答一下,我会接受的