2012-07-18 61 views
1

直列PTX代码编写Nvidia的内联PTX大会文件中,使用内联汇编的语法是: 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));
在这两个例子中,有参数如:h0b0遵循%n。我浏览了CUDA的官方文档,并没有发现任何关于h0b0的含义的担忧。我见过h0,h1b0,b1,b2,b3。我猜h0h1代表一个16位值,而bn代表一个字节值。有人知道这些的确切含义吗?语法对CUDA

感谢Roger Dahl的帮助。我读了PTX ISA 3.0并找到了答案。
“h”表示半字。 h0表示32位字的低半字。 h1表示32位字的高半字。 “b”表示一个整数字节。 b0,b1,b2b3代表32位字的第一个8位,第二个8位,第三个8位和最高8位。

回答

2

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函数)。

+0

Thiks,我也看到了。原来我指的是在线的旧版本。 – gpunerd 2012-07-18 17:15:23