Использование SIMD-видеоинструкций во встроенной Ptx сборке CUDA
Я хочу использовать видеоинструкцию SIMD (vadd4, vmax4 и т. Д.), Раздел 8.7.13 в http://docs.nvidia.com/cuda/pdf/ptx_isa_3.1.pdf
Я попробовал следующее в моем коде
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 ответ
Я полагаю, у вас есть небольшая синтаксическая ошибка. Попробуй это:
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
(при условии стандартной установки Linux cuda 5; просто используйте функцию поиска файлов, если на компьютере с Windows)
На странице 4 этого документа говорится:
... вы можете иметь несколько входных или выходных операндов, разделенных запятыми.