当 torch 找不到 cuda 时如何修复,错误:版本 libcublasLt.so.11 未在具有链接时间参考的文件 libcublasLt.so.11 中定义?

问题描述 投票:0回答:6

我在导入 pytorch 时遇到此错误

python -c "import torch"

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/afs/cs.stanford.edu/u/brando9/ultimate-utils/ultimate-utils-proj-src/uutils/__init__.py", line 13, in <module>
    import torch
  File "/dfs/scratch0/brando9/miniconda/envs/metalearning_gpu/lib/python3.9/site-packages/torch/__init__.py", line 191, in <module>
    _load_global_deps()
  File "/dfs/scratch0/brando9/miniconda/envs/metalearning_gpu/lib/python3.9/site-packages/torch/__init__.py", line 153, in _load_global_deps
    ctypes.CDLL(lib_path, mode=ctypes.RTLD_GLOBAL)
  File "/dfs/scratch0/brando9/miniconda/envs/metalearning_gpu/lib/python3.9/ctypes/__init__.py", line 382, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /dfs/scratch0/brando9/miniconda/envs/metalearning_gpu/lib/python3.9/site-packages/torch/lib/../../nvidia/cublas/lib/libcublas.so.11: symbol cublasLtHSHMatmulAlgoInit, version libcublasLt.so.11 not defined in file libcublasLt.so.11 with link time reference

如何修复它?

相关:

pytorch cuda
6个回答
53
投票

如eval所说,是因为pytorch1.13自动安装了nvidia_cublas_cu11、nvidia_cuda_nvrtc_cu11、nvidia_cuda_runtime_cu11和nvidia_cudnn_cu11。虽然我已经安装了自己的 CUDA 工具包,但我遇到了同样的问题。

就我而言,我使用了

pip uninstall nvidia_cublas_cu11
并解决了问题。 我认为 PyTorch 团队应该解决这个问题,因为用户通常会安装自己的 CUDAtoolkit。


27
投票

错误来自

.../python3.9/site-packages/torch/lib/nvidia/cublas/lib/
的dlopen libcublas.so,这是pip包“nvidia-cuda-runtime”安装位置。

libcublasLt.so.11
动态链接到
libcublas.so.11
。问题是当你有一个不同的 cuda 运行时安装(通常在 /usr/local/cuda 中)时,dlopen 可能会得到错误的安装。可以运行
ldd .../python3.9/site-packages/torch/lib/nvidia/cublas/lib/libcublas.so
查看
libcublasLt.so.11
的实际路径,应该是
.../python3.9/site-packages/torch/lib/nvidia/cublas/lib/

下的那个

解决方法:

  1. 启动 python 时设置 env

    LD_LIBRARY_PATH=.../python3.9/site-packages/torch/lib/nvidia/cublas/lib/:$LD_LIBRARY_PATH
    。这样 dlopen 可以首先在该目录中查找 .so 文件。

  2. 使用旧手电筒。自从 1.13.0 torch pip install 开始使用 pip nvidia-* 包。在此之前,cuda 库是静态链接的。这就是为什么即使您已经安装了现有的 cuda,旧的 torch pip 安装也没有问题。


12
投票

我不知道为什么这行得通,但这对我有用:

source cuda11.1
# To see Cuda version in use
nvcc -V
pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html

但是如果你查看 git 问题,这些也可能有效:

conda install -y -c pytorch -c conda-forge cudatoolkit=11.1 pytorch torchvision torchaudio

pip3 install torch+cu111 torchvision torchaudio -f https://download.pytorch.org/whl/torch_stable.html

我认为 conda 看起来是最强大的,因为您可以准确指定所需的 cudatoolkit,所以我推荐那个。


2
投票

我想使用 yolov7 解决图像检测问题,我安装了 yolov7 提供的默认依赖项https://github.com/WongKinYiu/yolov7/blob/main/requirements.txt,但是当我什至尝试查看帮助手册我得到了这个错误

OSError: .../yolov7_env/lib/python3.8/site-packages/torch/lib/../../nvidia/cublas/lib/libcublas.so.11: undefined symbol: cublasLtGetStatusString, 版本 libcublasLt.so .11

然后我尝试使用以下命令安装一些其他依赖项:

pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113
这就是我解决问题的方法。


0
投票

在我的例子中,我在一个只有 cpu 的计算上运行,这个问题在安装 cpu 版本的 PyTorch 时得到了解决。例如:http://download.pytorch.org/whl/cpu/torch-1.13.0%2Bcpu-cp39-cp39-linux_x86_64.whl


0
投票

在我的例子中,错误发生在 conda env 中,这是因为 conda env 找不到 cuda 安装。我实际上是通过卸载系统上的 CUDA 工具包来解决它的,这样 conda env 就可以使用它自己的工具包了。

© www.soinside.com 2019 - 2024. All rights reserved.