Проблемы с установкой Theano с использованием CUDA при использовании пользователя без полномочий root

100
12

Я выполнил инструкции по установке Theano GPUArray из исходных (git-версий) в системные папки (а не как пользователь). Тесты GPUArray работают отлично, без ошибок.

Проблема заключается в том, что Theano работает только с GPU, если я запускаю его как root. Запуск примера для проверки gpu:

(python35) rll@ip-30-92:~$ THEANO_FLAGS=device=cuda python temp.py 
ERROR (theano.gpuarray): Could not initialize pygpu, support disabled
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/__init__.py", line 179, in <module>
use(config.device)
File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/__init__.py", line 166, in use
init_dev(device, preallocate=preallocate)
File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/__init__.py", line 73, in init_dev
context.cudnn_handle = dnn._make_handle(context)
File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/dnn.py", line 83, in _make_handle
cudnn = _dnn_lib()
File "/usr/local/lib/python3.5/dist-packages/theano/gpuarray/dnn.py", line 70, in _dnn_lib
raise RuntimeError('Could not find cudnn library (looked for v5* or v6*)')
RuntimeError: Could not find cudnn library (looked for v5* or v6*)
[Elemwise{exp,no_inplace}(<TensorType(float64, vector)>)]
Looping 1000 times took 3.201078 seconds
Result is [ 1.23178032 1.61879341 1.52278065 ..., 2.20771815 2.29967753
1.62323285]
Used the cpu

Если запустить его как root, он работает, хотя по-прежнему существует ошибка, связанная с cuDNN, которая не может идентифицировать устройства:

(python35) rll@ip-30-92:~$ sudo THEANO_FLAGS=device=cuda python3 temp.py 
Can not use cuDNN on context None: cannot compile with cuDNN. We got this error:
b'/tmp/try_flags_bg7m03hd.c:4:19: fatal error: cudnn.h: No such file or directory\ncompilation terminated.\n'
Mapped name None to device cuda: TITAN X (Pascal) (0000:01:00.0)
[GpuElemwise{exp,no_inplace}(<GpuArrayType<None>(float64, vector)>), HostFromGpu(gpuarray)(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 0.390976 seconds
Result is [ 1.23178032 1.61879341 1.52278065 ..., 2.20771815 2.29967753
1.62323285]
Used the gpu

На этой машине есть 2 Titan X. Прекрасно работает с Tensorflow. Я не использую файл.theoror, но я установил оба:

(python35) rll@ip-30-92:~$ echo $LD_LIBRARY_PATH 
/usr/local/cuda-8.0/lib64
(python35) rll@ip-30-92:~$ echo $CUDA_ROOT
/usr/local/cuda-8.0/

Я делал все согласно инструкциям, и, несмотря на некоторые предупреждения, ошибок не было.

Я не думаю, что это ошибка разрешений для компиляции dir .theano, потому что если я использую .theano dir, то поведение будет одинаковым.

Как я могу это исправить?

спросил(а) 2021-01-25T16:19:52+03:00 5 месяцев назад
1
Решение
76

Я, наконец, нашел проблему. В инструкциях по установке Theano отсутствует аспект, который заключается в том, что вы должны проверить, установлен ли LIBRARY_PATH и добавить к нему библиотеки cuda (обратите внимание, что это не LD_LIBRARY_PATH).

Если он не установлен, просто экспортируйте его, и вам будет хорошо идти. Поэтому для временного исправления:

 export LIBRARY_PATH=/usr/local/cuda-8.0/lib64

Для сохранения это может зависеть от системы, но в целом вы можете добавить в /etc/environment, добавив строку:

LIBRARY_PATH=/usr/local/cuda-8.0/lib64

Это фиксировало сообщение, когда root, и фиксированный cuda для обычного пользователя.

ответил(а) 2021-01-25T16:19:52+03:00 5 месяцев назад
45

Работает и для Windows 10. Добавьте LIBRARY_PATH к своему пути, указывающему на вашу папку lib CUDA (например, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib)

ответил(а) 2021-01-25T16:19:52+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема