Каковы значения по умолчанию для параметров arch и code при использовании nvcc? - PullRequest
10 голосов
/ 12 января 2011

При компиляции кода CUDA вы должны выбрать, для какой архитектуры генерируется ваш код.nvcc предоставляет два параметра для определения этой архитектуры, в основном:

  • arch задает виртуальную аргументацию, которая может быть compute_10, compute_11 и т. Д.
  • code определяет реальную архитектуру, которая может быть sm_10, sm_11 и т. Д.

Итак, команда, подобная этой:

nvcc x.cu -arch=compute_13 -code=sm_13

Сгенерирует код 'cubin'для устройств с возможностью вычислений 1,3.Пожалуйста, поправьте меня, если я ошибаюсь.Что я хотел бы знать, какие значения по умолчанию для этих двух параметров? Какую архитектуру по умолчанию использует nvcc, если не указано значение для arch или code ?

Ответы [ 2 ]

8 голосов
/ 13 января 2011

Хорошо, мне наконец-то удалось обнаружить значения по умолчанию. Я виноват в том, что не прочитал целую главу о компиляции GPU в документации NVCC с самого начала и до самого конца. Таким образом,

nvcc x.cu

эквивалентно

nvcc x.cu –arch=compute_10 -code=sm_10,compute_10

Это значения по умолчанию. Компиляция выполняется по умолчанию для виртуальной архитектуры compute_10, и a.out, получаемый в результате компиляции, будет включать код CUBIN для реальной архитектуры sm_10 и код сборки PTX для архитектуры compute_10, будет перекомпилирован «как раз вовремя» драйвером CUDA, если ваша архитектура больше sm_10.

2 голосов
/ 13 января 2011

Я считаю, что по умолчанию установлено значение compute_10, поскольку вы не можете использовать какие-либо функции compute_13, если не указали явно, что это то, что вам нужно. (Предположительно в документации NVCC, поставляемой с инструментарием CUDA, указано, но я не могу найти ссылку в Интернете).

...