ubuntu 16.04 torch7 + cuda/cudnn 环境配置

前言: 远离高版本,时间比经验更宝贵!

本文安装软件环境:ubuntu 16.04 + cuda 8.0

写在前面:之前因为电脑系统是ubuntu 16.10的缘故,经历了万般波折到最近也算是把环境配好了,但是过程中的痛苦自是不再想提及,由于系统版本的升级导致了一些依赖库版本的升级,而配置torch所需要的版本并不能与之兼容,所以有些库会强制进行降版本,我这里记录了一些,基于此,强烈不建议使用高版本。

bash install-deps

libjpeg-dev
liblcms2-dev
libwmf-dev
libx11-dev
libxext-dev
libxml2-dev
libfreetype6-dev
libtiff-dev libz-dev
libpng-dev
libbz2-dev
libltdl-dev

libltdl-dev -> libltdl7=2.4.6-0.1 ->
libbz2-dev -> libbz2-1.0=1.0.6-8 -> 
libpng-dev -> zlib1g-dev -> zlib1g=1:1.2.8.dfsg-2ubuntu4.1
libtiff-dev -> libjpeg-dev -> libjpeg8-dev -> libjpeg-turbo8-dev -> libjpeg-turbo8=1.4.2-0ubuntu3.1 
-> libtiff5=4.0.6-1ubuntu0.4 -> liblzma5=5.1.1alpha+20120614-2ubuntu2 ->liblzma-dev 
libfreetype6-dev -> libfreetype6=2.6.1-0.1ubuntu2.3
libxml2-dev -> libxml2=2.9.3+dfsg1-1ubuntu0.5
libxext-dev -> libx11-dev -> libx11-6 libx11-doc
libwmf-dev -> libwmf0.2-7
如上类推,后面带版本号,依次添加依赖


报没有 <readline>的错
sudo apt install libreadline-dev -> libreadline6-dev=6.3-8ubuntu2 -> libtinfo-dev
-> ruby-interpreter -> 预依赖 awk 使用 aptitude

1.1 安装torch

Torch是一个基于Lua语言的深度学习框架,官网地址https://github.com/torch,安装torch7官方有文档,按照文档可完成http://torch.ch/docs/getting-started.html#_

安装之前首先确定你的Ubuntu下以安装git工具,通过Ctrl+Alt+T打开终端,在终端下输入git,加入终端输出,


image_1cl93ve3q4vp1kjp1kfaq3j13992m.png-39kB
image_1cl93ve3q4vp1kjp1kfaq3j13992m.png-39kB

则说明您的系统未安装git。在终端下输入sudo apt install git 即可安装,如下图所示。


image_1cl940bnjeh71m4h2lr1ufe1gd433.png-692.1kB
image_1cl940bnjeh71m4h2lr1ufe1gd433.png-692.1kB

在确定成功安装git工具后就可以开始安装Torch7啦!

第一步:
获取安装LuaJIT(C语言编写的Lua的解释器)和Torch所必需的依赖包。代码如下:git clone https://github.com/torch/distro.git ~/torch --recursive 如下图所示。

image_1cl9g20r61s5ar0jamd1lhv16q63g.png-1093.6kB
image_1cl9g20r61s5ar0jamd1lhv16q63g.png-1093.6kB

第二步:
由于默认将依赖包下载在当前路径下的torch文件下,进入torch文件夹,打开并执行install-deps中的命令(这个命令执行时间可能有点长,别着急哈)。代码如下:

image_1cl9gdt5kjtr12hj1c26jk71m403t.png-971.8kB
image_1cl9gdt5kjtr12hj1c26jk71m403t.png-971.8kB

第三步:
执行install.sh文件,如下图所示。


image_1cl9h5hh4epmf2719pp1hs0bbf4a.png-976.9kB
image_1cl9h5hh4epmf2719pp1hs0bbf4a.png-976.9kB
image_1cl9h6kct1hjvlvmhifbkji424n.png-963.8kB
image_1cl9h6kct1hjvlvmhifbkji424n.png-963.8kB

终端提示:
Do you want to automatically prepend the Torch install location to PATH and LD_LIBRARY_PATH in your /home/guodongwei/.bashrc? (yes/no)
输入:yes 如上图所示。

第四步:
将路径手动添加到PATH变量中:


image_1cl9h83f03c71gpp1gl31c1cdn254.png-19.9kB
image_1cl9h83f03c71gpp1gl31c1cdn254.png-19.9kB

image_1cl9h8kj21k317vv1ge91b6gllg5h.png-25.7kB
image_1cl9h8kj21k317vv1ge91b6gllg5h.png-25.7kB

第五步:
检测安装是否成功。在终端输入th命令,若出现下图,表明安装成功。


image_1cl9h9g07ltb1abuo2115nsa9g5u.png-150.2kB
image_1cl9h9g07ltb1abuo2115nsa9g5u.png-150.2kB

1.2 安装hdf5

Hierarchical Data Format(HDF)是一种针对大量数据进行组织和存储的文件格式。经历了20多年的发展,HDF格式的最新版本是HDF5,它包含了数据模型,库,和文件格式标准。以其便捷有效,移植性强,灵活可扩展的特点受到了广泛的关注和应用。

很多大型机构的数据存储格式都采用了HDF5,比如NASA的地球观测系统,MATLAB的.m文件,流体细算软件CDF,都将HDF5作为标准数据格式。现在HDF5还支持了大数据技术和NoSQL技术,并广泛用于科研,金融,以及其他科学和工程领域。

HDF5在技术上提供了丰富的接口,包含C,C++,Fortran, Python, Java等,能够在不同的语言间完美兼容。

hdf5的文件格式
hdf5的文件格式

打开hdf5官方资源地址hdf5,下载源码如hdf5-1.8.18.tar.gz形式的文件:

$ tar -xzf hdf5-1.8.18.tar.gz
$ cd hdf5-1.8.18
$ ./configure --prefix=/usr/local/hdf5  #安装路径
$ make
$ make check # run test suite
$ install
$ make check-install # verify installation

这里我们介绍一个hdf5可视化工具,它可以用来查看和编辑HDF文件:HDFView,如图,


image_1cl9iei8h1mtd44o1rdv1b8f1vi76o.png-51kB
image_1cl9iei8h1mtd44o1rdv1b8f1vi76o.png-51kB

1.3 安装torch-hdf5

在github上https://github.com/deepmind/torch-hdf5/blob/master/doc/usage.md

$ sudo apt-get install libhdf5-serial-dev hdf5-tools
$ git clone https://github.com/deepmind/torch-hdf5
$ cd torch-hdf5
$ luarocks make hdf5-0-0.rockspec LIBHDF5_LIBDIR="/usr/lib/x86_64-linux-gnu/"

1.4 安装cuda8.0

1.4.1 检查计算机是否具备CUDA安装条件

$ lspci | grep -i nvidia

显示出GPU 版本:


image_1clahc5v3kon12co1hhbl621bf075.png-14.8kB
image_1clahc5v3kon12co1hhbl621bf075.png-14.8kB

1.4.2 验证自己的Linux版本是否支持 CUDA

$ uname -m && cat /etc/*release
image_1clahejs01sriaaf177c65neh7i.png-58.4kB
image_1clahejs01sriaaf177c65neh7i.png-58.4kB

1.4.3 安装驱动(apt方式)

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
# 寻找合适的驱动版本
$ ubuntu-drivers devices
image_1clahi0n51rveuffhp21vh7e617v.png-41.8kB
image_1clahi0n51rveuffhp21vh7e617v.png-41.8kB
$ sudo apt-get install nvidia-390
# 安装完重启
$ sudo reboot
# 查看驱动安装状态
$ sudo nvidia-smi
$ sudo nvidia-settings
image_1clahkk101r716vo78713fbh7m8s.png-60.9kB
image_1clahkk101r716vo78713fbh7m8s.png-60.9kB

image_1clahl05r16u7127v1gjdvk5dog99.png-157.4kB
image_1clahl05r16u7127v1gjdvk5dog99.png-157.4kB

1.4.4 安装cuda8.0

在官网下载cuda8.0 run文件,https://developer.nvidia.com,网站需要注册才可以下载;

image_1clahpflaevi1sp41a331bre18sn9m.png-58.5kB
image_1clahpflaevi1sp41a331bre18sn9m.png-58.5kB
# 关闭图形化界面
$ sudo service lightdm stop
# 安装cuda8.0
$ sudo sh cuda_8.0.44_linux.run

单击回车,直到提示“是否为NVIDIA安装驱动?”
选择否,因为已经安装好驱动程序,其他都是默认。

安装完成后可能还会需要添加这些库:

$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
# 完成后重启
$ sudo service lightdm start

最后需要设置环境变量:

$ sudo vim /etc/profile

在文件末尾添加以下两行:

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

重启使环境变量生效!

1.5 安装cudnn,cudnn.torch

1.5.1 安装cudnn7

下载cudnn7所需要的包,https://developer.nvidia.com/rdp/cudnn-download

image_1clai9890c7iq27133716nh1pkra3.png-18.2kB
image_1clai9890c7iq27133716nh1pkra3.png-18.2kB

按照如下方式安装:

# Navigate to your <cudnnpath> directory containing cuDNN Debian file.
# Install the runtime library, for example:
$ sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb
# Install the developer library, for example:
$ sudo dpkg -i libcudnn7-dev_7.0.3.11-1+cuda9.0_amd64.deb
# Install the code samples and the cuDNN Library User Guide, for example:
$ sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb

安装完成后需要手动添加一下路径:

$ sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
$ sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
$ sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig

1.5.2 torch.cudnn

最后由于版本兼容性,我们还需要修改torch.cudnn的版本:

git clone https://github.com/soumith/cudnn.torch.git -b R7 && cd cudnn.torch && luarocks make cudnn-scm-1.rockspec

我们的torch就可以使用cudnn了!

1.6 安装lua-cjson

下载lua CJSON,https://www.kyne.com.au/%7Emark/software/lua-cjson-manual.html

将下载的包解压,按照如图方式添加:

image_1clainn2c1vd31oonqgn7isk5nb0.png-23.8kB
image_1clainn2c1vd31oonqgn7isk5nb0.png-23.8kB

1.7 安装loadcaffe

添加loadcaffe库,https://github.com/szagoruyko/loadcaffe,如下所示:

# Install torch first. There is no Caffe dependency, only protobuf has to be installed. In Ubuntu do:
$ sudo apt-get install libprotobuf-dev protobuf-compiler
$ luarocks install loadcaffe
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容