Tensorflow 2.3 和 libcublas.so.10

Lu_*_*err 5 python tensorflow

根据官方文档,在 Tensorflow 2.3中支持 CUDA 10.1

我有 Ubuntu 20.04、板载 GPU、CUDA 10.1 和 CUDNN 7.6

开始使用 Tensorflow (2.3) 时出现错误: 无法加载动态库“libcublas.so.10”;dlerror: libcublas.so.10: 无法打开共享对象文件:没有那个文件或目录;LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64

调查的几个小时后,事实证明,在CUBLAS CUDA 10.1包装改为外面包安装路径

/usr/local/cuda-10.1/lib64
Run Code Online (Sandbox Code Playgroud)

见这里:https : //forums.developer.nvidia.com/t/cublas-for-10-1-is-missing/71015/16

就我而言,我搜索了

sudo find /usr -name libcublas*
Run Code Online (Sandbox Code Playgroud)

并成立:

            /usr/share/doc/libcublas-dev
            /usr/share/doc/libcublas10
            /usr/local/cuda-10.1/doc/man/man7/libcublas.so.7
            /usr/local/cuda-10.1/doc/man/man7/libcublas.7
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublas.so.10.2.2.214
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublasLt.so.10.2.2.214
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/stubs/libcublasLt.so
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/stubs/libcublas.so
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublas.so.10
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublas_static.a
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublasLt.so
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublasLt_static.a
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublasLt.so.10
            /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublas.so
Run Code Online (Sandbox Code Playgroud)

然后,按照使用符号链接(在 nvdia 站点中创建)的解决方法的一些建议,我为上面创建的文件创建了一个符号链接,指向:

sudo ln -s /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublas.so /usr/local/cuda-10.1/lib64/libcublas.so
sudo ln -s /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10
Run Code Online (Sandbox Code Playgroud)

即使在符号链接之后,错误仍然存​​在:

无法加载动态库“libcublas.so.10”;dlerror: libcublas.so.10: 无法打开共享对象文件:没有那个文件或目录;LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64

与我nano ~/.profile包含:

# set PATH for cuda 10.1 installation
if [ -d "/usr/local/cuda-10.1/bin/" ]; then
    export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
fi
Run Code Online (Sandbox Code Playgroud)

我还想尝试从cuda_10.1.168_418.67_linux.run文件中可用的工具包中手动获取文件,如此处建议的那样 但发现建议的命令不起作用。我调整为命令:

sh cuda_10.1.168_418.67_linux.run --extract=/extracted
Run Code Online (Sandbox Code Playgroud)

最终确定消息时会发生 KO .. 无法验证 gcc 版本。有关详细信息,请参阅 /tmp/cuda-installer.log 中的日志。

如果只有提取可以工作,也许文件的手动副本可以省去所有的麻烦。

Tensorflow官方文档中似乎没有记录这个cublas步骤,用于安装CUDA 10.1

任何的想法 ?

Ped*_*ben 5

我遇到了同样的问题,感谢您的提问。我使用了符号链接方法,但为libcublasLt.so.10.

$ sudo ln -s /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublas.so /usr/local/cuda-10.1/lib64/libcublas.so
$ sudo ln -s /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10
$ sudo ln -s /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublasLt.so.10 /usr/local/cuda-10.1/lib64/libcublasLt.so.10
Run Code Online (Sandbox Code Playgroud)


小智 0

在bashrc中添加CUDA 10.2的路径:

export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
Run Code Online (Sandbox Code Playgroud)

这应该足够了。