CUDA内联PTX代码的语法
如Nvidia的内联PTX汇编文档所述,使用内联汇编的语法为:CUDA内联PTX代码的语法,cuda,ptx,Cuda,Ptx,如Nvidia的内联PTX汇编文档所述,使用内联汇编的语法为: asm(“临时字符串”:“约束”(输出):“约束”(输入)) 这里有两个例子: 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。我查阅了中大的官方文件,没有发现任何关于h0或b
asm(“临时字符串”:“约束”(输出):“约束”(输入))代码>
这里有两个例子:
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
。我查阅了中大的官方文件,没有发现任何关于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
表示32位字的第一个8位、第二个8位、第三个8位和最高8位。vadd
是PTX附带的视频特定指令之一。CUDA发行版中包含完整的PTX ISA说明。在我的机器上,它位于C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v4.1\doc\ptx_isa_3.0.pdf
中。h0
、h1
、b0
等指示器的说明见8.7.11视频说明
部分。它们表示不同的隐式移位/掩码操作(请参见optMerge
函数) 嗯,我也看到了。原来我指的是网上的旧版本。