2013-06-25 41 views
0

我想使用http://docs.nvidia.com/cuda/pdf/ptx_isa_3.1.pdfSIMD視頻指令CUDA

的SIMD視頻指令(vadd4,vmax4等) 第13年7月8日我想在我的代碼如下

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

但是在編譯時,我得到以下錯誤

error: unknown register name "r"

我應該用什麼來代替「R」在這裏?或者代碼中有其他錯誤嗎? (我正在使用計算能力3.5的特斯拉卡)

回答

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

...you can have multiple input or output operands separated by commas.

+0

你可以找到使用的SIMD視頻指令的例子通過英偉達提供給註冊開發者的封裝函數頭文件中的內嵌PTX:https://devtalk.nvidia.com/default/topic/535684/announcements/release-1-1-of-simd-in-a- word-functions-posted/ – njuffa

+0

我的不好!它的工作,謝謝:) – user2494882