Tensorflow не может использовать графический процессор. tf.test.is_gpu_available () показывает графический процессор, но не может использовать

У меня Ubuntu 18.04. Python 3.7.3, Tensorflow 2.0.0

вот моя версия cuda:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov_run sudo apt-get install cuda21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

Мой компьютер - UX430UQ, графическая карта - GeForce 940MX.

Вот результат nvidia-smi:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.01    Driver Version: 418.87.01    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 940MX       On   | 00000000:01:00.0 Off |                  N/A |
| N/A   45C    P0    N/A /  N/A |    283MiB /  2004MiB |      9%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1014      G   /usr/lib/xorg/Xorg                            24MiB |
|    0      1164      G   /usr/bin/gnome-shell                          47MiB |
|    0      1440      G   /usr/lib/xorg/Xorg                           123MiB |
|    0      1615      G   /usr/bin/gnome-shell                          84MiB |
+-----------------------------------------------------------------------------+

Вот результат, когда я run sudo apt-get install cuda:

Reading package lists...
Building dependency tree...
Reading state information...
cuda is already the newest version (10.1.243-1).
0 upgraded, 0 newly installed, 0 to remove and 138 not upgraded.

Вот результат, когда я запустил tf.test.is_gpu_available()

2019-10-08 21: 04: 37.186069: I tensorflow / stream_executor / cuda / cuda_gpu_executor.cc: 1006] успешное чтение узла NUMA из SysFS имело отрицательное значение (-1), но должен быть хотя бы один узел NUMA, поэтому возврат Нулевой узел NUMA

2019-10-08 21: 04: 37.188434: I tensorflow / core / common_runtime / gpu / gpu_device.cc: 1618] Найдено устройство 0 со свойствами:

имя: GeForce 940MX основной: 5 второстепенный: 0 memoryClockRate (ГГц): 1,2415

pciBusID: 0000: 01: 00.0

2019-10-08 21:04: 37.188863: W tensorflow / stream_executor / platform / default / dso_loader.cc: 55] Не удалось загрузить динамическую библиотеку libcudart.so.10.0; dlerror: libcudart.so.10.0: невозможно открыть файл общих объектов: нет такого файла или каталога; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04: 37.189156: W tensorflow / stream_executor / platform / default / dso_loader.cc: 55] Не удалось загрузить динамическую библиотеку libcublas.so.10.0; dlerror: libcublas.so.10.0: невозможно открыть файл общих объектов: нет такого файла или каталога; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04: 37.189426: W tensorflow / stream_executor / platform / default / dso_loader.cc: 55] Не удалось загрузить динамическую библиотеку libcufft.so.10.0; dlerror: libcufft.so.10.0: невозможно открыть файл общих объектов: нет такого файла или каталога; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04: 37.189687: W tensorflow / stream_executor / platform / default / dso_loader.cc: 55] Не удалось загрузить динамическую библиотеку libcurand.so.10.0; dlerror: libcurand.so.10.0: невозможно открыть файл общих объектов: нет такого файла или каталога; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04: 37.189946: W tensorflow / stream_executor / platform / default / dso_loader.cc: 55] Не удалось загрузить динамическую библиотеку libcusolver.so.10.0; dlerror: libcusolver.so.10.0: невозможно открыть файл общих объектов: нет такого файла или каталога; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21:04: 37.190202: W tensorflow / stream_executor / platform / default / dso_loader.cc: 55] Не удалось загрузить динамическую библиотеку libcusparse.so.10.0; dlerror: libcusparse.so.10.0: невозможно открыть файл общих объектов: нет такого файла или каталога; LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64

2019-10-08 21: 04: 37.190236: I tensorflow / stream_executor / platform / default / dso_loader.cc: 44] Успешно открыта динамическая библиотека libcudnn.so.7

2019-10-08 21: 04: 37.190244: W tensorflow / core / common_runtime / gpu / gpu_device.cc: 1641] Не удается открыть некоторые библиотеки графического процессора. Пожалуйста, убедитесь, что недостающие библиотеки, упомянутые выше, установлены правильно, если вы хотите использовать графический процессор. Следуйте руководству на https://www.tensorflow.org/install/gpu, чтобы узнать, как загрузить и установите необходимые библиотеки для вашей платформы.

Пропуск регистрации устройств с графическим процессором ...

2019-10-08 21: 04: 37.190261: I tensorflow / core / common_runtime / gpu / gpu_device.cc: 1159] Устройство соединяет StreamExecutor с матрицей границ силы 1:

2019-10-08 21: 04: 37.190268: I tensorflow / core / common_runtime / gpu / gpu_device.cc: 1165] 0

2019-10-08 21: 04: 37.190276: I tensorflow / core / common_runtime / gpu / gpu_device.cc: 1178] 0: N


person yew onn    schedule 08.10.2019    source источник
comment
Давайте посмотрим: 1 Ваш установленный TF хочет CUDA 10.0: Could not load dynamic library 'libcudart.so.10.0', 2. Ваша установленная версия CUDA выглядит как 9.1: Cuda compilation tools, release 9.1, V9.1.85, и 3. ваш LD_LIBRARY_PATH указывает на CUDA 8.0: LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64 Во многом из этого, вероятно, можно будет разобраться, если вы выполните тщательная работа по установке CUDA. Руководство по установке CUDA 10.0 linux находится здесь . Вам следует начать с правильной установки CUDA 10.0.   -  person Robert Crovella    schedule 08.10.2019
comment
Привет, nvidia-smi показывает, что я уже установил Cuda 10.1, но почему-то версия nvcc - - 9.1.85. Я просто включаю вывод nvidia-smi как правку   -  person yew onn    schedule 08.10.2019
comment
nvidia-smi не сообщает вам установленную версию CUDA так, как вы думаете, см. здесь. В любом случае, если вы действительно правильно установили CUDA 10.1, вам просто нужно правильно установить переменные PATH и LD_LIBRARY_PATH, чтобы использовать его, что описано в руководстве по установке CUDA linux, которое я уже связал (шаг 7). Однако ваш TF ожидает CUDA 10.0, и вы не можете использовать CUDA 10.1 в качестве замены / замены CUDA 10.0 для TF.   -  person Robert Crovella    schedule 08.10.2019
comment
Я только что сделал два шага: 1) export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} и 2) export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}. Результат для echo $LD_LIBRARY_PATH - /usr/local/cuda-10.1/lib64, но tf.test.is_gpu_available () по-прежнему говорит LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64. Кроме того, он говорит cuda is already the newest version (10.1.243-1)., когда я запускаю sudo apt-get install cuda. (Я только что отредактировал это в вопросе). Что мне делать с CUDA 10.1 против CUDA 10.0 для TF?   -  person yew onn    schedule 08.10.2019
comment
После запуска export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}} nvcc --version теперь показывает Cuda compilation tools, release 10.1, V10.1.243. Однако при выполнении tf.test.is_gpu_available() по-прежнему отображается LD_LIBRARY_PATH: /usr/local/cuda-8.0/lib64, даже если вывод echo $ LD_LIBRARY_PATH равен /usr/local/cuda-10.0/lib64   -  person yew onn    schedule 08.10.2019
comment
Если вы хотите установить CUDA 10.0, вы можете сделать sudo apt-get install cuda-10-0. TF, очевидно, имеет некоторую среду, такую ​​как conda, из которой он забирает неправильный LD_LIBRARY_PATH.   -  person Robert Crovella    schedule 08.10.2019


Ответы (1)


Вы должны использовать cuda10 и cudnn7.4 для ссылки на эту сеть

person DachuanZhao    schedule 26.11.2020