簡體   English   中英

盡管安裝了 Tensorflow-gpu,但我的腳本似乎沒有在 GPU 上執行

[英]My script doesnt seem to be executed on GPU, although Tensorflow-gpu is installed

我有一台裝有 cuda 10.1 和 tensorflow 和 tensorflow Z0AA0BE2A866410D94FF0351.14Z4 的機器。 我正在運行一個 python 腳本,該腳本在 virtualenv 中訓練 CNN。 我在源碼中表示我要使用GPU,如下:

import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID";
os.environ["CUDA_VISIBLE_DEVICES"]="0";

但是,當我運行腳本時,訓練階段需要很多時間才能完成。 這是我的 nvidia-smi 的 output:

在此處輸入圖像描述

我認為奇怪的是為什么 GPU 利用率如此之低以及為什么我的 python 腳本沒有出現在進程列表中。 以下是我嘗試過的一些命令的輸出:

>>> import tensorflow as tf
>>> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

output 是

2019-10-14 09:53:12.674719: I tensorflow/core/platform/cpu_feature_guard.cc:142] 您的 CPU 支持此 TensorFlow 二進制文件未編譯使用的指令:AVX2 FMA 2019-10-14 09:53:12.679047 : I tensorflow/stream_executor/platform/default/dso_loader.cc:42] 成功打開動態庫 libcuda.so.1 2019-10-14 09:53:12.784993: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] 成功從 SysFS 讀取的 NUMA 節點為負值(-1),但必須至少有一個 NUMA 節點,所以返回 NUMA 節點為零 2019-10-14 09:53:12.785744: I tensorflow/compiler/xla/service/service. cc:168] XLA 服務 0x55f155c59650 在平台 CUDA 上執行計算。 設備:2019-10-14 09:53:12.785771:I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor 設備(0):GeForce RTX 2080 Ti,計算能力 7.5 2019-10-14 09:53 :12.806453:I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU 頻率:3600000000 Hz 2019-10-14 09:53:12.807345:I tensorflow/compiler/xla/service/service.cc:168] XLA服務 0x55f15605dfc0 在平台主機上執行計算。 設備:2019-10-14 09:53:12.807408:I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor 設備(0):,2019-10-14 09:53:12.807829:I tensorflow/stream_executor /cuda/cuda_gpu_executor.cc:1005] 從 SysFS 讀取的成功 NUMA 節點具有負值 (-1),但必須至少有一個 NUMA 節點,因此返回 NUMA 節點零 2019-10-14 09:53:12.808859: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] 找到具有屬性的設備 0:名稱:GeForce RTX 2080 Ti 主要:7 次要:5 memoryClockRate(GHz):1.545 pciBusID:0000:01:00.0 2019-10-14 09:53:12.809148:我 tensorflow/stream_executor/platform/default/dso_loader.cc:53] 無法 dlopen 庫“libcudart.so.10.0”; dlerror:libcudart.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:53:12.809313: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcublas.so.10.0”; dlerror:libcublas.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:53:12.809481: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcufft.so.10.0”; dlerror:libcufft.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:53:12.809531: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcurand.so.10.0”; dlerror:libcurand.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:53:12.809572: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcusolver.so.10.0”; dlerror:libcusolver.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:53:12.809611: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcusparse.so.10.0”; dlerror:libcusparse.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:53:12.811997: I tensorflow/stream_executor/platform/default/dso_loader.cc:42]成功打開動態庫 libcudnn.so.7 2019-10-14 09:53:12.812038: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1663] 無法打開一些 GPU 庫。 跳過注冊 GPU 設備... 2019-10-14 09:53:12.812059: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1181] 設備互連 StreamExecutor 強度為 1 邊緣矩陣:2019-10-14 09:53 :12.812067: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1187] 0 2019-10-14 09:53:12.812072: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1200] 0: N 設備映射: /job:localhost/replica:0/task:0/device:XLA_GPU:0 -> 設備:XLA_GPU 設備 /job:localhost/replica:0/task:0/device:XLA_CPU:0 -> 設備:XLA_CPU 設備 2019 -10-14 09:53:12.812372: I tensorflow/core/common_runtime/direct_session.cc:296] 設備映射:/job:localhost/replica:0/task:0/device:XLA_GPU:0 -> 設備:XLA_GPU 設備/job:localhost/replica:0/task:0/device:XLA_CPU:0 -> 設備:XLA_CPU 設備

我試過的其他命令是

>>> with tf.Session() as sess:
    devices = sess.list_devices()

output 是

2019-10-14 09:55:52.398317: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] 從 SysFS 讀取的成功 NUMA 節點具有負值 (-1),但必須至少有一個 NUMA 節點,所以返回NUMA 節點零 2019-10-14 09:55:52.399249: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] 找到具有屬性的設備 0:名稱:GeForce RTX 2080 Ti 主要:7 次要:5 memoryClockRate(GHz ): 1.545 pciBusID: 0000:01:00.0 2019-10-14 09:55:52.399355: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] 無法打開庫“libcudart.so.10.0”; dlerror:libcudart.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:55:52.399399: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcublas.so.10.0”; dlerror:libcublas.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:55:52.399437: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcufft.so.10.0”; dlerror:libcufft.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:55:52.399475: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcurand.so.10.0”; dlerror:libcurand.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:55:52.399509: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcusolver.so.10.0”; dlerror:libcusolver.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:55:52.399544: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcusparse.so.10.0”; dlerror:libcusparse.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 09:55:52.399552: I tensorflow/stream_executor/platform/default/dso_loader.cc:42]成功打開動態庫 libcudnn.so.7 2019-10-14 09:55:52.399557: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1663] 無法打開一些 GPU 庫。 跳過注冊 GPU 設備... 2019-10-14 09:55:52.402143: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1181] 設備互連 StreamExecutor 強度為 1 邊緣矩陣:2019-10-14 09:55 :52.402162: 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1187]

最后,我也試過這個

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

配以下output

2019-10-14 10:00:52.389511: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] 從 SysFS 讀取的成功 NUMA 節點具有負值 (-1),但必須至少有一個 NUMA 節點,所以返回NUMA 節點零 2019-10-14 10:00:52.390582: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] 找到具有屬性的設備 0:名稱:GeForce RTX 2080 Ti 主要:7 次要:5 memoryClockRate(GHz ): 1.545 pciBusID: 0000:01:00.0 2019-10-14 10:00:52.390741: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] 無法 dlopen 庫 'libcudart.so.10.0'; dlerror:libcudart.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 10:00:52.390811: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcublas.so.10.0”; dlerror:libcublas.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 10:00:52.390854: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcufft.so.10.0”; dlerror:libcufft.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 10:00:52.390897: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcurand.so.10.0”; dlerror:libcurand.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 10:00:52.390934: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcusolver.so.10.0”; dlerror:libcusolver.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 10:00:52.390968: I tensorflow/stream_executor/platform/default/dso_loader.cc:53]無法 dlopen 庫“libcusparse.so.10.0”; dlerror:libcusparse.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64: 2019-10-14 10:00:52.390975: I tensorflow/stream_executor/platform/default/dso_loader.cc:42]成功打開動態庫 libcudnn.so.7 2019-10-14 10:00:52.390980: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1663] 無法打開一些 GPU 庫。 跳過注冊 GPU 設備... 2019-10-14 10:00:52.390990: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1181] 具有強度 1 邊緣矩陣的設備互連 StreamExecutor:2019-10-14 10:00 :52.390994:I tensorflow/core/common_runtime/gpu/gpu_device.cc:1187] 0 2019-10-14 10:00:52.390998:I tensorflow/core/common_runtime/gpu/gpu_device.cc:1200] 0:N [名稱: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456 locality {} incarnation: 17281747132467712783, name: "/device:XLA_GPU:0" device_type: "XLA_GPU" memory_limit: 17179869184 locality {} incarnation: 3885020928921318 物理_設備“設備:XLA_GPU 設備”,名稱:“/device:XLA_CPU:0”設備類型:“XLA_CPU”內存限制:17179869184 位置 {} 化身:15667518323180153095 物理設備描述:“設備:XLA_CPU 設備”]

有趣的是,當我運行這些命令時,python 進程出現在 NVIDIA-SMI 監視器中。

我在這里想念什么?

從您的日志中:

無法 dlopen 庫“libcudart.so.10.0”; dlerror:libcudart.so.10.0:無法打開共享 object 文件:沒有這樣的文件或目錄;

你安裝了CUDA 10.1 但是TF-GPU需要CUDA 10.0,所以你需要安裝它(不需要卸載10.1一個,它們可以共存)

最近我向朋友發送了使用 conda 安裝 cuda 和 tf-gpu 的說明(因為這很快) - 在互聯網上搜索了一段時間后,我的協議是這樣的:

##########################
# Install Miniconda
##########################

mkdir -p ~/install
cd ~/install
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# I guess on a mac you should do
# wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

#########################
# install nvidia driver
# so these are the linux (ubuntu) commands
# for mac, maybe one should follow the scheme
# removing nvidia drivers first
# and then download newest nvidia driver
# and install it
# and reboot
#
# If you are using a laptop without gpu, just skip this block
#########################

sudo apt purge nvidia-*   # remove all nvidia driver first

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt install nvidia-driver-418

sudo apt install nvidia-cuda-toolkit

# reboot
sudo reboot

#########################
# install machine learning stuff keras tensorflow-gpu
#
# if you are installing in a laptop without gpu,
# replace 'tensorflow-gpu' by 'tensorflow'!
#########################

conda create --name keras
conda activate keras
conda install python ipython jupyter pandas scipy seaborn scikit-learn tensorflow-gpu keras pytest openpyxl graphviz


#########################
# finally, test a successful installation by:
# entering:
ipython # and there trying:

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

# should list gpu
# sth like:

physical_device_desc: "device: 0, name: GeForce GTX 1050 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1"
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 14085000268159177816
physical_device_desc: "device: XLA_GPU device"
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM