Использование 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 этого документа говорится:

... вы можете иметь несколько входных или выходных операндов, разделенных запятыми.

Другие вопросы по тегам