尽管已安装Tensorflow-gpu,我的脚本似乎并未在GPU上执行

时间:2019-10-14 08:03:15

标签: python tensorflow

我有一台安装了cuda 10.1和tensorflow和tensorflow gpu 1.14.0的机器。我正在运行在virtualenv中训练CNN的python脚本。我在源代码中指示要使用GPU,如下所示:

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

但是,当我运行脚本时,培训时期要花很多时间才能完成。这是我的nvidia-smi的输出:

enter image description here

我认为很奇怪的是,为什么GPU利用率如此之低以及为什么我的python脚本没有出现在进程列表中。这是我尝试过的一些命令的输出:

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

输出为

  

2019-10-14 09:53:12.674719:我   tensorflow / core / platform / cpu_feature_guard.cc:142]您的CPU支持   TensorFlow二进制文件未编译使用的指令:AVX2   FMA 2019-10-14 09:53:12.679047:我   tensorflow / stream_executor / platform / default / dso_loader.cc:42]   成功打开动态库libcuda.so.1 2019-10-14   09:53:12.784993:我   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:我   tensorflow / core / platform / profile_utils / cpu_utils.cc:94] CPU频率:   3600000000 Hz 2019-10-14 09:53:12.807345:我   tensorflow / compiler / xla / service / service.cc:168] XLA服务   0x55f15605dfc0在平台主机上执行计算。设备:   2019-10-14 09:53:12.807408:我   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:我   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:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:53:12.809313:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcublas.so.10.0'; dlerror:libcublas.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:53:12.809481:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcufft.so.10.0'; dlerror:libcufft.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:53:12.809531:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcurand.so.10.0'; dlerror:libcurand.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:53:12.809572:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcusolver.so.10.0'; dlerror:   libcusolver.so.10.0:无法打开共享库文件:无此文件或   目录; LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:53:12.809611:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcusparse.so.10.0'; dlerror:   libcusparse.so.10.0:无法打开共享库文件:无此文件或   目录; LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:53:12.811997:我   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]无法dlopen   一些GPU库。跳过注册GPU设备的注册... 2019-10-14   09:53:12.812059:我   tensorflow / core / common_runtime / gpu / gpu_device.cc:1181]设备   将StreamExecutor与强度1边缘矩阵互连:2019-10-14   09:53:12.812067:我   tensorflow / core / common_runtime / gpu / gpu_device.cc:1187] 0   2019-10-14 09:53:12.812072:我   tensorflow / core / common_runtime / gpu / gpu_device.cc:1200] 0:N设备   映射:/ job:localhost /副本:0 /任务:0 /设备:XLA_GPU:0->设备:   XLA_GPU设备/ job:localhost /副本:0 /任务:0 /设备:XLA_CPU:0->   设备:XLA_CPU设备2019-10-14 09:53:12.812372:I   tensorflow / core / common_runtime / direct_session.cc:296]设备映射:   / job:本地主机/副本:0 /任务:0 /设备:XLA_GPU:0->设备:XLA_GPU   设备/作业:本地主机/副本:0 /任务:0 /设备:XLA_CPU:0->设备:   XLA_CPU设备

我尝试过的其他命令是

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

输出为

  

2019-10-14 09:55:52.398317:我   tensorflow / stream_executor / cuda / cuda_gpu_executor.cc:1005]成功   从SysFS读取的NUMA节点的值为负(-1),但必须存在   至少一个NUMA节点,因此返回NUMA节点为零2019-10-14   09:55:52.399249:我   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:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcudart.so.10.0'; dlerror:libcudart.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:55:52.399399:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcublas.so.10.0'; dlerror:libcublas.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:55:52.399437:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcufft.so.10.0'; dlerror:libcufft.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:55:52.399475:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcurand.so.10.0'; dlerror:libcurand.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:55:52.399509:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcusolver.so.10.0'; dlerror:   libcusolver.so.10.0:无法打开共享库文件:无此文件或   目录; LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:55:52.399544:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcusparse.so.10.0'; dlerror:   libcusparse.so.10.0:无法打开共享库文件:无此文件或   目录; LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   09:55:52.399552:我   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]无法dlopen   一些GPU库。跳过注册GPU设备的注册... 2019-10-14   09:55:52.402143:我   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())

具有以下输出

  

2019-10-14 10:00:52.389511:我   tensorflow / stream_executor / cuda / cuda_gpu_executor.cc:1005]成功   从SysFS读取的NUMA节点的值为负(-1),但必须存在   至少一个NUMA节点,因此返回NUMA节点为零2019-10-14   10:00:52.390582:我   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:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcudart.so.10.0'; dlerror:libcudart.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   10:00:52.390811:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcublas.so.10.0'; dlerror:libcublas.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   10:00:52.390854:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcufft.so.10.0'; dlerror:libcufft.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   10:00:52.390897:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcurand.so.10.0'; dlerror:libcurand.so.10.0:   无法打开共享对象文件:没有这样的文件或目录;   LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   10:00:52.390934:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcusolver.so.10.0'; dlerror:   libcusolver.so.10.0:无法打开共享库文件:无此文件或   目录; LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   10:00:52.390968:我   tensorflow / stream_executor / platform / default / dso_loader.cc:53]可以   不是dlopen库'libcusparse.so.10.0'; dlerror:   libcusparse.so.10.0:无法打开共享库文件:无此文件或   目录; LD_LIBRARY_PATH:   / usr / local / cuda / lib64:/ usr / local / cuda / extras / CUPTI / lib64:2019-10-14   10:00:52.390975:我   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]无法dlopen   一些GPU库。跳过注册GPU设备的注册... 2019-10-14   10:00:52.390990:我   tensorflow / core / common_runtime / gpu / gpu_device.cc:1181]设备   将StreamExecutor与强度1边缘矩阵互连:2019-10-14   10:00:52.390994:我   tensorflow / core / common_runtime / gpu / gpu_device.cc:1187] 0   2019-10-14 10:00:52.390998:我   tensorflow / core / common_runtime / gpu / gpu_device.cc:1200] 0:N [名称:   “ / device:CPU:0” device_type:“ CPU” memory_limit:268435456位置{   }化身:17281747132467712783,名称:“ / device:XLA_GPU:0”   device_type:“ XLA_GPU” memory_limit:17179869184位置{}   化身:3885020928213180904 physical_device_desc:“设备:   XLA_GPU设备”,名称:“ / device:XLA_CPU:0” device_type:“ XLA_CPU”   memory_limit:17179869184位置{}化身:   15667518323180153095 physical_device_desc:“设备:XLA_CPU设备”]

有趣的是,当我运行这些命令时,python进程出现在NVIDIA-SMI监视器中。

我在这里想念什么?

2 个答案:

答案 0 :(得分:1)

从您的日志中:

  

无法dlopen库'libcudart.so.10.0'; dlerror:libcudart.so.10.0:无法打开共享对象文件:没有这样的文件或目录;

您安装了CUDA 10.1,但TF-GPU需要CUDA 10.0,因此您需要安装CUDA(无需卸载10.1,它们可以共存)

答案 1 :(得分: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"
]