Python Tensorflow 2.3和libcublas.so.10

Python Tensorflow 2.3和libcublas.so.10,python,tensorflow,Python,Tensorflow,根据官方文件,在Tensorflow 2.3中 我有Ubuntu 20.04,GPU板载,CUDA 10.1和CUDNN 7.6 我在开始使用Tensorflow(2.3)时遇到错误: 无法加载动态库'libcublas.so.10'; dError:libcublas.so.10:无法打开共享对象文件:没有此类文件或目录;LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64 经过数小时的调查,CUDA 10.1中的CUBLAS包装已更改为在工具包安装路径之外 /

根据官方文件,在Tensorflow 2.3中

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

我在开始使用Tensorflow(2.3)时遇到错误: 无法加载动态库'libcublas.so.10'; dError:libcublas.so.10:无法打开共享对象文件:没有此类文件或目录;LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64

经过数小时的调查,CUDA 10.1中的CUBLAS包装已更改为在工具包安装路径之外

/usr/local/cuda-10.1/lib64
请看这里:

就我而言,我用

sudo find /usr -name libcublas*
并成立:

            /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
然后,根据使用symlink(创建于nvdia站点)的一些解决方案建议,我为上面创建的文件创建了一个symlink,以:

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
即使在符号链接之后,错误仍然存在:

无法加载动态库'libcublas.so.10';dError: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
我还想尝试手动从cuda_10.1.168_418.67_linux.run文件中提供的工具包中获取文件,但发现建议的命令不起作用。我调整为命令:

sh cuda_10.1.168_418.67_linux.run --extract=/extracted
当最后确定为消息时,该消息将被忽略。。 验证gcc版本失败。有关详细信息,请参阅/tmp/cuda-installer.log上的日志。

如果这种提取方法能奏效的话,也许手动拷贝这些文件就可以省去所有的麻烦

Tensorflow官方文档中似乎没有关于CUDA 10.1安装的cublas步骤的记录


有什么想法吗?

在bashrc中添加CUDA 10.2的路径:

export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
这应该足够了

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
这些不适合解决此问题。
我们应该为CUDA 10.1重新安装与
libcublas
相关的软件包

我已安装了
apt

  • 我的环境。基于英伟达的CUDA回购协议
然后将
libcublas
库移动到
/usr/local/cuda-10.1/

并防止出现可升级的候选者

$ sudo apt-mark hold libcublas10
$ sudo apt-mark hold libcublas-dev

我也有同样的问题,多亏了你的问题才得以解决。我使用了符号链接aproach,但为
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

您已加载/安装CUDA 10.2。你不能用它来代替你的TF安装所期待的CUDA 10.1。谢谢Robert,这是人们可能会怀疑的,但是10.2文件夹的存在只是因为它是10.1附带的:我从来没有安装过10.2,这正是Nvidia决定从10.1安装cublas的方式。命令nvcc--version正在确认:nvcc:NVIDIA(R)Cuda编译器驱动程序版权(c)2005-2019 NVIDIA Corporation构建于Sun_Jul_28_19:07:16_PDT_2019 Cuda编译工具,版本10.1,V10.1.243
$ 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