在内联ptx汇编CUDA中使用SIMD视频指令

时间:2013-06-25 02:39:24

标签: assembly cuda simd ptx

我想使用SIMD视频说明(vadd4,vmax4等) http://docs.nvidia.com/cuda/pdf/ptx_isa_3.1.pdf

中的第8.7.13节

我在我的代码中尝试了以下内容

asm("vadd4.u32.u32.u32 %0, %1, %2, %3;" : "=r"(i) : "r"(j) : "r"(k) : "r"(l));

其中i,j,k,l是int变量。我使用“r”,因为它是.u32 reg

的约束

但是在编译时,我收到以下错误

  

错误:未知的注册名称“r”

我应该在这里使用什么而不是“r”?或者代码中还有其他错误吗? (我使用的是具有计算能力3.5的特斯拉卡)

1 个答案:

答案 0 :(得分:3)

我相信你有轻微的语法错误。试试这个:

asm("vadd4.u32.u32.u32 %0, %1, %2, %3;" : "=r"(i) : "r"(j) , "r"(k) , "r"(l));

                                                           ^        ^
                                                           |        |
Note the replacement of two of your colons (:) with commas (,)

您可能希望参考以下文件:

/usr/local/cuda/doc/pdf/Using_Inline_PTX_Assembly_In_CUDA.pdf

(假设标准的cuda 5 linux安装;如果在Windows机器上,只使用你的文件搜索功能)

该文件的第4页说明:

  

...您可以用逗号分隔多个输入或输出操作数。