原文作者:法号阿兴 原文链接:https://www.cnblogs.com/xuliangxing/p/7575586.html
紧接着上一篇的文章《深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动》,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把NVIDIA显卡驱动安装好了
CUDA(Compute Unified Device Architecture),是英伟达公司推出的一种基于新的并行编程模型和指令集架构的通用计算架构,它能利用英伟达GPU的并行计算引擎,比CPU更高效的解决许多复杂计算任务,想使用GPU就必须要使用CUDA。
首先在官网(https://developer.nvidia.com/cuda-downloads)下载对应的CUDA,如图所示:
注意请务必下载runfile文件(后缀为.run),不能是其它文件。或者直接通过wget命令下载:
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run
如图所示:
下载完成后先执行安装相关依赖的命令,如果不先执行安装依赖包,后面安装CUDA会以下错误报错:
------------------------------------------------------------- Do you accept the previously read EULA? accept/decline/quit: accept Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26? (y)es/(n)o/(q)uit: n Install the CUDA 8.0 Toolkit? (y)es/(n)o/(q)uit: y Enter Toolkit Location [ default is /usr/local/cuda-8.0 ]: Do you want to install a symbolic link at /usr/local/cuda? (y)es/(n)o/(q)uit: y Install the CUDA 8.0 Samples? (y)es/(n)o/(q)uit: y Enter CUDA Samples Location [ default is /home/cmfchina ]: Installing the CUDA Toolkit in /usr/local/cuda-8.0 ... Missing recommended library: libGLU.so Missing recommended library: libX11.so Missing recommended library: libXi.so Missing recommended library: libXmu.so Installing the CUDA Samples in /home/cmfchina ... Copying samples to /home/cmfchina/NVIDIA_CUDA-8.0_Samples now... Finished copying samples. =========== = Summary = =========== Driver: Not Selected Toolkit: Installed in /usr/local/cuda-8.0 Samples: Installed in /home/cmfchina, but missing recommended libraries Please make sure that - PATH includes /usr/local/cuda-8.0/bin - LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA. ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work. To install the driver using this installer, run the following command, replacingwith the name of this run file: sudo .run -silent -driver
所有大家一定要安装顺序进行安装,先安装依赖的库文件。
(1)安装缺失的依赖库文件
命令如下:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-devlibgl1-mesa-glx libglu1 #安装依赖库
(2)安装执行文件
sudo sh cuda_8.0.61_375.26_linux.run #执行安装文件
注意:安装过程中会提示你进行一些确认操作,首先是接受服务条款,输入accept确认,然后会提示是否安装cuda tookit、cuda-example等,均输入Y进行确定。但请注意,当询问是否安装附带的驱动时,一定要选N!
因为前面我们已经安装好最新的驱动NVIDIA381,附带的驱动是旧版本的而且会有问题,所以不要选择安装驱动。其余的都直接默认或者选择是即可。
(3)设置环境变量
sudo vim ~/.bashrc
export PATH=/usr/local/cuda-8.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda
#环境变量立即生效 sudo source ~/.bashrc sudo ldconfig
如图所示:
(4)检查cuda是否配置正确
到这一步,基本的CUDA已经安装完成了,我们可以通过以下命令查看CUDA是否配置正确:
nvcc --version
如图所示:
(5)测试CUDA的sammples
为什么需要安装cuda samples?一方面为了后面学习cuda使用,另一方面,可以检验cuda是否真的安装成功。如果cuda samples全部编译通过,没有一个Error信息(Warning忽略),那么就说明成功地安装了cuda。如果最后一行虽然显示PASS,但是编译过程中有ERROR,请自行网上搜索相关错误信息解决之后。
# 切换到cuda-samples所在目录 cd /usr/local/cuda-8.0/samples 或者 cd /home/NVIDIA_CUDA-8.0_Samples # 没有make,先安装命令 sudo apt-get install cmake,-j是最大限度的使用cpu编译,加快编译的速度 make –j # 编译完毕,切换release目录(/usr/local/cuda-8.0/samples/bin/x86_64/linux/release完整目录) cd ./bin/x86_64/linux/release # 检验是否成功,运行实例 ./deviceQuery # 可以认真看看自行结果,它显示了你的NVIDIA显卡的相关信息,最后能看到Result = PASS就算成功。
如图所示:
输出结果看到显卡相关信息,并且最后Result = PASS ,这说明CUDA才真正完全安装成功了
cuDNN是GPU加速计算深层神经网络的库。首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,需要注册一个账号才能下载,没有的话自己注册一个。由于本人的显卡是GTX1080Ti,所以下载版本号如图所示,最新的版本是v7:
安装cudnn比较简单,简单地说,就是复制几个文件:库文件和头文件。将cudnn的头文件复制到cuda安装路径的include路径下,将cudnn的库文件复制到cuda安装路径的lib64路径下。具体操作如下
1 #解压文件 2 tar -zxvf cudnn-8.0-linux-x64-v7.tgz 3 4 #切换到刚刚解压出来的文件夹路径 5 cd cuda 6 #复制include里的头文件(记得转到include文件里执行下面命令) 7 sudo cp /include/cudnn.h /usr/local/cuda/include/ 8 9 #复制lib64下的lib文件到cuda安装路径下的lib64(记得转到lib64文件里执行下面命令) 10 sudo cp lib* /usr/local/cuda/lib64/ 11 12 #设置权限 13 sudo chmod a+r /usr/local/cuda/include/cudnn.h 14 sudo chmod a+r /usr/local/cuda/lib64/libcudnn* 15 16 #======更新软连接====== 17 cd /usr/local/cuda/lib64/ 18 sudo rm -rf libcudnn.so libcudnn.so.7 #删除原有动态文件,版本号注意变化,可在cudnn的lib64文件夹中查看 19 sudo ln -s libcudnn.so.7.0.2 libcudnn.so.7 #生成软衔接(注意这里要和自己下载的cudnn版本对应,可以在/usr/local/cuda/lib64下查看自己libcudnn的版本) 20 sudo ln -s libcudnn.so.7 libcudnn.so #生成软链接 21 sudo ldconfig -v #立刻生效
备注:上面的软连接的版本号要根据自己实际下载的cudnn的lib版本号
如图所示:
最后我们看看验证安装cudnn后cuda是否依旧可用
nvcc --version # or nvcc -V
到目前为止,cuDNN已经安装完了,但是,是否成功安装,我们可以通过cuDNN sample测试一下(https://developer.nvidia.com/rdp/cudnn-archive 页面中找到对应的cudnn版本,里面有 cuDNN v5 Code Samples,点击该链接下载即可,版本可能不一样,下载最新的就行)
下载完,转到解压出的目录下的mnistCUDNN,如图所示:
通过下面命令,进行校验
#运行cudnn-sample-v5 tar –zxvf cudnn-sample-v5.tgz #解压压缩包 cd mnistCUDNN #转到解压的mnistCUDNN目录下 make #make 命令下 ./mnistCUDNN #在mnistCUDNN目录下执行./mnistCUDNN #改程序运行成功,如果结果看到Test passed!说明cudnn安装成功。
如果结果看到Test passed!说明cudnn安装成功
至此、cuDNN已经成功安装了
Anaconda是python的一个科学计算发行版,内置了数百个python经常会使用的库,也包括许多做机器学习或数据挖掘的库,这些库很多是TensorFlow的依赖库。安装好Anaconda可以提供一个好的环境直接安装TensorFlow。
去Anaconda官网(https://www.anaconda.com/download/)下载需要版本的Anaconda
下载完后执行如下命令
sudo bash Anaconda3-4.4.0-Linux-x86_64.sh
如图所示:
安装anaconda,回车后,是许可文件,接收许可。直接回车即可。最后会询问是否把anaconda的bin添加到用户的环境变量中,选择yes。在终端输入python发现依然是系统自带的python版本,这是因为环境变量的更新还没有生效,命令行输入如下命令是安装的anaconda生效。如果conda –version没有找到任何信息,说明没有加入到环境变量没有,需要手动加入,如图所示:
刷新环境变量
source /etc/profile 或者 source ~/.bashrc #(全局的环境变量)
大家可以参考TensorFlow的官方安装教程(https://www.tensorflow.org/install/),官网提供的了 Pip, Docker, Virtualenv, Anaconda 或 源码编译的方法安装 TensorFlow,我们这里主要介绍以Anaconda安装。其他安装方式,大家可以到官方安装教程查看。
通过Anaconda安装TensorFlow CPU,TensorFlow 的官方下载源现在已经在GitHub上提供了(https://github.com/tensorflow/tensorflow),找到对应的版本号,如图所示:
#Python 2.7
conda create -n tensorflow python=2.7
#Python 3.6 conda create -n tensorflow python=3.6 #我下的TensorFlow对应的Python是3.6版本,那么我就使用这行
备注:(根据TensorFlow版本号,一定要设置Python版本号,切记切记切记!!!!!重要的事情说三遍!否则后面会报各种错的)
source activate tensorflow
然后根据要安装的不同tensorflow版本选择对应的一条下载链接(操作系统,Python版本,CPU版本还是CPU+GPU版本),官方文档都有相关信息。
Python 2.7 CPU: https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp27-none-linux_x86_64.whl GPU: https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp27-none-linux_x86_64.whl ===============================================================================================
Python 3.4 CPU: https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp34-cp34m-linux_x86_64.whl GPU: https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp34-cp34m-linux_x86_64.whl ===============================================================================================
Python 3.5 CPU: https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp35-cp35m-linux_x86_64.whl GP: https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl ===============================================================================================
Python 3.6 CPU: https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp36-cp36m-linux_x86_64.whl GPU: https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl
#如何进行安装,我们这里安装Python版本为3.6的TensorFlow sudo pip3 install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl 备注:连接里的cpxx和cpxxm的xx是对应Python的版本号
错误归纳-重点关注!!!:
安装whl包的时候出现“tensorflow_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl is not a supported wheel on this platform”的问题。我们需要下载GPU版的安装包,在安装包下载之后,然后手动进入环境,安装TensorFlow。
具体操作如下(因为我碰到这样问题,只能用下面这种方式安装了):
source activate tensorflow #激活tensorflow环境(这步操作了,就忽略) cd /Downloads #切换到whl文件所在文件夹 pip install --ignore-installed --upgrade tensorflow_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl #切记,不要用sudo pip,也不要用pip3,然后--ignore-installed --upgrade等参数也不能省略,否则会出错。
如图所示,TensorFlow安装成功了:
完整日志:
cmfchina@cmfchina:~$ conda create -n tensorflow python=3.6 Fetching package metadata ……… Solving package specifications: . Package plan for installation in environment /home/cmfchina/.conda/envs/tensorflow: The following NEW packages will be INSTALLED: certifi: 2016.2.28-py36_0 openssl: 1.0.2l-0 pip: 9.0.1-py36_1 python: 3.6.2-0 readline: 6.2-2 setuptools: 36.4.0-py36_1 sqlite: 3.13.0-0 tk: 8.5.18-0 wheel: 0.29.0-py36_0 xz: 5.2.3-0 zlib: 1.2.11-0 Proceed ([y]/n)? y #
#如何进行安装,我们这里安装Python版本为3.6的TensorFlow sudo pip3 install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.3.0-cp36-cp36m-linux_x86_64.whl
备注:连接里的cpxx和cpxxm的xx是对应Python的版本号
错误归纳:
安装whl包的时候出现“tensorflow-1.3.0-cp36-cp36m-linux_x86_64.whl is not a supported wheel on this platform”的问题,和上面安装GPU一样的错误。我们需要下载CPU版的安装包,在安装包下载之后,注意!!!这个时候我们需要将whl文件重命名为tensorflow-1.3.0-py3-none-linux_x86_64.whl,然后手动进入环境,安装TensorFlow。
具体操作如下:
source activate tensorflow #激活tensorflow环境(这步操作了,就忽略) cd /Downloads #切换到whl文件所在文件夹 pip install --ignore-installed --upgrade tensorflow-1.3.0-py3-none-linux_x86_64.whl #切记,不要用sudo pip,也不要用pip3,然后--ignore-installed --upgrade等参数也不能省略,否则会出错。
其他的和GPU安装是一样的,具体不做讲解。
source deactivate tensorflow
问题一、如果安装后,运行实例提示ModuleNotFoundError: No module named ‘tensorflow’的话
import tensorflow as tf Traceback (most recent call last): File “”, line 1, in ModuleNotFoundError: No module named ‘tensorflow’
解决办法:下载的TensorFlow对应的Python版本一定要和conda create -n tensorflow python=x.x的版本一样才行,所以TensorFlow版本有时候太高反而不好,低版本兼容性更好,这个看个人意愿。
问题二、出现“ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory”错误信息
Python 3.6.2 |Continuum Analytics, Inc.| (default, Jul 20 2017, 13:51:32) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf Traceback (most recent call last): File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, infrom tensorflow.python.pywrap_tensorflow_internal import * File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in _pywrap_tensorflow_internal = swig_import_helper() File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description) File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/imp.py", line 242, in load_module return load_dynamic(name, filename, file) File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/imp.py", line 342, in load_dynamic return _load(spec) ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File " ", line 1, in File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/__init__.py", line 24, in from tensorflow.python import * File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/__init__.py", line 49, in from tensorflow.python import pywrap_tensorflow File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 52, in raise ImportError(msg) ImportError: Traceback (most recent call last): File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in from tensorflow.python.pywrap_tensorflow_internal import * File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in _pywrap_tensorflow_internal = swig_import_helper() File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description) File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/imp.py", line 242, in load_module return load_dynamic(name, filename, file) File "/home/cmfchina/.conda/envs/tensorflow/lib/python3.6/imp.py", line 342, in load_dynamic return _load(spec) ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory
这些都是有套路的,解决方法:
find / -name libcudnn.so.*
找到文件就下一步,没找到,检查下cudnn的依赖库,就是前面的环境变量做对了没
sudo ln -slibcudnn.so.7.* libcudnn.so.6 #path就是libcudnn.so.7的所在目录
或者
sudo ln -s libcudnn.so.7.* libcudnn.so.6 #cd 到 libcudnn.so.7的所在目录
这个应该是没有问题
如果我们需要卸载TensorFlow的话,使用下面命令
sudo pip uninstall tensorflow #Python2.7
sudo pip3 uninstall tensorflow #Python3.x
在python的环境中,运行简单的TensorFlow程序测试(官方demo)
>>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() >>> sess.run(hello) 'Hello, TensorFlow!' >>> a = tf.constant(10) >>> b = tf.constant(32) >>> sess.run(a + b) 42 >>> sess.close()
运行如图所示:
至此,TensorFlow安装成功,过程充满了艰辛..(。•ˇ‸ˇ•。)…所以大家安装的时候每一步都至关重要~
PS:如有疑问,请留言,转载请注明出处:http://www.cnblogs.com/xuliangxing/p/7575586.html