正如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));
在这两个例子中,都有参数比如:h0
或者b0
跟在%n
. 我浏览了 CUDA 的官方文档,并没有发现对h0
or的含义有任何顾虑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
代表一个 32 位字的前 8 位、第二个 8 位、第三个 8 位和最高 8 位。