У меня есть код, который, в зависимости от наличия графических процессоров, запускает ядро графического процессора или тот же код на процессоре. Это делается во время выполнения, и программа всегда связана с CUDA.

Однако, возможно, я хочу работать на компьютерах , которые не имеют каких - либо графических процессоров. Мы попытались установить CUDA Toolkit на компьютер, но libcudart отсутствует. Как мне это получить?

И настольные машины (у которых есть графические процессоры) и грид-машины (у которых нет) используют RHEL 6.7, и мы использовали [буквально] один и тот же установщик CUDA для обоих, но не выбрали драйвер в сетке (так как нет ГПУ и это наверно орал бы на нас).

1 ответ1

1

Если драйвер nvidia не может получить доступ к устройству nvidia или драйвер nvidia отсутствует, программа установки драйвера CUDA завершится ошибкой. Часть драйвера CUDA, по-видимому, представляет собой набор библиотек (таких как libcudart и libcuda), которые затем не устанавливаются.

Однако, если вы устанавливаете драйвер CUDA на другом компьютере и делаете

cp -r /usr/local/cuda/lib64/ /somewhere/else/cuda_libs
cp /usr/lib64/libcuda.so.1 /somewhere/else/cuda_libs/libcuda.so.1
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/somewhere/else/cuda_libs"

Тогда другой компьютер может использовать библиотеки cuda. Очевидно, что это волшебным образом не создает устройство, и вам не нужно пытаться использовать упомянутое несуществующее устройство, но, по крайней мере, ваш код, который ссылается на cuda, будет работать.

Я успешно проверил это между системами RHEL 6.7, хотя я не знаю, насколько повсеместно это решение будет работать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .