Различные версии CUDA, представленные nvcc и NVIDIA-smi - программирование

Различные версии CUDA, представленные nvcc и NVIDIA-smi

Я очень смущен различными версиями CUDA, показанными при запуске which nvcc и nvidia-smi which nvcc.

На моем Ubuntu 16.04 установлены как cuda9.2, так и cuda10. Теперь я установил PATH так, чтобы он указывал на cuda9.2. Итак, когда я бегу:

 $ which nvcc
 /usr/local/cuda-9.2/bin/nvcc

Тем не менее, когда я бегу

$ nvidia-smi
Wed Nov 21 19:41:32 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72       Driver Version: 410.72       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   53C    P0    26W /  N/A |    379MiB /  6078MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1324      G   /usr/lib/xorg/Xorg                           225MiB |
|    0      2844      G   compiz                                       146MiB |
|    0     15550      G   /usr/lib/firefox/firefox                       1MiB |
|    0     19992      G   /usr/lib/firefox/firefox                       1MiB |
|    0     23605      G   /usr/lib/firefox/firefox                       1MiB |

Итак, я использую cuda9.2, как предлагает which nvcc, или я использую cuda10, как предлагает nvidia-smi smi?

Я видел этот ответ, но он не дает прямого ответа на путаницу, он просто просит нас переустановить cudatoolkit, что я уже сделал.

4b9b3361

Ответ 1

CUDA имеет 2 основных API, среду выполнения и API драйвера. Оба имеют соответствующую версию (например, 8.0, 9.0 и т.д.)

Необходимая поддержка API драйвера (например, libcuda.so в linux) устанавливается установщиком драйвера GPU.

Необходимая поддержка API времени выполнения (например, libcudart.so в linux, а также nvcc) устанавливается установщиком инструментария CUDA (в него также может быть включен установщик драйвера GPU).

В любом случае (установленная) версия API драйвера может не всегда соответствовать (установленной) версии API среды выполнения, особенно если вы устанавливаете драйвер графического процессора независимо от установки CUDA (то есть инструментария CUDA).

Инструмент nvidia-smi устанавливается установщиком драйвера графического процессора и, как правило, имеет в виду драйвер графического процессора, а не все, что устанавливается установщиком инструментария CUDA.

Недавно (где-то между версиями драйверов 410.48 и 410.73 в linux) потенциальные представители NVIDIA решили добавить отчет о версии API драйвера CUDA, установленной драйвером, в выходные данные из nvidia-smi.

Это не связано с установленной версией CUDA.

nvcc, инструмент драйвера компилятора CUDA, который устанавливается вместе с инструментарием CUDA, всегда будет сообщать версию среды выполнения CUDA, которую он был создан для распознавания. Он ничего не знает о том, какая версия драйвера установлена, или даже если установлен драйвер графического процессора.

Следовательно, по замыслу эти два числа не обязательно совпадают, поскольку они отражают две разные вещи.

Если вам интересно, почему nvcc -V отображает версию CUDA, которую вы не ожидали (например, она отображает версию, отличную от той, которую вы, по вашему мнению, установили), это может быть потому, что вы не выполнили обязательные инструкции в шаге 7 руководство по установке cuda linux

Ответ 2

nvcc находится в папке bin CUDA - поэтому проверьте, добавлена ли папка bin CUDA в вашу $PATH.

В частности, убедитесь, что вы выполнили действия CUDA после установки (например, отсюда):

  1. Добавьте корзину CUDA в $PATH (т.е. добавьте следующую строку в ваш ~/.bashrc)
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}

PS. Убедитесь, что следующие два пути выше, существуют в первую очередь: /usr/local/cuda-10.1/bin и /usr/local/cuda-10.1/NsightCompute-2019.1 (путь NsightCompute может иметь немного другое окончание в зависимости от версии вычисления Nsight установлены...

  1. Обновите $LD_LIBRARY_PATH (т.е. добавьте следующую строку в ваш ~/bashrc).
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

После этого nvcc и nvidia-smi nvtop (или nvtop) сообщают об одной и той же версии CUDA...