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

Cha*_*ker 35 cuda pytorch

我通过 pytorch import 收到此错误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
Run Code Online (Sandbox Code Playgroud)

如何解决它?

有关的:

len*_*nin 93

就像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。


mzh*_*ang 31

该错误来自 dlopen libcublas.so from .../python3.9/site-packages/torch/lib/nvidia/cublas/lib/,这是 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 install 也没有问题。

  • 这个解决方案对我来说就像魅力一样。总而言之,您会发现 libcublasLt.so.11 链接到 `/usr/local/cuda/lib64/`;通过使用 LD_LIBRARY_PATH=`/opt/conda/lib/python3.7/site-packages/nvidia/cublas/lib/:$LD_LIBRART_PATH` 问题已解决。 (9认同)

Cha*_*ker 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
Run Code Online (Sandbox Code Playgroud)

但如果你仔细查看 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
Run Code Online (Sandbox Code Playgroud)

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

  • 有谁能解释为什么这个有效吗?是否有满足 pip 要求的解决方案? (3认同)