ubuntu16.04 通过anaconda建立虚拟环境,安装tensorflow1.10,cuda9.0,cudnn7.1.2
1.anaconda建立虚拟环境及conda操作
//env_name代表你想要建立的环境名字,-n表示名字
conda create -n ${env_name} python=3.5
//**环境
source activate ${env_name}
//退出环境
source deactivate
//删除环境
conda remove -n ${env_name} --all
//查看conda环境
conda info --env
//查看conda的安装包
conda list
2.安装tensorflow,cuda,cudnn
本身tensorflow的安装很简单,只需要pip或者conda就好,但是必须找到tensorflow,cuda,cudnn的对应关系。
Version Python version Compiler Build tools cuDNN CUDA
tensorflow_gpu-1.11.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.9.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.11.0 7 9
tensorflow_gpu-1.8.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.10.0 7 9
tensorflow_gpu-1.7.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.6.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.5.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.8.0 7 9
tensorflow_gpu-1.4.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.5.4 6 8
tensorflow_gpu-1.3.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.4.5 6 8
tensorflow_gpu-1.2.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.4.5 5.1 8
tensorflow_gpu-1.1.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.4.2 5.1 8
注意,例如cuda9.0,cudnn尽量选择7.0*或者7.1,不然或许会有问题
(1)tensorflow的安装:
//注意必须到当前虚拟环境
pip install tensorflow-gpu==1.10
conda install tensorflow-gpu=1.10
(2)cuda与cudnn的安装(使用conda)
使用conda安装cuda和cudnn可以保证不影响系统默认环境的cuda和cudnn
因为conda的默认源速度慢且没有cuda版本,因此需要添加国内清华或者中科大的源
//终端加入
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
//或者直接打开文件加入
sudo gedit ~/.condarc
//安装cuda
conda install cudatoolkit=9.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/
//安装cudnn
conda install cudnn=7.1.2
(3)cuda安装的另一方式
如果不想通过conda安装,可以通过源文件进行安装,安装方式见https://mp.csdn.net/postedit/81183063
找到对应的cuda和cudnn版本,下载后进行安装,因为系统中可能存在不同版本的cuda,所以需要对cuda软连接进行处理,使其指向不同的cuda
打开环境变量:
gedit ~/.bashrc
找到关于cuda的几行
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
因为其指向的是cuda8.0,我们先把库文件位置变成cuda可执行文件所在位置而与具体的版本无关,将上面一段修改为:
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
cuda版本切换
//删除原来的软连接
sudo rm -rf /usr/local/cuda
//建立新的软连接
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda
查看软连接
cudnn版本切换:
主要需要将cudnn文件放入你选择的cuda版本中
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64/
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-9.0/lib64/libcudnn*
3.错误总结
(1)could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
解决方法:sudo rm -rf ~/.nv/
(2)tensorflow版本与cuda,cudnn版本的问题会出现很多问题,需要修改版本