我尝试将 Tensorflow 2.7.0 与 GPU 结合使用,但我不断遇到同样的问题:
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.
Run Code Online (Sandbox Code Playgroud)
这个问题已经在这里和 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")))
Run Code Online (Sandbox Code Playgroud)
它返回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 |
|-------------------------------+----------------------+----------------------+
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
小智 24
首先: 你能找出“libcudart.so.11.0”在哪里吗?如果你在错误堆栈中丢失了它,你可以用下面的单词替换“libcudart.so.11.0”:
sudo find / -name 'libcudart.so.11.0'
Run Code Online (Sandbox Code Playgroud)
在我的系统中输出。此结果显示“libcudart.so.11.0”在系统中的位置:
/usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudart.so.11.0
Run Code Online (Sandbox Code Playgroud)
如果结果没有显示,请确保您的系统中已经安装了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
Run Code Online (Sandbox Code Playgroud)
您也可以参考这个链接
您可以尝试的第三件事是:
conda install cudatoolkit
Run Code Online (Sandbox Code Playgroud)
为 tf2.8 安装正确版本的 cuda 11.3 和 cudnn 8.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/
希望有帮助。
| 归档时间: |
|
| 查看次数: |
115262 次 |
| 最近记录: |