一、背景
跑一个18年Tensorflow的项目(中文、闽南语语音合成),报错ImportError: libcublas.so.9.0: cannot open shared object file: No such file,查询后,原因是CUDA版本不匹配导致,详见,于是安装CUDA9.0。
二、安装CUDA 9.0
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
下载地址:CUDA Toolkit Archive | NVIDIA Developer找到9.0下载,下载后是cuda_9.0.176_384.81_linux.run,然后sh cuda_9.0.176_384.81_linux.run命令
进行安装。
注意:默认安装路径是/usr/local/cuda-9.0,当然也可以自定义,安装到自己文件夹下面去,之后在.bashrc中配置好就行。
图片来自此博客
安装完以后CUDA-9.0文件夹下
三、安装CUDA9.0对应版本的cuDNN
cuDNN是一个对于深度神经网络的CPU计算库。
下载地址:cuDNN Archive | NVIDIA Developer
找到对应版本下载后是cudnn-9.0-linux-x64-v7.5.0.56.tgz
用命令tar zxvf xxxx.tgz解压,默认解压的文件夹名字叫cuda,里面内容有
下面就是将cuDNN里面的包拷贝到CUDA-9.0里面去
cp 复制的文件地址 复制到哪里去的地址
cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*
其中/usr/local/要换成你的地址,我就是/home/xxx/CUDA-9.0。注意,~能表示/home/你的用户文件夹/ 地址。 要是有root权限那就cp命令前加上sudo,其他命令也类似。root权限需要管理员开。
四、配置.bashrc文件
vi ~/.bashrc
打开后按i(insert),在最下方输入代码
export CUDA_HOME="$HOME/cuda11.2"export PATH="$CUDA_HOME/bin:$PATH"export LD_LIBRARY_PATH="$CUDA_HOME/lib64:$LD_LIBRARY_PATH"export LD_LIBRARY_PATH="$CUDA_HOME/extras/CUPTI/lib64:$LD_LIBRARY_PATH"
最后一句是 tensorflow 要求的,它需要 cuda 的 CUPTI 库
然后按ESC :wq!进行保存退出,
输入source ~/.bashrc激活环境配置文件
五、输入nvcc -V查看当前cuda版本
注意V必须大写,小写都不行
六、gcc安装
为什么要装gcc?gcc是编译用的,Ubuntu18自带的gcc是7,但是7并不跟CUDA9.0兼容,查询了此处gcc与CUDA的关系博客,发现我的gcc必须用6。注意,安装gcc必须得有root权限。
命令先用 sudoapt install gcc-6
和 sudoapt install g++-6
安装 gcc,然后用以下命令把 gcc-6 设为默认
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 100 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50
七、总结
1、CUDA机器可以装多个,但就是你配置文件.bashrc中配置的哪个就调用哪个
2、cuDNN装与CUDA版本配套的即可
3、gcc同样可以有多个版本共存,就是通过命令设置默认使用的gcc编译器的版本
4、因为代码是18年的,我装了1.8.0gpu版本的Tensorflow,然后重新跑程序,成功。
八、项目问题
1.运行中报错,TypeError: get_pinyin() got an unexpected keyword argument ‘show_tone_marks’
解决办法,里面的依赖包xpinyin版本高,18年左右大家用的版本是0.5.5,详细版本看这里
2.项目里面我的python用的3.6,Tensorflow-gpu==1.8.0
3.依赖包里面有一个包是yaml,安装应当是pip install pyyaml
参考:
1.Linux下非root用户安装多版本CUDA(超详细)_今天以后。。。的博客-CSDN博客_非root用户安装cuda
2.实验室内部gitee的资料
3.ubuntu查看系统版本_三颗草丶的博客-CSDN博客_ubuntu 查看版本
4.tensorflow 各版本_问简的博客-CSDN博客_tensorflow版本
5.tensorflow版本及其对应环境_虎大猫猫的博客-CSDN博客_tensorflow版本