0

我想在http://docs.nvidia.com/cuda/pdf/ptx_isa_3.1.pdf中使用 SIMD 视频指令(vadd4、vmax4 等)第 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 的 Tesla 卡)

4

1 回答 1

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 页上,它指出:

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

于 2013-06-25T04:22:44.157 回答