Поскольку новые драйверы поставляются со средой выполнения CUDA (я могу выбрать 9.1 или 9.2 на странице загрузки драйверов)
Нет, это неправильно. Этот выбор на странице загрузки драйверов связан с тем, что каждая версия CUDA имеет минимальную требуемую версию драйвера, связанную с ним . Это не означает, что драйвер поставляется вместе со средой выполнения CUDA (иными словами, драйвер не устанавливает libcudart.so в linux и никогда этого не делает - с некоторым тщательным экспериментированием в чистой установке вы можете доказать это сами).
Некоторые дополнительные комментарии:
-lcudart_static
на самом деле по умолчанию для текущих / последних версий nvcc
. Вы можете узнать это, прочитав руководство nvcc . Поэтому по умолчанию ваш исполняемый файл при компиляции / сборке с nvcc
уже должен быть статически связан с библиотекой времени выполнения CUDA, соответствующей версии nvcc
, которую вы используете для компиляции. Причина, по которой вам может потребоваться указать это или что-то подобное, заключается в том, что вы создаете приложение, например, с помощью набор инструментов GNU (в Linux), а не nvcc
.
Цель статического связывания с библиотекой времени выполнения CUDA, как вы догадываетесь, состоит в том, чтобы приложение могло быть построено таким образом, что для правильной работы ему не требуется установка инструментария CUDA. Требуется только машина с установленным драйвером графического процессора.
Самый совместимый способ обеспечения того, чтобы приложение работало на нескольких компьютерах с набором драйверов GPU, - это компиляция приложения с использованием самого старого набора инструментов CUDA, необходимого для удовлетворения потребностей самых ранних версий. Драйвер графического процессора в диапазоне, который вы намереваетесь охватить. Опять же, вы можете обратиться к таблице здесь .