Можно ли скомпилировать программу CUDA без устройства с поддержкой CUDA на одном и том же node, используя только инструмент NVIDIA CUDA Toolkit...?
Могу ли я скомпилировать программу cuda без использования устройства cuda
Ответ 1
Ответ на ваш вопрос: ДА.
Драйвер компилятора nvcc
не связан с физическим присутствием устройства, поэтому вы можете скомпилировать коды CUDA даже без GPU с поддержкой CUDA. Однако следует предупредить, что, как заметил Роберт Кровелла, библиотека драйверов CUDA libcuda.so
(cuda.lib
для Windows) поставляется с драйвером NVIDIA, а не с установщиком инструментария CUDA. Это означает, что коды, требующие API-интерфейсов драйвера (чьи точки ввода имеют префикс с cu
, см. Приложение H руководства по программированию CUDA C), потребуют принудительной установки "недавнего" драйвера без наличия графического процессора NVIDIA, запускающего драйвер установщик отдельно с помощью командной строки --help
.
Следуя тому же обоснованию, вы можете скомпилировать коды CUDA для архитектуры, когда ваш node размещает графический процессор другой архитектуры. Например, вы можете скомпилировать код для GeForce GT 540M (вычислительная способность 2.1) на машине, на которой размещен GT 210 (вычислительная способность 1.2).
Конечно, в обоих случаях (без GPU или GPU с разной архитектурой) вы не сможете успешно запустить код.
Для ранних версий CUDA было возможно скомпилировать код в соответствии с модулем эмуляции и запустить скомпилированный код на CPU, но эмуляция устройства с тех пор устарела. Если у вас нет устройства с поддержкой CUDA, но вы хотите запускать коды CUDA, вы можете попробовать использовать gpuocelot (но у меня нет опыта с этим).