实际上教程网上有很多,这里说下自己遇到的一个坑。
很少有人提到(包括torch7官方)CUDA与torch的安装顺序,我这里测试发现先安装torch再cuda,总是各种问题,所以,先cuda,cudnn,再torch,一路顺利。这应该跟opencv与cuda关系类似。跟torch相关的CUDA实现,要重新编译,因此,先CUDA比较保险。
另外就是网络要好,否则经常断!感谢同事提供的VPN。。
2、NVIDIA 驱动安装
1) Ctrl+alt+F1进入字符界面,关闭图形界面
sudo service lightdm stop //必须有,不然会安装失败
2) 安装nvidia driver
Accept
Continue installation
安装完成之后
图形界面出现,然后关机,切换到1080
3、 Cuda8.0安装
开机(桌上桌下来回窜,还好我比较瘦==。)
1) 在终端运行指令 sudo sh cuda_8.0.27_linux.run
选择
Do you accept the prevIoUsly read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
(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/zhou ]:
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/zhou …
Copying samples to /home/zhou/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/zhou,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,replacing with the name of this run file:
sudo .run -silent -driver
Logfile is /tmp/cuda_install_2961.log
安装完成,但是缺少一些库。
2) 安装所缺少的库
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev这个因为网络问题,可能要安装很久。如果安装有问题,可以分开安装各个库,
还是有线好点。
3)
sudo apt-get install vim安装完成。这个可以不装,用gedit
4) 设置环境变量
在终端输入这两句:
输入上面export的两句,保存,退出。
sudo ldconfig //环境变量立即生效5) 验证安装是否完成
nvidia-smi显示:
显示:
nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2016
NVIDIA Corporation Built on Wed_May__4_21:01:56_CDT_2016 Cuda
compilation tools,release 8.0,V8.0.26
6) 测试cuda的samples
cd ‘/home/zhou/NVIDIA_CUDA-8.0_Samples’make也不知道是我的错觉还是什么的,比以前快很多啊,大概等7分钟左右吧。(听了两首薛之谦的新歌)
7) 安装cudnn5.0(5.1也一样)
安装cuDNN比较简单,解压后把相应的文件拷贝到对应的CUDA目录下即可:
显示以下信息:
*cuda/include/cudnn.h
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.5
cuda/lib64/libcudnn.so.5.0.5
cuda/lib64/libcudnn_static.a*
继续执行以下指令:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
8) 验证一下,哈哈哈哈哈啊哈哈哈哈哈
cuda的samples 里面有个deviceQuery 运行之后会显示信息,最后一行出行pass说明成功啦~~~~
下面是这位同学的:http://blog.csdn.net/hungryof/article/details/51557666
总说
附:最后面加上hdf5的安装。
三个前提:
1. ubuntu别太老,最好14.04或以上吧,本人采用14.04
2. cuda别太老,本人试过cuda7.5和cuda8.0。都完美运行。
3. cudnn一定要和cuda版本对应。这是最关键的。比如我以前cuda是7.5的,即cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64,采用的cudnn就要cudnn-7.5-Linux-x64-v5.0-ga.tgz,是为cuda7.5准备的cudnn5.0版本。 现在装的是cuda8.0,即cuda-repo-ubuntu1404-8-0-local_8.0.44-1_amd64.deb。采用的是
cudnn-8.0-linux-x64-v5.1.tgz。
安装与测试
用一个例子来跑,从而验证torch以及cuda和cudnn是否安装成功。
我推荐这个。
参考:链接:https://github.com/jcjohnson/neural-style/blob/master/INSTALL.md
neural-style
其实这篇已经讲的很清楚怎么安装了,但是安装时还是碰到了不少坑。
稍微翻译一下吧,顺便加点小解释:安装torch7
cd ~/
curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; ./install.sh
这个稍微注意一下,这里的
curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
是安装torch的依赖库,和官方的版本不是一样的。如果你运行这个出现版本依赖问题从而没法安装的话,这时候采用下面的官方版本
git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; bash install-deps;
./install.sh
这里可能会出现的问题,在 坑一中。
接下来,它会提示是否吧torch加入bashrc中,有”….(yes|no)”提示,输入yes,即可。
为了保险,可以看看bashrc文件
vim ~/.bashrc
查看文档末尾是不是有类似
./home/xxx/torch/install/bin/torch-activate
上面是你torch安装的路径。
然后跟新一下环境变量。
source ~/.bashrc
现在来说,基本的torch就安装好了!!!就是这么简单。但是你可能还想装cuda,其实也很简单。
下载配置neural style(这个只是进行用代码测试torch是否安装好了。)
安装其他依赖库
sudo apt-get install libprotobuf-dev protobuf-compiler
luarocks install loadcaffe
下载neural style代码
cd ~/
git clone https://github.com/jcjohnson/neural-style.git
cd neural-style
安装VGG模型
sh models/download_models.sh
cpu版本的测试
th neural_style.lua -gpu -1 -print_iter 1
若出现
[libprotobuf WARNING google/protobuf/io/coded_stream.cc:505] Reading dangerously large protocol message. If the message turns out to be larger than 1073741824 bytes,parsing will be halted for security reasons. To increase the limit (or to disable these warnings),see CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.
[libprotobuf WARNING google/protobuf/io/coded_stream.cc:78] The total number of bytes read was 574671192
Successfully loaded models/VGG_ILSVRC_19_layers.caffemodel
conv1_1: 64 3 3 3
conv1_2: 64 64 3 3
conv2_1: 128 64 3 3
conv2_2: 128 128 3 3
conv3_1: 256 128 3 3
conv3_2: 256 256 3 3
conv3_3: 256 256 3 3
conv3_4: 256 256 3 3
conv4_1: 512 256 3 3
conv4_2: 512 512 3 3
conv4_3: 512 512 3 3
conv4_4: 512 512 3 3
conv5_1: 512 512 3 3
conv5_2: 512 512 3 3
conv5_3: 512 512 3 3
conv5_4: 512 512 3 3
fc6: 1 1 25088 4096
fc7: 1 1 4096 4096
fc8: 1 1 4096 1000
WARNING: Skipping content loss
Iteration 1 / 1000
Content 1 loss: 2091178.593750
Style 1 loss: 30021.292114
Style 2 loss: 700349.560547
Style 3 loss: 153033.203125
则安装成功。表示如果这一步都到不了的话,难度挺大。
安装cuda
这个如果你以前装过就不用再装了,其实就是个环境嘛,默认是安装在/usr/local/cuda-8.0的。安装的时候它会创建一个软链接,类似windows的快捷方式。
直接从官网上下载对应版本的cuda 。然后deb文件直接双击安装。你别以为这个deb安装完了,cuda就安装好了,其实还有附加的库,也是要安装的。这些要通过命令行来进行。
sudo apt-get update
sudo apt-get install cuda
上面的apt-get安装的cuda会根据你的deb的cuda的版本的不同,而安装相应的库。比如你如果是采用cuda8.0的deb,那么此时上面会出现一堆cuda8.0-之类的文件名的库。
最后再试试是否安装好了cuda
nvidia-smi
出现你的显卡配置信息的话,就ok。
安装torch的cuda支持
刚才装的cuda是通用的,是所有的程序框架都可以用的啊。但是你让torch用cuda的话,还要安装2个库cutorch和cunn。其实torch安装相应的其他库还是很简单的,直接一条命令搞定。
luarocks install cutorch luarocks install cunn
测试一下
th -e "require 'cutorch'; require 'cunn'; print(cutorch)"
此时到这里应该还是妥妥的.
安装cudnn
其实cudnn就是一些链接库,怎么安装呢。把cudnn的头文件放入和相应的链接库放入cuda路径的相应位置就行了。显然头文件是放入include文件夹中,而链接库是放入lib64文件夹中。因此有
tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64/
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include/
最后在安装torch的cudnn支持
luarocks install cudnn
测试一下:
th neural_style.lua -gpu 0 -backend cudnn
几乎是百分百成功的,妥妥的,可能会出现坑二。
坑1:torch的依赖库很多!!
curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
运行这个时,一定会经过较长时间的安装!!!!由于我这里的网很差,所以如果你的也有类似的情况,那么可能会出现:“xxx 校验和不符”。这时说明完全没有安装依赖库好吧!!我以前以为已经装好了,直接下完neural-style,然后./install.sh。我擦,结果出现什么cmake not found之类的。然后我还傻乎乎的去 sudo apt-get install cmake。结果又出现其他乱七八糟的,现在就是一句话:curl -shttps://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash是把所有的依赖库都会安装好!!并且安装完之后会有类似提示:“torch dependencies have already installed.”
坑2 可能出现’libcudnn not found in library path’的情况
Please install CuDNN from https://developer.nvidia.com/cuDNN
Then make sure files named as libcudnn.so.5 or libcudnn.5.dylib are placed in your library load path (for example /usr/local/lib,or manually add a path to LD_LIBRARY_PATH)
LD_LIBRARY_PATH是该环境变量,主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。由于刚才已经将
“libcudnn*”复制到了/usr/local/cuda-8.0/lib64/下面,因此需要
- sudo gedit /etc/ld.so.conf.d/cudnn.conf 就是新建一个conf文件。名字随便
- 加入刚才的路径/usr/local/cuda-8.0/lib64/
- 反正我还添加了/usr/local/cuda-8.0/include/,这个估计不要也行。
- 保存后,再sudo ldconfig来更新缓存。(可能会出现libcudnn.so.5不是符号连接的问题,不过无所谓了!!)
此时运行
th neural_style.lua -gpu 0 -backend cudnn
成功了!!!!
发现用cudnn时,变成50个50个一显示了,速度快了些。刚才但存用cuda只是1个1个显示的。不说了,歇会儿。
总结
一定要版本对应!!cuda和cudnn的版本一定要对应,对应!!!!
HDF5安装
torch中如果直接
luarocks install hdf5
是会出错的。要这样:
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/"