【发布时间】: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 后面都有h0 或b0 等参数。我浏览了CUDA的官方文档,没有发现h0或b0的含义有什么顾虑。我见过h0,h1 和b0,b1,b2,b3。我猜h0 或h1 代表一个16 位的值,而bn 代表一个字节值。有人知道这些的确切含义吗?
感谢罗杰达尔的帮助。我阅读了 PTX ISA 3.0 并找到了答案。
“h”表示半字。 h0 表示 32 位字的低半字。 h1 表示 32 位字的高半字。 “b”表示整数字节。 b0,b1,b2和b3分别代表一个32bit字的前8bit、第二8bit、第三8bit和最高8bit。
【问题讨论】: