python-3.x Tensorflow 2.12 -无法在WSL 2中加载库libcudnn_cnn_infer. so. 8

jyztefdp  于 2023-04-22  发布在  Python
关注(0)|答案(1)|浏览(269)

我已经在Windows 10中安装了WSL 2(Ubuntu 22.04内核),在Miniconda环境(Python 3.9.16)下安装了Tensorflow 2.12Cuda Toolkit 11.8.0cuDNN8.6.0.163,正常情况下和www.example.com官方tensorflow.org。在这里我需要强调的是,我想使用Tensorflow 2。12因为与相应的Cuda Toolkit 11.8.0兼容Ada Lovelace GPU(我的情况是RTX 4080)。
当我去训练我的模型时,它给了我以下错误:

"Loaded cuDNN version 8600 Could not load library libcudnn_cnn_infer.so.8. Error: libcuda.so : cannot open shared object file: No such file or directory".

有没有什么想法是错的 *?
路径配置如下:

mkdir -p $CONDA_PREFIX/etc/conda/activate.d
echo 'CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh

使用以下命令搜索引用我的错误的文件:

  • ldconfig -p | grep libcudnn_cnn,但它没有返回任何内容,因此文件不存在,并且
  • ldconfig -p | grep libcuda,其中返回libcuda.so.1 (libc6,x86-64) => /usr/lib/wsl/lib/libcuda.so.1

另外,我尝试设置新的环境变量并将其包含到$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh中,但没有任何运气:

export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH

*请注意,在导入Tensorflow时,我收到以下警告:

  • TF-TRT Warning: Could not find TensorRT
could not open file to read NUMA node:
    /sys/bus/pci/devices/0000:1c:00.0/numa_node Your kernel may have been built without NUMA support.

此外,尝试遵循NVIDIA Documentation for WSL,具体在第3节-〉选项1中,但这并不能解决问题。

w8ntj3qf

w8ntj3qf1#

碰到了这个问题,经过大量的挖掘后找到了一个工作解决方案。
首先,缺失的libcuda.so可以通过这里提出的方法求解:https://github.com/microsoft/WSL/issues/5663#issuecomment-1068499676
在CUDA lib目录中重建符号链接:

> cd \Windows\System32\lxss\lib
> del libcuda.so
> del libcuda.so.1
> mklink libcuda.so libcuda.so.1.1
> mklink libcuda.so.1 libcuda.so.1.1

(this在管理员提升的命令提示符shell中完成)
然后,当你遇到丢失设备的问题时(你无疑会遇到),通过以下方式解决它:https://github.com/tensorflow/tensorflow/issues/58681#issuecomment-1406967453
归结起来就是:

$ mkdir -p $CONDA_PREFIX/lib/nvvm/libdevice/
$ cp -p $CONDA_PREFIX/lib/libdevice.10.bc $CONDA_PREFIX/lib/nvvm/libdevice/
$ export XLA_FLAGS=--xla_gpu_cuda_data_dir=$CONDA_PREFIX/lib

然后呢

$ conda install -c nvidia cuda-nvcc --yes

(通过ptxas --version验证)
如果你在VSCode远程WSL中运行笔记本,那么你需要将export XLA_FLAGS=--xla_gpu_cuda_data_dir=$CONDA_PREFIX/lib添加到/$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh(无论如何,这是一个很好的实践)

相关问题