Создание кода перемещаемого устройства с помощью Nvidia Nsight
Я пытаюсь скомпилировать пример динамического параллелизма на CUDA, и когда я пытаюсь скомпилировать, это дает и сообщение об ошибке,
kernel launch from __device__ or __global__ functions requires separate compilation modes
Позже обнаружил, что я должен установить --relocatable-device-code
флаг для true
, Но есть ли флаг, чтобы установить, чтобы сделать набор relocatable-device-code
в true
в Nsight Eclipse?
3 ответа
Если вы не используете проект makefile, вы можете изменить параметры, переданные в nvcc
проекта Nsight в следующей позиции, начиная с меню.
Проект - Свойства - Сборка - Настройки - Настройки инструмента - Компилятор NVCC
Поскольку Nsight не предоставляет опцию rdc для проверки, вы можете напрямую изменить 'Commnad' с
nvcc
в
nvcc -rdc=true
или измените "Шаблон командной строки" с
${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX} ${OUTPUT} ${INPUTS}
в
${COMMAND} ${FLAGS} -rdc=true ${OUTPUT_FLAG} ${OUTPUT_PREFIX} ${OUTPUT} ${INPUTS}
Второй лучше.
Возможно, вы также захотите изменить это для "Все конфигурации", а не только для "Отладка" или "Выпуск".
РЕДАКТИРОВАТЬ
Вы должны следовать инструкциям @RobertCrovella в комментарии. Это официальный путь.
После создания проекта вы также можете внести это изменение, перейдя в Project...Properties...Build...Settings. Здесь вы увидите страницу, аналогичную упомянутой выше, в диалоговом окне "Основные настройки". Аналогичным образом можно изменить "Режим компоновщика устройства" на этой странице с "Компиляция всей программы" на "Отдельная компиляция", чтобы включить генерацию кода перемещаемого устройства после того, как проект уже создан.
Кредит переходит к @robertcrovella. Это был на самом деле ответ, который я искал, поэтому я сделал это отдельным ответом.
Вы можете использовать опцию nvcc "-dc" или "-rdc=true", вы можете указать это как образец.
nvlink, перемещаемый код устройства и статические библиотеки устройств