2012-07-18 60 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