【问题标题】:Syntax on inline PTX code for CUDACUDA 的内联 PTX 代码的语法
【发布时间】:2012-07-17 18:35:35
【问题描述】:

正如 Nvidia 的 Inline PTX Assembly 文档中所写,使用内联汇编的语法是: asm("temp_string" : "constraint"(output) : "constraint"(input));
这里有两个例子:
asm("vadd.s32.s32.s32 %0, %1.h0, %2.h0;" : "=r"(v) : "r"(a), "r"(b));
asm("vadd.u32.u32.u32 %0.b0, %1, %2, %3;" : "=r"(v) : "r"(a), "r"(b), "r"(z));
在这两个示例中,在%n 后面都有h0b0 等参数。我浏览了CUDA的官方文档,没有发现h0b0的含义有什么顾虑。我见过h0,h1b0,b1,b2,b3。我猜h0h1 代表一个16 位的值,而bn 代表一个字节值。有人知道这些的确切含义吗?

感谢罗杰达尔的帮助。我阅读了 PTX ISA 3.0 并找到了答案。
“h”表示半字。 h0 表示 32 位字的低半字。 h1 表示 32 位字的高半字。 “b”表示整数字节。 b0,b1,b2b3分别代表一个32bit字的前8bit、第二8bit、第三8bit和最高8bit。

【问题讨论】:

    标签: cuda ptx


    【解决方案1】:

    vadd 是 PTX 随附的视频特定指令之一。 CUDA 发行版中包含对完整 PTX ISA 的描述。在我的机器上,它位于C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\doc\ptx_isa_3.0.pdfh0h1b0 等指示符的描述在 8.7.11 Video Instructions 部分。它们代表不同的隐式移位/掩码操作(请参阅optMerge 函数)。

    【讨论】:

    • 谢谢,我也看到了。原来我指的是网上的旧版本。
    猜你喜欢
    • 2012-09-09
    • 1970-01-01
    • 2012-11-28
    • 2021-04-05
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多