解决Could not load dynamic library 'libcudart.so.10.0'; dlerror: libcudart.so.10.0: cannot open ...

本文解决在Ubuntu上使用TensorFlow2.0遇到的GPU兼容性问题,详细介绍了如何通过调整CUDA版本来确保GPU支持。作者最初安装了CUDA10.1,但TensorFlow2.0仅支持CUDA10.0。通过使用conda安装cudatoolkit=10.0,成功解决了此问题,并验证了GPU的可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装TensorFlow2.0 GPU版本后,检测是否支持GPU时tf.test.is_gpu_available()出现以下信息:

2019-11-19 02:52:53.934654: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcudart.so.10.0'; dlerror: libcudart.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:
2019-11-19 02:52:53.934856: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcublas.so.10.0'; dlerror: libcublas.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:
2019-11-19 02:52:53.935050: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcufft.so.10.0'; dlerror: libcufft.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:

Out[3]: False

原因:TensorFlow2.0现在支持CUDA10.0,还不支持CUDA10.1,而我的Ubuntu上安装的是CUDA10.1(也正确安装了cuDNN)。现在只需要安装一个CUDA10.1就行。可以仿照安装pytorch时就自动安装cudatoolkit 10.1.243,无需再下载CUDA10.0的包,在Ubuntu上重新安装CUDA10.0,而是直接用conda安装cudatoolkit。因为我的TensorFlow是安装到独立的虚拟环境中的,故执行以下代码即可安装:

(tensorflow2) usr@ubuntu16:~$ conda install cudatoolkit=10.0

conda list一下,发现cudatoolkit=10.0已安装到当前环境下:
在这里插入图片描述
测试一下:

In [1]: import tensorflow as tf
In [2]: tf.test.is_gpu_available()
Out[2]: True
### 关于 CUDA 错误 'Could not load dynamic library libcudart.so.12' 当遇到 `Could not load dynamic library 'libcudart.so.12'` 的错误时,这通常表明系统缺少所需的 CUDA 动态链接库文件或者环境变量配置不正确。以下是可能的原因以及解决方案: #### 可能原因分析 1. **CUDA 版本未安装或版本不符** 如果系统的 CUDA 工具包中不存在 `libcudart.so.12` 文件,则可能是由于当前安装的 CUDA 版本低于 12 或者根本未安装该版本。 2. **路径设置问题** 即使已安装了正确的 CUDA 版本,如果 `$LD_LIBRARY_PATH` 环境变量未包含 CUDA 库所在的目录(通常是 `/usr/local/cuda/lib64/`),也会导致动态链接器无法找到所需库文件。 3. **符号链接缺失** 在某些情况下,虽然存在实际的 `.so` 文件,但如果对应的软链接(symbolic link)未创建,程序仍然会报错提示找不到特定版本的库文件。 --- #### 解决方案 ##### 方法一:确认并安装合适的 CUDA 版本 确保已经安装了支持目标应用程序需求的具体 CUDA 版本 (即至少为 v12.x),可以通过以下命令验证是否存在指定版本的库文件: ```bash ls /usr/local/cuda/lib64 | grep libcudart.so ``` 如果没有发现 `libcudart.so.12.*` 类型的结果,则需下载并安装最新版或兼容性的 CUDA Toolkit[^5]。可以从 NVIDIA 官方网站获取相应版本的安装包,并按照官方文档完成部署。 ##### 方法二:调整 LD_LIBRARY_PATH 配置 检查是否将 CUDA 路径加入到全局共享库搜索范围之内。编辑用户的 shell profile 文件(如 `.bashrc`, `.zshrc` 等),追加如下内容: ```bash export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH ``` 随后重新加载配置文件以生效更改: ```bash source ~/.bashrc ``` ##### 方法三:手动建立必要的符号链接 假如本地已有更高版本的 CUDA runtime (`libcudart.so`) 存在于默认位置下,可以尝试通过创建指向这些现有资源的新别名来解决问题。例如执行下面的操作序列: ```bash cd /usr/local/cuda/lib64/ sudo ln -s libcudart.so.<higher_version> libcudart.so.12 ``` 这里 `<higher_version>` 替代成实际存在的更高级别的编号字符串[^3]。 --- ### 总结 上述方法涵盖了从基础排查至具体修复措施的过程。优先推荐先核实是否有匹配的目标 CUDA 发布版本可用;其次考虑优化运行期依赖解析机制;最后才采取强制映射的方式弥补潜在缺陷。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值