Почему код Python не реализован на GPU? Tensorflow-GPU, CUDA, CUDANN установлен - PullRequest
0 голосов
/ 16 октября 2019

Я новичок в выполнении кода Python на GPU. У меня есть код CNN, который я хотел бы запустить на GPU. У меня на ноутбуке установлены tenorflow-gpu, CUDA и CUDANN, но код Python не выполняется на графическом процессоре.

nvidia-smi

Я просто напишувот все, что я пробовал и выложить вывод

  1. код:

    pip freeze | grep tensorflow
    

    вывод:

    tensorflow==2.0.0
    tensorflow-estimator==2.0.0
    tensorflow-gpu==2.0.0
    
  2. код:

    nvcc --version
    

    Выход:

    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2019 NVIDIA Corporation
    Built on Fri_Feb__8_19:08:17_PST_2019
    Cuda compilation tools, release 10.1, V10.1.105
    
  3. Код

    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
    

    Выход

    define CUDNN_MAJOR 7
    define CUDNN_MINOR 5
    define CUDNN_PATCHLEVEL 0
    define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
    include "driver_types.h"
    
  4. Код:

    from __future__ import absolute_import, division, print_function, unicode_literals
    import tensorFlow as tf
    
    print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
    

    Выход:

    Num GPUs Available:  0
    
  5. Код

    import tensorflow
    from tensorflow.python.client import device_lib
    print(device_lib.list_local_devices())
    

    Выход:

    2019-10-16 22:11:15.280922: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
    2019-10-16 22:11:15.484734: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2808000000 Hz
    2019-10-16 22:11:15.508127: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x45d4c60 executing computations on platform Host. Devices:
    2019-10-16 22:11:15.508212: I tensorflow/compiler/xla/service/service.cc:175]   StreamExecutor device (0): Host, Default Version
    2019-10-16 22:11:15.784006: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1006] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
    2019-10-16 22:11:15.785226: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x45d6ad0 executing computations on platform CUDA. Devices:
    2019-10-16 22:11:15.785278: I tensorflow/compiler/xla/service/service.cc:175]   StreamExecutor device (0): GeForce GTX 1060, Compute Capability 6.1
    2019-10-16 22:11:15.785605: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1006] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
    2019-10-16 22:11:15.786528: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties: 
    name: GeForce GTX 1060 major: 6 minor: 1 memoryClockRate(GHz): 1.6705
    pciBusID: 0000:01:00.0
    2019-10-16 22:11:15.786826: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcudart.so.10.0'; dlerror: libcudart.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
    2019-10-16 22:11:15.787053: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcublas.so.10.0'; dlerror: libcublas.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
    2019-10-16 22:11:15.787266: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcufft.so.10.0'; dlerror: libcufft.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
    2019-10-16 22:11:15.787474: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcurand.so.10.0'; dlerror: libcurand.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
    2019-10-16 22:11:15.787682: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcusolver.so.10.0'; dlerror: libcusolver.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
    2019-10-16 22:11:15.787950: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcusparse.so.10.0'; dlerror: libcusparse.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
    2019-10-16 22:11:15.788010: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
    2019-10-16 22:11:15.788036: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1641] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
    Skipping registering GPU devices...
    2019-10-16 22:11:15.788073: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1159] 
    Device interconnect StreamExecutor with strength 1 edge matrix:
    2019-10-16 22:11:15.788094: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1165]      0 
    2019-10-16 22:11:15.788111: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1178] 0:   N 
    [name: "/device:CPU:0"
    device_type: "CPU"
    memory_limit: 268435456
    locality {
    }
    incarnation: 7400412130462543104
    ,name: "/device:XLA_CPU:0"
    
    device_type: "XLA_CPU"
    memory_limit: 17179869184
    locality {
    }
    incarnation: 10419596086097903998
    physical_device_desc: "device: XLA_CPU device"
    ,name: "/device:XLA_GPU:0"
    device_type: "XLA_GPU"
    memory_limit: 17179869184
    locality {
    }
    incarnation: 10970348491339008844
    physical_device_desc: "device: XLA_GPU device"
    ]
    

Я ссылался на несколько веб-сайтов, на которых в основном говорится, что если у вас установлены графический процессор и tenorflow-gpu, то программа автоматически обнаружит графический процессор и запустит код. Я также знаю, что есть похожие вопросы по StackOverflow, и приведенный выше код реализован после нахождения ответов на аналогичный вопрос. Официальный сайт tenorflow 2.0

tf.debugging.set_log_device_placement(True)

# Create some tensors
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)

print(c)

Вывод:

RuntimeError: Device placement logging must be set at program startup

Почему моя программа не выполняется на GPU?

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Если вы посмотрите здесь -

2019-10-16 22:11:15.786826: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcudart.so.10.0'; dlerror: libcudart.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
2019-10-16 22:11:15.787053: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcublas.so.10.0'; dlerror: libcublas.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
2019-10-16 22:11:15.787266: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcufft.so.10.0'; dlerror: libcufft.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
2019-10-16 22:11:15.787474: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcurand.so.10.0'; dlerror: libcurand.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
2019-10-16 22:11:15.787682: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcusolver.so.10.0'; dlerror: libcusolver.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/
2019-10-16 22:11:15.787950: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcusparse.so.10.0'; dlerror: libcusparse.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/melodic/lib:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda-10.1/lib64/

Там написано, что он ищет файлы с Cuda 10.0, однако он обнаружил Cuda 10.1 файлы. Итак, первым шагом будет удаление и удаление версии Cuda 10.1 и установка Cuda 10.0. Также удалите тензор потока и просто сохраните тензор потока-gpu. Для всех остальных версий следуйте точным предложениям здесь .

Сообщите нам, если это решит вашу проблему.

0 голосов
/ 23 октября 2019

Ответ Ришабха Сахравата сработал для меня. Мне потребовалось очень много времени, чтобы понять, как удалить CUDA 10.1 и установить CUDA 10.0. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1002* * * * * * * * * * * * *1002* * * * * * * * * * *1002* * * * * * * * * * * * * * * * * * * * * * 100 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * * * * * * * * * * * * - * - * - * * * * * * * * * - ошибка * * *. было бы неплохо собрать все в одном месте и направлять других (начинающих, как я), которые, вероятно, сталкиваются с такими же трудностями. Я попробовал следующую команду, чтобы исправить ошибку, и она сработала для меня. Некоторые из них уже упомянуты в этом вопросе, но, тем не менее, я упомянул об этом и здесь. Надеюсь, это поможет.

1. Как удалить CUDA?

dpkg -l | grep cuda- | awk '{print $2}' | xargs -n1 sudo dpkg --purge --force-all
sudo apt-get remove cuda-*

2. Как проверить, удалена ли / установлена ​​ли CUDA?

Команда:

nvcc --version

Вывод (если удалено)

command 'nvcc' not found, but can be installed with sudo apt install nvidia-cuda-toolkit

Выход (, если установлен )

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

3. В случае ошибки bash: / usr / bin / nvcc: нет такого файла или каталога

Проверьте путь в .bashrc . Можно также обратиться к этой ссылке

4. Как удалить старую версию драйвера NVIDIA?

Команда

sudo apt-get --purge remove "*nvidia*"

5. Как проверить, установлен ли драйвер?

Команда

nvidia-smi

6. В случае сообщения об ошибке «Подпроцесс / usr / bin / dpkg вернул код ошибки (1)»

Ошибка dpkg

Можно такжепопробуйте:

sudo apt-get install freeglut3 freeglut3-dev libxi-dev libxmu-dev
apt --fix-broken install # (if it doesn't work, try it in root)

7. Как установить CUDA?

Я использовал следующую команду вместо шага 4 в Установка CUDA

sudo apt-get install cuda-10-0

8. Как установить CUDANN?

Скачать библиотеку cuDNN для Linux

# Unpack the archive

tar -zxvf cudnn-10.0-linux-x64-v7.6.4.38.tgz

# Move the unpacked contents to your CUDA directory

sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64/
sudo cp  cuda/include/cudnn.h /usr/local/cuda-10.0/include/

# Give read access to all users

sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

Можно также использовать следующие ссылки (у меня это не сработало, ноих стоит попробовать):

  1. В итоге я установил CUDA 10.1, выполнив шаги по ссылке .
  2. Я не смог создать новыйфайл /etc/profile.d/cuda.sh, как предлагается в этой ссылке
  3. Эта ссылка также хороша.

Как только все установлено, и тензор потока удален (просто сохраните тензор потока-gpu), код будет работать на графическом процессоре

Как убедиться, что тензор потока использует графический процессор

Примечание: , если вы столкнулись с ошибкой импорта при импорте tenorflow, я сделал это, и это сработало для меня

pip uninstall tensorflow
pip uninstall tensorflow-gpu

pip install tensorflow-gpu

Дополнительная информация:

1. Чтобы проверить версию ядра Ubuntu:

uname -sr
uname -r
uname -a

2. Для установки GCC

Наслаждайтесь :)

...