NVIDIA Cuda 7.5 on Ubuntu 14.04 64 bits

关于在Linux上搭Cuda环境,做个笔记备忘。


1. 安装GPU Driver

在Ubuntu中可以通过System Settings -> Software & Updates安装:


详细可参考https://help.ubuntu.com/community/BinaryDriverHowto/Nvidia 。装好后,执行nvidia X server settings可以看到硬件信息,还可以进行相关设置(如双显示器等)。



不嫌麻烦的话也可以从官网下驱动来装: http://www.nvidia.com/Download/index.aspx?lang=en-us 


2. 安装CUDA Toolkit

从官网上选择对应平台的meta-data安装包:https://developer.nvidia.com/cuda-downloads。然后安装:
$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
比如在ubuntu平台上就是:
$ sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
然后更新源和安装CUDA Toolkit:
$ sudo apt-get update
$ sudo apt-get install cuda

然后编译sample。默认toolkit安装在/usr/local/cuda中,先进到/usr/local/cuda/bin中,执行以下命令安装sample,<dir>为安装的目标目录。

$ cuda-install-samples-7.0.sh <dir>
如:
$ cuda-install-samples-7.0.sh /home/jzj/source
再到安装目标目录中编译:
$ cd /home/jzj/source/NVIDIA_CUDA-7.5_Samples

$ make

按官方文档中运行以下sample可以测试CUDA是否work:

$ cd bin/x86_64/linux/release

$ ./deviceQuery

$ ./bandwidthTest


如果很不幸地哪步失败了,可能就需要按官方文档里用runfile来装了。

http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html#axzz3sm26mXcH 


3. 其它

要想利用N卡GPU来做通用计算,需要用CUDA Toolkit来开发。好在大多数时候领域相关的toolkit已经封闭好GPU和CPU backend。如Torch7在编译时会通过cmake检测CUDA环境,如果有的话就会编译支持(http://torch.ch/docs/getting-started.html)。另外如Theano,只需按http://deeplearning.net/software/theano/install.html#gpu-linux上设置配置文件.theanorc即可:

[global]
device = gpu
floatX = float32

[cuda]
root=/usr/local/cuda

如果import theano时出现

Theano: CNMeM is disabled, CuDNN not available

的错误,请参照http://www.cnblogs.com/ZJUT-jiangnan/p/5532724.html的方法。注意其中的cnmem=1如果还是出错的话就调成更小。比如:

[lib]
cnmem=0.8

安装cuDnn可以参照http://deeplearning.net/software/theano/library/sandbox/cuda/dnn.html。简单的说就是到Nvidia的官网(https://developer.nvidia.com/rdp/cudnn-download)下载安装包安装即可。


以上两个安装好后加载theano时会出现类似下面提示,就说明安装成功了。

Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import theano
Using gpu device 0: GeForce GTX 970 (CNMeM is enabled with initial size: 80.0% of memory, cuDNN 5005)
>>> 

之后按官方网站上分别用CPU和GPU backend跑例程,可以看到针对该例子GPU计算在性能上有质的提升。

jzj@jlocal:~/code$ THEANO_FLAGS=mode=FAST_RUN,device=cpu,floatX=float32 python check1.py
[Elemwise{exp,no_inplace}(<TensorType(float32, vector)>)]
Looping 1000 times took 1.726703 seconds
Result is [ 1.23178029 1.61879337 1.52278066 ..., 2.20771813 2.29967761
1.62323284]
Used the cpu
jzj@jlocal:~/code$ THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python check1.py
Using gpu device 0: GeForce GTX 970
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 0.442874 seconds
Result is [ 1.23178029 1.61879349 1.52278066 ..., 2.20771813 2.29967761
1.62323296]
Used the gpu

发布了211 篇原创文章 · 获赞 438 · 访问量 148万+

猜你喜欢

转载自blog.csdn.net/ariesjzj/article/details/50084977