2013-11-25 10 views
11

Возможно ли скомпилировать программу CUDA без устройства с поддержкой CUDA на том же узле, используя только NVIDIA CUDA Toolkit ...?Могу ли я скомпилировать программу cuda без устройства cuda

+6

Да. Драйвер компилятора 'nvcc' не связан с физическим присутствием устройства, поэтому вы можете скомпилировать даже без GPU с поддержкой CUDA. Следуя тому же обоснованию, вы можете скомпилировать коды CUDA для архитектуры, когда ваш узел размещает графический процессор различной архитектуры. Конечно, в обоих случаях вы не сможете успешно запустить код. Помните, что эмуляция устройства с тех пор устарела, поэтому, если у вас нет устройства с поддержкой CUDA, вы можете попробовать gpuocelot (но у меня нет опыта с этим). – JackOLantern

+0

@RobertCrovella Спасибо за разъяснение. Я перевел комментарий на полный ответ. Пожалуйста, не стесняйтесь редактировать его или добавлять комментарии, если я что-то пропущу. – JackOLantern

ответ

13

Ответ на ваш вопрос: ДА.

Драйвер компилятора nvcc не связан с физическим присутствием устройства, поэтому вы можете скомпилировать коды CUDA даже без GPU с поддержкой CUDA. Однако следует предупредить, что, как заметил Роберт Кровелла, библиотека драйверов CUDA libcuda.so (cuda.lib для Windows) поставляется с драйвером NVIDIA, а не с установщиком инструментария CUDA. Это означает, что для кодов, требующих API-интерфейсов драйвера (чьи точки ввода имеют префикс cu, см. Приложение H руководства по программированию CUDA C), потребуется принудительная установка «недавнего» драйвера без наличия графического процессора NVIDIA, запуск установщика драйверов отдельно с переключателем командной строки --help.

Следуя тому же обоснованию, вы можете скомпилировать коды CUDA для архитектуры, когда ваш узел содержит графический процессор другой архитектуры. Например, вы можете скомпилировать код для GeForce GT 540M (вычислительная способность 2.1) на машине, на которой размещен GT 210 (вычислительная способность 1.2).

Конечно, в обоих случаях (без GPU или GPU с разной архитектурой) вы не сможете успешно запустить код.

Для ранних версий CUDA было возможно скомпилировать код под модулем эмуляции и запустить скомпилированный код на CPU, но эмуляция устройства с тех пор устарела. Если у вас нет устройства с поддержкой CUDA, но вы хотите запускать коды CUDA, вы можете попробовать использовать gpuocelot (но у меня нет опыта с этим).

Смежные вопросы