zoukankan      html  css  js  c++  java
  • ubuntu下tensorflow 报错 libcusolver.so.8.0: cannot open shared object file: No such file or directory

    解决方法1. 在终端执行:

    export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64”
    export CUDA_HOME=/usr/local/cuda 

    但是每次要运行tensorflow时都得执行此命令,而且在Spyder、jupyter notebook中仍然报错。

    解决方法2.  在bashrc中写入路径:

    sudo vim ~/.bashrc
    export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64”
    export CUDA_HOME=/usr/local/cuda
    source ~/.bashrc

    但是这还没解决我的问题。

    解决方法3. 彻底解决

    • 检查LD_LIBRARY_PATH
    echo $LD_LIBRARY_PATH
    

    我的结果: ”:/usr/local/cuda/lib64”

    再执行命令:

    sudo ldconfig /usr/local/cuda/lib64

    问题完美解决,此时不管在终端、Spyder、jupyter notebook中 import tensorflow、import keras都不报错。

     

    export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64”
    export CUDA_HOME=/usr/local/cuda

    ************************************转载************************

    CUDA,CUDNN工具箱多版本安装、多版本切换

    《CUDA,CUDNN工具箱多版本安装、多版本切换》

    前言

    cuda版本最新是10.0。

    但目前最适合我们的则是9.2或者9.1。

    如果我们因为某些原因想同时使用两个版本的话,应该怎么样呢?

    很简单!一起按步骤来吧。

    《CUDA,CUDNN工具箱多版本安装、多版本切换》

    安装cuda和cudnn

    关于具体的安装步骤可以查看这个网址:https://oldpan.me/archives/pytorch-gpu-ubuntu-nvidia-cuda90

    之前已经详细地说明了,不同版本其实也是大同小异,我们唯一需要注意的是,之前已经安装过一个版本,继续安装新版本的时候,我们的设置选择需要稍微修改一下:

    Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 396.80?
    (y)es/(n)o/(q)uit: n            
    #如果在这之前已经安装好更高版本的显卡驱动就不需要再重复安装,如果需要重复安装就选择 yes,注意需要关闭图形界面。
    
    Install the CUDA 9.0 Toolkit?
    (y)es/(n)o/(q)uit: y
    
    Enter Toolkit Location
     [ default is /usr/local/cuda-9.0 ]:
    #一般选择默认即可,也可以选择安装在其他目录,在需要用的时候指向该目录或者使用软连接 link 到 /usr/local/cuda。
    
    Do you want to install a symbolic link at /usr/local/cuda? 
    # 这个看你自己,看当前是想用现在按照的cuda版本还是之前已经安装的cuda版本,这里我选择使用之前的cuda版本
    (y)es/(n)o/(q)uit: n
    --------------------- 
    # 其他设置和之前相同即可
    

    安装过程与之前无异,cudnn放到相应的文件夹中即可。

    修改.bashrc

    安装好两个版本的cuda之后,我们需要修改.bashrc文件,和官方说明的一样,我们在.bashrc文件中添加配置路径,一般来说如果我们按照cuda-9.1需要这样写:

    export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    

    如果我们同时安装了cuda-9.1cuda-9.2的时候,可能想到是这样写:

    export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    
    export PATH=/usr/local/cuda-9.2/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    

    这样写并没有什么问题,因为我们的深度学习库是按照/usr/local/cuda这个链接来进行寻找cuda模块的,只要我们将cuda进行正确的软连接,那么在实际运行中并没有什么问题。

    但是这样并不是很优雅,而且在使用一些其他cuda命令的时候很有可能寻找错误,为此我们将配置文件直接改成如下即可:

    export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    

    这样我们在切换软连接的时候,系统就可以自动根据我们的软连接查找相应的路径了。

    切换软连接

    切换软连接还是比较容易的,按照下方的命令即可:

    # 查看cuda此刻的链接
    prototype@prototype-X299-UD4-Pro:/usr/local$ stat cuda
      File: 'cuda' -> '/usr/local/cuda-9.1'
      Size: 19        	Blocks: 0          IO Block: 4096   symbolic link
    Device: 802h/2050d	Inode: 14288660    Links: 1
    Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-11-29 09:55:32.198913134 +0800
    Modify: 2018-11-29 09:55:04.186653444 +0800
    Change: 2018-11-29 09:55:04.186653444 +0800
     Birth: -
    # 切换cuda-9.1 为 cuda-9.2
    prototype@prototype-X299-UD4-Pro:/usr/local$ sudo ln -s /usr/local/cuda-9.2 /usr/local/cuda
    prototype@prototype-X299-UD4-Pro:/usr/local$ nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2018 NVIDIA Corporation
    Built on Tue_Jun_12_23:07:04_CDT_2018
    Cuda compilation tools, release 9.2, V9.2.148
    # 切换 cuda-9.2 为 cuda-9.1
    prototype@prototype-X299-UD4-Pro:/usr/local$ sudo rm -rf cuda
    prototype@prototype-X299-UD4-Pro:/usr/local$ sudo ln -s /usr/local/cuda-9.1 /usr/local/cuda
    prototype@prototype-X299-UD4-Pro:/usr/local$ nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2017 NVIDIA Corporation
    Built on Fri_Nov__3_21:07:56_CDT_2017
    Cuda compilation tools, release 9.1, V9.1.85
    

    需要注意的小细节

    显卡驱动问题

    注意不同cuda版本对显卡驱动版本的要求也不同。

    对于我的情况来说,如果我想使用cuda-9.1cuda-9.2,那么我就必须安装396.26及以上的Nvidia显卡驱动,如果只满足了390,那么就会出现cuda-9.1可以使用但9.2就检测不到了。

    《CUDA,CUDNN工具箱多版本安装、多版本切换》

    所以安装最新的显卡驱动即可。

    关于怎么安装可以看着这里:https://oldpan.me/archives/ubuntu16-04-nvidia-driver-get-stuck

    编译源码问题

    自己在编译Pytorch最新版的时候发现,cuda-9.1并不支持gcc-7.3的版本(为了体验C++-17的特性,将系统中的gcc进行了更新)。只有cuda-9.2及以上才支持,那么就有两种解决方法:

    • 安装最新的cuda-9.2
    • 切换回gcc-5

    其实切换gcc版本和切换cuda版本都是类似的,我们的系统同样可以安装多个gcc版本,比如我的系统中就存在多个gcc版本,在安装新版本的gcc后并不会删除旧版本,因此我们可以随时切换gcc:

    cd /usr/bin 
    
    prototype@prototype-X299-UD4-Pro:/usr/bin$ gcc
    gcc             gcc-ar          gcc-nm          gcc-ranlib
    gcc-4.9         gcc-ar-4.9      gcc-nm-4.9      gcc-ranlib-4.9
    gcc-5           gcc-ar-5        gcc-nm-5        gcc-ranlib-5
    gcc-7           gcc-ar-7        gcc-nm-7        gcc-ranlib-7
    
    # 切换gcc链接到gcc-7版本
    sudo rm -r gcc        
    sudo ln -sf gcc-7 gcc 
    sudo rm -r g++        
    sudo ln -sf g++-7 g++
  • 相关阅读:
    [BUUOJ记录] [ZJCTF 2019]NiZhuanSiWei
    [BUUOJ记录] [BJDCTF2020]EasySearch
    [BUUOJ记录] [BJDCTF2020]The mystery of ip
    php版本:实现过滤掉广告、色情、政治相关的敏感词
    热门搜索词获取java版
    如何用代码挖局长尾关键词
    几行python代码解决相关词联想
    如何高效的完成中文分词?
    python 脚本撞库国内“某榴”账号
    搜索引擎之全文搜索算法功能实现(基于Lucene)
  • 原文地址:https://www.cnblogs.com/king-lps/p/8521310.html
Copyright © 2011-2022 走看看