我试图在GPU中使用Tensorflow 2.7.0,但我经常遇到同样的问题:
2022-02-03 08:32:31.822484: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /home/username/.cache/pypoetry/virtualenvs/poetry_env/lib/python3.7/site-packages/cv2/../../lib64:/home/username/miniconda3/envs/project/lib/
2022-02-03 08:32:31.822528: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
这个问题在这里已经多次出现&在github上。然而,通常提出的解决方案是: a)下载丢失的CUDA文件;b)降级/升级到正确的CUDA版本;c)设置正确的LD_LIBRARY_PATH
。
我已经使用我的个人电脑与CUDA支持的PyTorch,我没有一个问题那里。我的nvidia-smi
返回11.0版本,这正是我唯一想要的版本。另外,如果我试图跑:
import os
LD_LIBRARY_PATH = '/home/username/miniconda3/envs/project/lib/'
print(os.path.exists(os.path.join(LD_LIBRARY_PATH, "libcudart.so.11.0")))
它返回True
。这正是来自错误消息的LD_LIBRARY_PATH
的一部分,显然,Tensorflow无法看到libcudart.so.11.0
(它就在那里)。
有什么很明显的东西我错过了吗?
nvidia-smi
输出:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.156.00 Driver Version: 450.156.00 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
nvcc
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
发布于 2022-02-17 18:07:07
首先:可以找到"libcudart.so.11.0“在错误堆栈中丢失的位置,可以用下面的单词替换"libcudart.so.11.0”:
sudo find / -name 'libcudart.so.11.0'
在我的系统中输出。这个结果显示了"libcudart.so.11.0“在系统中的位置:
/usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudart.so.11.0
如果结果显示什么都没有,请确保您已经安装了cuda或其他必须安装在系统中的人员。
第二个,将路径添加到环境文件中。
# edit /etc/profile
sudo vim /etc/profile
# append path to "LD_LIBRARY_PATH" in profile file
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.1/targets/x86_64-linux/lib
# make environment file work
source /etc/profile
您也可以参考这个链接
你可以尝试的第三件事是:
conda install cudatoolkit
发布于 2022-03-06 19:23:59
为tf2.8安装cuda 11.3和cudn8.2.1的正确版本。基于这个博客,https://www.tensorflow.org/install/source#gpu使用以下命令。
然后导出LD路径-动态链接加载器路径后,通过该sudo find / -name 'libcudnn'
系统找到所需的库,并使用GPU进行培训。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/usr/miniconda3/envs/tf2/lib/
希望能帮上忙。
发布于 2022-06-27 13:14:39
在带有2个nvidia gpus (1080 it/ titan )的arch上,tensorflow 2.9和cuda 11.7也面临着同样的问题,并解决了这个问题:
并不是绝对有必要尊重兼容性矩阵(Cuda11.7vs11.2,如此次要的高级版本)。但是python 3版本根据tensorflow comp矩阵被降级(3.10到3.7)。请注意,您可以安装多个cuda版本,并通过linux上的符号链接管理它。(赢应该有点不同)
使用conda和python3.7进行安装
sudo pacman -S base-devel cudnn
conda activate tf-2.9
conda uninstall cudatoolkit && conda install cudnn
我还得向gcc汇报另一个问题(离题)。
conda install -c conda-forge gcc=12.1.0
根据tf-gpu文档添加了调试代码片段。
import tensorflow as tf
tf.config.list_physical_devices('GPU')
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))
我现在看到2个gpu被检测到,而不是0,训练时间除以10。nvidia-smi
报告内存使用量最高,电源级别从9W提高到150 W,验证gpu的使用情况(另一个空闲)。
根本原因: cudnn没有在系统范围内安装。
https://stackoverflow.com/questions/70967651
复制相似问题