Как Анаконда выбирает cudatoolkit - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть несколько окружений anaconda с различными наборами инструментов cuda. ​​

env1 имеет cudatoolkit 10.0.130

env2 имеет cudatoolkit 10.1.168

env3 имеет cudatoolkit 10.2.89

Я нашел их, запустив conda list в каждой среде.

Когда я делаю nvidia-smi, я получаю следующий вывод независимо от того, в какой среде я нахожусь

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 435.21       Driver Version: 435.21       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| 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 RTX 208...  Off  | 00000000:01:00.0  On |                  N/A |
|  0%   42C    P8     7W / 260W |    640MiB / 11016MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

Является ли версия cuda, показанная выше, такой же, как версия набора инструментов cuda? Если да, то почему он одинаков во всех средах?

В env3 с cudatoolkit version 10.2.89 я попытался установить библиотеку cupy с помощью команды pip install cupy-cuda102. Когда я пытаюсь это сделать, я получаю следующую ошибку:

ERROR: Could not find a version that satisfies the requirement cupy-cuda102 (from versions: none)
ERROR: No matching distribution found for cupy-cuda102

Мне удалось установить, используя pip install cupy-cuda101 для cuda 10.1. Почему он не может найти cudatoolkit 10.2?

Причина, по которой я задаю этот вопрос, заключается в том, что я получаю ошибку cupy.cuda.cublas.CUBLASError: CUBLAS_STATUS_NOT_INITIALIZED, когда я использую модель глубокого обучения. Мне просто интересно, имеет ли версия cudatoolkit какое-то отношение к этой ошибке. Даже если эта ошибка не связана с версией cudatoolkit, я хочу знать, как anaconda использует cudatoolkit.

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

На самом деле это не ответ на первоначальный вопрос, но следующие:

tenorflow и pytorch могут быть установлены напрямую через anaconda без явной загрузки cudatoolkit из nvidia. Требуется только установить драйвер GPU. В этом случае nv cc не установлен, но работает нормально. как это работает в этом случае?

Как правило, пакеты GPU на Anaconda / Conda-Forge создаются с использованием новой цепочки инструментов компилятора CUDA от Anaconda. Это сделано таким образом, что nvcc и друзья отделяются от остальных библиотек времени выполнения (cuFFT, cuSPARSE и др. c) в CUDA Toolkit. Последний упакован в пакет cudatoolkit, создается как run -зависимость (в терминологии conda) и устанавливается при установке пакетов GPU, таких как PyTorch.

Затем пакеты GPU компилируются, связываются с cudatoolkit и упаковываются, поэтому вам нужно только установить драйвер CUDA и ничего больше. Системный набор инструментов CUDA, если таковой имеется, по умолчанию игнорируется из-за этой связи, если только пакет (такой как Numba) не имеет своего собственного способа поиска библиотек CUDA во время выполнения.

Стоит отметить, что установленный cudatoolkit не всегда соответствует вашему водителю. В этом случае вы можете явно ограничить его версию (скажем, 10.0):

conda install some_gpu_package cudatoolkit=10.0

что происходит, когда активирована среда, в которой установлен тензор потока? Создает ли conda переменные среды для доступа к библиотекам cuda, только когда среда активирована?

Conda всегда устанавливает некоторые переменные env при активации env. Я не совсем уверен в тензорном потоке, но, скорее всего, когда он собран, он связан с библиотеками времени выполнения CUDA (cudatoolkit другими словами). Таким образом, при запуске tenorflow или других приложений с графическим процессором они будут использовать cudatoolkit, установленный в той же среде conda.

0 голосов
/ 18 февраля 2020

Является ли показанная выше версия cuda такой же, как версия набора инструментов cuda?

Это не имеет ничего общего с версиями набора инструментов CUDA.

Если так, почему это то же самое во всех средах [sic]?

Потому что это свойство драйвера. Это максимальная версия CUDA, которую поддерживает активный драйвер в вашей системе. И когда вы пытаетесь использовать CUDA 10.2, именно поэтому ничего не работает. Ваш драйвер должен быть обновлен для поддержки CUDA 10.2.

...