首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法加载动态库'libcudart.so.11.0';

无法加载动态库'libcudart.so.11.0';
EN

Stack Overflow用户
提问于 2022-02-03 07:59:47
回答 3查看 32.2K关注 0票数 7

我试图在GPU中使用Tensorflow 2.7.0,但我经常遇到同样的问题:

代码语言:javascript
运行
复制
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版本,这正是我唯一想要的版本。另外,如果我试图跑:

代码语言:javascript
运行
复制
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输出:

代码语言:javascript
运行
复制
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.156.00   Driver Version: 450.156.00   CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+

nvcc

代码语言:javascript
运行
复制
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
EN

回答 3

Stack Overflow用户

发布于 2022-02-17 18:07:07

首先:可以找到"libcudart.so.11.0“在错误堆栈中丢失的位置,可以用下面的单词替换"libcudart.so.11.0”:

代码语言:javascript
运行
复制
sudo find / -name 'libcudart.so.11.0'

在我的系统中输出。这个结果显示了"libcudart.so.11.0“在系统中的位置:

代码语言:javascript
运行
复制
/usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudart.so.11.0

如果结果显示什么都没有,请确保您已经安装了cuda或其他必须安装在系统中的人员。

第二个,将路径添加到环境文件中。

代码语言:javascript
运行
复制
# 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

您也可以参考这个链接

你可以尝试的第三件事是:

代码语言:javascript
运行
复制
conda install cudatoolkit
票数 6
EN

Stack Overflow用户

发布于 2022-03-06 19:23:59

为tf2.8安装cuda 11.3和cudn8.2.1的正确版本。基于这个博客,https://www.tensorflow.org/install/source#gpu使用以下命令。

  • conda卸载cudatoolkit
  • conda安装cudnn

然后导出LD路径-动态链接加载器路径后,通过该sudo find / -name 'libcudnn'系统找到所需的库,并使用GPU进行培训。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/usr/miniconda3/envs/tf2/lib/

希望能帮上忙。

票数 2
EN

Stack Overflow用户

发布于 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文档添加了调试代码片段。

代码语言:javascript
运行
复制
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没有在系统范围内安装。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70967651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档