从零开始到ubuntu14.04系统+nvidia显卡驱动+cuda8.0+cudnn5.1+tensorflow(pytorch)

最近花了几天时间,将实验室的一台服务器从零到Ubuntu14.04系统,nvidia显卡驱动,cuda8.0+cudnnV5.1,tensorflow,pytorch安装好。中间遇到过无数个问题,现在将这个过程的步骤和问题记录下来,方便以后查看。

环境配置说简单也简单,说难也难,因为网上有很多教程可参考,但指不定什么时候你就会碰到教程中未提及的问题。往往会出现,你找了一个教程,并且按照别人的步骤来,别人就能Successfully installed,而自己就会出现各种红色字体的问题。总结了一下,原因大致为:

  1. 没有找对别人的教程。找教程一定要仔细检测确认教程安装的和自己安装的是一摸一样的东西,包括版本也要一致。不然会出现新的问题
  2. 教程也会出现问题,csdn上也会有各种打错字的,或者把命令行复制错误的,比如一些命令后面带有“- -”会写成“—”。
  3. 驱动软件安装包,最好去官网上下载,不要下载网上提供的百度网盘链接
  4. 网上找的教程发布时间要么是最近的,要么就很早的教程。这样会导致安装的软件版本难以对应。例如安装tensorflow,直接参照博客上的教程pip install tensorflow,这种简单的安装方式,导致安装默认的最新版本的tensorflow(1.8)。而从1.3版本以后,tensoflow就不再支持cudnn的v5.1版本。

现在来讲下流程

1.Ubuntu 14.04 安装

准备一个u盘,制作ubuntu14.04系统盘,最好一直放着,之后可能有问题又得重装系统。不过ubuntu系统安装很快。

ubuntu14.04和16.04步骤一样,参考链接ubuntu系统安装

Ubuntu Linux系统时硬盘分区最合理的方法。参考链接

选择其他选项

Ubuntu Linux可以把分区作为挂载点,载入目录,其中最常用的目录如下表所示:

目录(挂载点) 分区类型 建议大小 格式 描述
/ 40G 主分区 ext4 根目录,就是系统安装的目录,硬盘大的话一般40-100G,很多软件安装的位置
swap 100G(2倍内存大小) 逻辑分区 swap 交换空间
/boot 200M左右 逻辑分区 ext4 Linux的内核及引导系统程序所需要的文件,GRUB或LILO系统引导管理器也位于这个目录;启动撞在文件存放位置,如kernels,initrd,grub。
/home 硬盘剩余都给/home 逻辑分区 ext4 用户工作目录;个人配置文件,如个人环境变量等;所有账号分配一个工作目录。

分区之后肯能会报错:

The partition table format in use on your disks normally requires to you create a separate partition for boot loader code. This partitionshould be marked for use as a “Reserved BIOS boot area” and should be at least 1MB in size. Note that this is not the same as a partition mounted on /boot
If you do not go back to the partitioning menu and correct this error,boot loader installation may fail later,although it may still be possible to install the boot loader to a partition.

解决方法:
添加一个分区,use as 选择EFI,逻辑分区,1G以下即可。参考链接

u盘安装后系统后,不要手动把系统升级给关闭,因为后面有些安装包需要更新,不然会出现版本不兼容的问题,当初就是一安装系统就关闭更新设置,导致后面出现各种问题,折腾了很久…)

2. Ubuntu14.04环境下安装显卡驱动

参考链接

1.先看看本机的显卡:

lspci |grep -i nvidia

2.下载官方驱动程序
3.打开终端,先删除旧的驱动(防止之前安装过驱动)

sudo apt-get remove --purge nvidia*

4.禁止集成的nouveau驱动

Ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,我们需要先将其屏蔽才能安装NVIDIA官方驱动。

将驱动添加到黑名单blacklist.conf中,但是由于该文件的属性不允许修改。所以需要先修改文件属性。

查看属性

$sudo ls -lh /etc/modprobe.d/blacklist.conf

修改属性

$sudo chmod 666 /etc/modprobe.d/blacklist.conf

用gedit编辑器打开

$sudo gedit /etc/modprobe.d/blacklist.conf

在该文件后添加一下几行:

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

再更新一下

sudo update-initramfs -u

修改后需要重启系统

sudo reboot

开机确认下Nouveau是已经被你干掉,使用命令:

lsmod | grep nouveau

没有输出就表示集显被关闭了,现在就开始安装显卡驱动了

5.安装驱动

  • 先按Ctrl + Alt + F1到控制台,关闭当前图形环境
sudo service lightdm stop(关闭图形界面)
  • 再安装驱动之前 需要把系统安装包升级下,之前没有这么做,安装会报错,错误如下:

Unable to load the kernel module ‘nvidia.ko’. This is most likely because the kernel module was built using the wrong kernel source files. Please make sure you have installed the kernel source files for your kernel; on Red Hat Linux systems,for example,be sure you have the ‘kernel-source’ rpm installed. If you kNow the correct kernel source files are installed,you may specify the kernel source path with the ‘–kernel-source-path’ commandline option. -> Kernel module load error: insmod: error inserting ‘./usr/src/nv/nvidia.ko’:-1 UnkNown symbol in module ERROR: Installation has Failed. Please see the file ‘/var/log/nvidia-installer.log’ for details. You may find suggestions on fixing installation problems in the README available on the Linux driver download page at http://www.nvidia.com.

就是会出现Unable to load the kernel module 'nvidia.ko'的问题,原因应该是系统内核和显卡不兼容
我把安装包升级了下,就没有这个问题了。再字符界面继续输入:

sudo apt-get update(只检查,不更新)
sudo apt upgrade(更新已安装的软件包)(这个会花比较长的时间)
  • 安装驱动程序
$sudo chmod a+x NVIDIA-Linux-x86_64-xxx.run
$sudo ./NVIDIA-Linux-x86_64-xxx.run -no-x-check -no-nouveau-check -no-opengl-files

显卡版本对应 应该就不会出现问题。
安装过程一直选yes即可,只要没有出现上面的问题。
输入nvidia-smi 有显卡信息说明显卡安装成功了
或者验证驱动的版本

$ cat /proc/driver/nvidia/version

若有信息输出,则表示驱动安装成功

  • 最后重新启动图形环境
$sudo service lightdm start

3.安装CUDA

ubuntu14.04自带的gcc版本是4.8,而cuda支持的版本也是4.8,所以不用降低版本。如果要降低版本参照gcc降低版本

cuda安装过程中会自带安装显卡,(其实也可以不安装显卡驱动,直接安装cuda,再选择里面选择安装显卡驱动即可,不过没有试过)。

切换到CUDA 的“.run”文件目录下,可以在桌面也可以在字符页面运行如下指令:

$sudo chmod a+x cuda_8.0.27_linux.run
$sudo sh cuda_8.0.27_linux.run

刚开始会看到许多文字,一路空格往下,直到“100%”

然后会看到一些选择不要手快选错了:

Do you accept the prevIoUsly read EULA?
accept/decline/quit: Do youaccept the prevIoUsly read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
(y)es/(n)o/(q)uit: n

(这里一定要选no,不然前面的驱动就白装了)。

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/mcis105 ]:

Installing the CUDA Samples in /home/mcis105 …
copying samples to /home/mcis105/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/mcis105,but missing recommended libraries

看到上面信息cuda就安装成功了。

如果需要卸载CUDA,可执行如下命令:

$ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
  • 设置系统环境变量

为了让系统能找到CUDA 的可执行文件及库文件,我们还需要对环境变量做一定
的设置:首先$ sudo su 切换为根用户,然后编辑/etc/profile 文件,这样就能使环境变量的设置对所用用户永久生效:

# gedit /etc/profile

打开文件后在最后面加上两行:

export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

修改文件后要想马上生效还要运行# source /etc/profile,不然只能在下次重进此用户时生效。

(注:另外一种设置环境变量的方法是仅对当前用户有效,即编辑“.bashrc”文件:

$ sudo gedit ~/.bashrc

然后同样是在文件中加入上面两行:

export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

修改文件后要想马上生效还要运行$ sudo ldconfig.)

  • 验证CUDA 是否安装成功

首先运行如下命令:

$ nvcc -V

(注意,如果没有设置环境变量,可能会提示“nvcc 未安装”)
命令返回类似信息:

即CUDA 安装成功。

4. 安装CuDNN5.1

注意:从tensorflow1.3版本以后,tensoflow就不再支持cudnn的v5.1版本。一定要下载对应版本的tensorflow,或者安装cudnn6.1,步骤都是一样的。

tensorflow+cuda+cudnn+gcc等这些版本是否对应,安装前一定要去网上搜下。

cudnn安装简单,就是将cudnn的文件分别复制到cuda的某些文件下,给出第二种方式比较方便
参考链接

1.下载的cudnn-8.0-linux-x64-v5.1.tgz解压后得到cuda文件夹,下面有include/cudnn.h,以及lib64文件夹下的libcudnn.solibcudnn.so.5libcudnn.so.5.1.10libcudnn_static.a四个文件

2.这三个.so文件大小都一样,可以看出libcudnn.solibcudnn.so.5都是软链接,其中libcudnn.so链接到libcudnn.so.5,libcudnn.so.5链接到libcudnn.so.5.1.10,所以真正的文件就是libcudnn.so.5.1.10

3.在安装CUDA时,对于默认的/usr/local/cuda-8.0文件,在同一地址下创建了cuda文件夹作为软链接,因此这两个文件夹可以看成一个,修改任意一个文件夹中的文件,另一个文件夹都会作相应的修改

4.把cudnn.h拷到本地对应位置

$ cd Downloads/cuda
sudo cp include/cudnn.h /usr/local/cuda/include/

5.把lib64下的文件拷到本地对应位置

$ cd Downloads/cuda
sudo cp lib64/* /usr/local/cuda/lib64/

6.创建软连接

$ cd /usr/local/cuda/lib64
sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so

第二种方式(比较简洁):
然后切换到cudnn-8.0-linux-x64-v5.0-ga.tgz 的目录下
打开终端,输入:

$ tar -zxvf cudnn-8.0-linux-x64-v5.0-ga.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include/
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64/
$ sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h
$ sudo chmod a+r /usr/local/cuda-8.0/lib64/libcudnn*

至此cuda8.0+cudnn5安装成功了。

5.安装tensorflow

利用ubuntu14.04自带的python2.7来安装tensorflow,在tensorflow下载对应的whl文件。参考链接

1.pip 安装

$ sudo apt-get install python-pip python-dev python-setuptools build-essential
$ sudo pip install --upgrade pip
$ sudo pip install --upgrade virtualenv

为了检测是否安装好,可以查看pip的版本:

$ pip --version

2.Tensorflow安装

接下来,就可以按照Tensorflow Download and Setup中的Pip Installation开始安装,命令如下:

$sudo pip install tensorflow_gpu-1.2.0-cp27-cp27mu-manylinux1_x86_64.whl

可能会遇到安装失败的问题,例如:

Found existing installation: six 1.4.1DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.Uninstalling six-1.4.1: …..OSError: [Errno 1] Operation not permitted: ‘/tmp/pip-vhk0MW-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info’

这个问题就是安装了six依赖包,而且版本不对应,升级下就行了:

$ sudo easy_install --upgrade six

重装后有出现了:

matplotlib 1.3.1 requires tornado,which is not installed.
matplotlib 1.3.1 requires nose,which is not installed.

上面的结果说明matplotlib包有两个依赖包没有安装。pip管理参考链接

pip check用来验证已安装的包是否有兼容的依赖性问题。输入:

$ pip check
matplotlib 1.3.1 requires tornado,which is not installed.

解决的办法有很多,我是重装了matplotlib,下载whl文件,用pip install安装就解决了这个问题。matplotlib下载链接

安装完成后,就可以测试,是否安装成功,其中提到的six和protobuf的问题,都是版本不一致导致的,重新升级下就可以了。问题解决链接

6.安装pytorch

上面安装成功后pytorch就很容易安装了

sudo pip install torch torchvision

此时安装的是torch0.4,要安装0.3就去官网上下载whl文件安装。

7.安装其他软件包…

1)安装spyder

$ sudo apt-get install spyder

2)安装opencv

安装opencv有两种方式,一是用make编译安装比较麻烦;二是直接用pip安装很快也不会报错。

sudo pip install opencv-python

3)安装sklearn

sudo pip install sklearn

4)安装其他库,方法都是一样的。

总结

至此,所有的环境都安装好了,痛苦的实验才刚刚开始,

ubuntu14.04(16.04)系统+nvidia显卡驱动+cuda8.0+cudnn5.1+tensorflow(pytorch)安装教程的更多相关文章

  1. android – 符合Nvidia Tegra profiler 2.0的移动设备

    解决方法通常任何基于Tegra4和K1的设备都可以工作,但我会推荐Nvidia的Shield/Note用于你的工作,不仅是他们退出便宜,而且他们的机器人留下了很多香草使它更容易使用.还有(可用的)更新策略的优点.

  2. PyTorch中的CUDA的操作方法

    这篇文章主要介绍了PyTorch中的CUDA的操作方法,CUDA是NVIDIA推出的异构计算平台,PyTorch中有专门的模块torch.cuda来设置和运行CUDA相关操作,更多相关介绍,需要的朋友可以查看下面文章内容

  3. 是否可以在另一个GPU(2 GPU系统)中处理数据

    我的算法需要对每个相机的数据进行长期处理,因此每个相机都需要访问相同的GPU内存问题在一个GPU中处理4个摄像头可能会导致内存不足。所以,我认为一个GPU只能处理两个摄像头。但在第一时间,如果cam3在GPU0处被处理,则cam3数据不能在GPU1处处理。我想将cam3数据从GPU0复制到GPU1,但它并没有那么小,所以看起来效率很低。是否可以在GPU1上使用GPU0数据进行处理而无需内存?我在CUDA方面很短,所以如果有好的关键词来解决这个问题,请告诉我。

  4. 如何编写CUDA内核来加速python代码

    几周来,我一直在学习python作为我的第一种编程语言。我决定用Numba编写一个乐透模拟。该代码在我的CPU上每秒大约250k次迭代时运行得很好。我真的很想看看它是如何在我的英伟达GPU上运行的,但我有点力不从心。如果有人能帮我一把,我将非常感激。我想我应该能够运行float16,因为数字并不复杂。此外,@vectorize似乎很重要。但是,老实说,我在踩水。

  5. 为什么cuGraphAddMemCopyNode已经获得了两个上下文,却需要额外的上下文?

    考虑CUDA图形API函数在此描述。它采用的CUDA_MEMCPY3D结构是一组非常广泛的参数。实际上,它包含两个上下文句柄字段:srcContext和dstContext,用于定义源和目标内存区域或数组的上下文。然而,该函数需要额外的第三个上下文句柄。但是,这意味着什么?节点是一个图,它通过具有上下文的流启动。除此之外,为什么这很重要?两个端点上下文应该足以让CUDA驱动程序执行复制。虽然大多数节点插入API函数都没有?

  6. windows – 未检测到支持CUDA的设备

    我是CUDA编程的新手,我完全陷入困境.当我尝试运行提供的deviceQuery实用程序或其中一个示例应用程序时,我收到以下错误:我使用的是Windows7,64位.我安装了VisualStudio2012,然后安装了CUDA5.064位.我的显卡是NVIDIAGeForceGTS250.今天我去了NVIDIA网站并重新安装了该卡的最新驱动程序.除了“确保安装了正在运行的驱动程序”之外,我在Win

  7. windows – 安装Tensorflow的问题 – 不是CUDA / CuDNN问题

    我最近开始进入Tensorflow,但我遇到了安装问题.每次我尝试导入它时,我都会收到以下错误我查看了与我有同样问题的其他堆栈溢出帖子,他们建议从NVIDIA获取CUDA库.问题是,我既没有NVIDIA显卡也没有GPU版本的张量流,所以我不认为这是问题所在.还有一些建议可以确保安装VisualStudio的Microsoft可再发行组件.如果这是一个基于系统变量的问题,我很感激帮助改变系统变量,因为我是新手.谢谢!

  8. 如何在Windows上模拟CUDA

    有没有什么方法可以从没有NVIDIA显卡的电脑上测试CUDA样品和代码?

  9. Windows – 编译没有Visual Studio的CUDA – “在路径中找不到编译器cl.exe”

    我刚刚在CUDA开始了一个小项目.我需要知道如下:是否可以编译CUDA代码而不使用/购买MicrosoftVisualStudio?使用Nvcc.exe我得到错误“找不到编译器cl.exe在路径”.我试图为NetBeans安装一个CUDAplugin,但它不起作用.(使用当前版本的NetBeans)平台:Windows7提前致谢.更新如评论中所述,Windows7之后的SDK版本不包括构建工具.如

  10. 在Ubuntu 12.10中安装cuda 5样本

    我正在安装cuda5样本:但是我收到这个错误:但:nvidia安装程序正在寻找什么?Ubuntu12.10中没有/usr/lib64:我也在运行Ubuntu12.10,我发现这个库在文件夹/usr/lib/x86_64-linux-gnu/之后安装freeglut3包.我也做了一个softlink,我已经能够安装CUDA5.0的例子:我还没有检查样品是否可以编辑.

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部