我有一台安装了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的输出:
我认为很奇怪的是,为什么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监视器中。
我在这里想念什么?
答案 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"
]