PTX - .reg寄存器在哪里?

时间:2013-07-16 13:32:25

标签: cuda nvidia ptx

当我使用.reg来声明寄存器时......它们在哪里?

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

1 个答案:

答案 0 :(得分:1)

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

  

寄存器与其他州空间的不同之处在于它们不是   完全可寻址,即不可能参考地址   一个登记册。编译时使用应用程序二进制接口   (ABI),寄存器变量仅限于功能范围,可能不是   在模块范围声明。编译传统PTX代码时(ISA   包含模块作用域.reg变量的3.0之前的版本   编译器静默禁用ABI。