Ubuntu18.4+cuda9+cudnn7.3+tensorflow用pycharm运行
实验室电脑不支持cuda,于是乎打算在笔记本上搭建一个tensorflow GPU的环境,结果不停的踩坑,坑到我怀疑人生。现在cuda最新版本是10.0,别以为新版本就好,千万不能装这个,目前tensorflow1.11 也只支持9.0。别问我怎么知道的,一把辛酸泪。网上资料很多,但是我这个相对比较方便,适合小白入门。
更新:
刚刚检查了一下tensorflow1.11.0版本,发现更适合cuDNN7.2,下载7.2比7.3更好。
1、获取root权限
在安装之前,先得取得用户权限,后面一些插件或者文件修改可能需要root权限
sudo passwd root #直接设置root密码,获得用户权限
如下:
Enter new UNIX password: (输入密码)
Retype new UNIX password: (输入密码)
passwd: password updated successfully
su root #输入密码,进入root模式
提示:
Password: (输入root密码)
然后点击回车(密码正常不显示,输入后直接回车即可),终端前的账户会变为root@ubunt
注意,先退出root模式再进行后面的安装,不然安装位置是/root下的位置,而不是默认/usr下的位置。root下安装和设置路径都和普通模式有区别,总之先普通模式下安装,在装不上软件或者改不了数据时才用root。
2、安装支持环境
- 安装支撑环境JDK8(安装pycharm也需要这个):
依次执行以下几条:
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
安装过程中会跳出Oracle license对话框,选择接受就是了。
安装完成后,运行"java -version"或者"javac -version"查看是否安装成功。如果得到类似如下的输出,表明安装成功了。普通安装不成功,就在root模式下装。
java version 1.8.0181
- 安装bazel(cuda需要)
在包资源中增加Bazel的发布源
echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
安装和更新Bazel
sudo apt-get update
sudo apt-get install bazel
sudo apt-get upgrade baze
3.安装NVIDIA
可以用命令
ubuntu-drivers devices # 查看推荐的驱动版本
选择合适驱动。注意安装显卡驱动版本需要比cuda9.0默认的384高。
方法一:直接用代码安装NVIDIA
sudo apt-get install nvidia-driver-390 # 我的推荐版本是390,根据自己的推荐版本来
nvidia-smi # 测试是否安装成功。出现显卡信息即表示成功
方法二:找到软件更新器(推荐)
在软件菜单找到软件更新器——设置——附加驱动——NVIDIA最新驱动——应用更改。
后面安装cuda和cudnn时,最好把下载的文件都放在一个文件夹里面,方便操作。
4、安装cuda9.0
-
在官网下载cuda9.0,同时还有4个补丁,一起下载,我下载的是run格式。18.4可以用16.4的版本。
(https://developer.nvidia.com/cuda-90-download-archive)
-
由于CUDA 9.0仅支持GCC 6.0及以下版本,而Ubuntu 18.04预装GCC版本为7.3,故手动安装gcc-6与g++ -6:
sudo apt-get install gcc-6 g++-6
- 之后切换至/usr/bin目录修改符号链接,使GCC 6成为默认使用版本:
cd /usr/binsudo rm gccsudo ln -s gcc-6 gccsudo rm g++sudo ln -s g++-6 g++
- 安装:
找到下载的cuda文件,在该目录进行操作,为CUDA 9.0安装包赋予运行权限并运行之:
sudo chmod 775 cuda_9.0.176_384.81_linux.run
sudo sh cuda_9.0.176_384.81_linux.run # 安装cuda9.0
sudo sh cuda_9.0.176_1_linux.run # 安装补丁1,同样方法安装安装补丁2,3,4,
注意:安装时会出现介绍信息,如果出现很多信息,按q退出介绍,进行安装。
第一个问accept,除了询问是否安装NVIDIA-384这个选项(一般是第二或第三个问)选择n,其他选项y,或者回车
默认安装目录为::/usr/local/cuda-9.0/
5. 环境变量设置
sudo gedit ~/.bashrc # 注意在root和非root环境下打开的bashrc不一样
添加环境变量,可以直接复制粘贴在文件的最后,注意格式一定要和我一样,我之前输的是其他形式的,不能用。
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
export PATH=$PATH:/usr/local/cuda-9.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-9.0
让环境变量立即生效
source ~/.bashrc
通过echo命令测试一下:
echo $PATH # 显示当前环境变量
- 测试是否安装正确
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
cd ../bandwidthTest
sudo make
./bandwidthTest
结果为Result = PASS 则安装正确。
注意,千万别用 nvcc -v 进行检查,明明已经安装好了,还一直报错。
5、安装cudnn
- 在官网上下载cudnn7.3.1版本
下载
注意:需要注册才能下
- 安装cudnn
解压,然后输入
sudo nautilus # 只有在这个模式下才能进行所有文件的复制粘贴
直接找到cudnn解压之后的文件cuda,里面有两个文件夹,直接合并到/usr/local/cuda-9.0/里面去。
ok,安装成功。
6、安装pycharm及tensorflow运行
- 安装pycharm方法自己百度
注意 sh格式安装的,root下安装和非root下安装不通用。 - 安装tensorflow
直接命令安装:
sudo pip3 install --upgrade pip
sudo apt-get install python3-pip python3-dev
pip3 install tensorflow-gpu
- 运行pycharm
测试代码:
import tensorflow as tf
hello = tf.constant('hello, Tensorflow!')
sess = tf.Session()
print(sess.run(hello)
然后一般都会报错:
ImportError: libcublas.so.9.0: cannot open shared object file: No such file...
我之前一直以为是没安装成功,或者是cuda路径没对,重装了一次系统也没解决,最后百度了很久才发现,linux系统下pycharm需要设置路径:
打开pycham run->Edit Configurations;设置环境变量(Enviroment variables):LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64(注意自己cuda安裝的路径)
现在在运行就不会报错了
- 补充
环境变量设置好以后,还是报错,可以试一下一下代码,添加软路径:
sudo ln -s /usr/local/cuda-9.1/lib64/libcublas.so.9.1 /usr/lib/libcublas.so.9.1
sudo ln -s /usr/local/cuda-9.1/lib64/libcusolver.so.9.1 /usr/lib/libcusolver.so.9.1
sudo ln -s /usr/local/cuda-9.1/lib64/libcudart.so.9.1 /usr/lib/libcudart.so.9.1
sudo ln -s /usr/local/cuda-9.1/lib64/libcudnn.so.7 /usr/lib/libcudnn.so.7
sudo ln -s /usr/local/cuda-9.1/lib64/libcufft.so.9.1 /usr/lib/libcufft.so.9.1
sudo ln -s /usr/local/cuda-9.1/lib64/libcurand.so.9.1 /usr/lib/libcurand.so.9.1
好了,大功告成,为了安装这个花了我两三天时间,第一次装了cuda10,第二次在nvcc -v处被坑,第三次在设置环境变量和pycharm路径处被坑,以为没装对,一共重装了三次系统,特意写出来,让大家少被坑。