【问题标题】:primitive data type in ptxptx 中的原始数据类型
【发布时间】:2013-08-21 20:58:29
【问题描述】:
__device__ __inline__ double ld_gbl_cg(const double *addr) {
          double return_value;
          asm("ld.global.cg.f64 %0, [%1];" : "=d"(return_value) : "l"(addr));
          return return_value;
        }

以上代码来自这里: CUDA disable L1 cache only for one variable

根据作者的说法,“d”表示float,“r”表示int。

我想写一小段内联 asm 代码,我想知道其余原始类型变量(如 unsigned short、unsigned long long、float-32 等)的符号是什么,我无法从ptx isa。

我用字母“l”代表unsigned long long,对吗?

【问题讨论】:

    标签: cuda gpu nvidia ptx


    【解决方案1】:

    您可以找到它们here,但为了完整起见,字母对应于底层 PTX 寄存器类型:

    "h" = .u16 reg
    "r" = .u32 reg
    "l" = .u64 reg
    "f" = .f32 reg
    "d" = .f64 reg
    

    所以unsigned long long 映射到“l”(对于 64 位整数 PTX 寄存器)。

    【讨论】:

    • 谢谢,这里的 int64 是否使用与 uint64 相同的符号/注册类型?
    • s64 寄存器和u64 寄存器之间的约束字母相同,但实际寄存器类型不同。如果您研究@talonmies 给出的链接,您会在上面摘录的表格之后立即注意到,有一个示例使用l 约束字母将参数传递给s64 寄存器。同样,您会看到使用r 约束字母向/从s32 寄存器传递值的示例。
    猜你喜欢
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2011-09-04
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多