win8+ubuntu双系统下配置theano的GPU模块

最近重装了一下机器,为了恢复开发环境又查阅了一些资料,正好有小伙伴问theano的GPU模块的配置,在这里就顺便做一个记录,防止下一次装机的时候忘记。由于个人喜好工作娱乐分开,所以考虑还是用win8+ubuntu双系统的结构。



一、装双系统


我的硬件条件是Toshiba的laptop,i7四核cpu,8g内存,GeFroce 2g显存。考虑装个win8娱乐,由于win8之后采用EFI的启动模式,所以想要在EFI模式下实现双系统切换必须慎重的选择ubuntu的系统版本。例如ubuntu 12.0.4就不支持EFI下boot,那么这种情况下从win8切换到ubuntu系统就需要进bios把boot mode改为csmmode。目前支持EFI模式启动的ubuntu系统为ubuntu14.04和ubuntu14.10版本的64位版本。另外,由于ubuntu14.10系统暂时还不支持CUDA,所以选定安装的系统为ubuntu14.04。


第一步、备份文件并利用universal usb installer或者ultraiso等工具做一个ubuntu的u盘启动盘。

推荐用ultraiso,我曾经用uui做过几个启动盘,发现有的时候我有文件损坏的现象,而ubuntu系统的安装时是不容错的,一些小的文件缺失也会导致安装的退出。


第二步、关闭快速启动。在电源选项中找。


第三步、关闭安全启动。开机f2进bios修改。


第四步、在EFI模式下安装ubuntu系统。开机f12选择为usb启动。




二、安装CUDA



第一步、安装nvidia的显卡驱动。


入Ubuntu,按ctrl+alt+f1进入tty, 登录tty后输入如下命令

sudo service lightdm stop


让图形界面的服务暂停。接下来,输入下列命令添加驱动源

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update


CUDA 6.5.14目前最高仅支持340版驱动,安装nvidia-340驱动

sudo apt-get install nvidia-340


安装完成后, 继续安装补丁包

sudo apt-get install nvidia-340

安装完成后 reboot.


第二步、 安装CUDA 6.5

下载CUDA 6.5,并将下载得到的.run文件解压成三个文件, 分别为

  • CUDA安装包: cuda-linux64-rel-6.5.14-18749181.run
  • NVIDIA驱动: NVIDIA-Linux-x86_64-340.29.run
  • SAMPLE包: cuda-samples-linux-6.5.14-18745345.run


这里不安装NVIDIA驱动(官方的驱动一上我的机器就卡机****),先解压

*.run --extract=extract_path
 
  

需要给所有.run文件可执行权限

chmod +x *.run
 
  

第三步、安装CUDA的SDK

通过下列命令安装CUDA, 按照说明一步一步安装至完成.

./cuda-linux64-rel-6.5.run
 
  

添加环境变量:

$sudo gedit etc/profile修改内容为

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


使之生效:

source /etc/profile



第四步、验证CUDA安装成功


首先安装下列依赖包

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa-dev


然后用下述命令安装sample文件

sudo ./cuda-samples-linux-6.5.14-18745345.run


完成后编译Sample文件, 整个过程大概10分钟左右

cd /usr/local/cuda-6.5/samples
sudo make


全部编译完成后, 进入 samples/bin/x86_64/linux/release, sudo下运行deviceQuery

sudo ./deviceQuery


如果出现下列显卡信息, 则驱动及显卡安装成功:

./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 670"
  CUDA Driver Version / Runtime Version          6.5 / 6.5
  CUDA Capability Major/Minor version number:    3.0
  Total amount of global memory:                 4095 MBytes (4294246400 bytes)
  ( 7) Multiprocessors, (192) CUDA Cores/MP:     1344 CUDA Cores
  GPU Clock rate:                                1098 MHz (1.10 GHz)
  Memory Clock rate:                             3105 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 524288 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Bus ID / PCI location ID:           1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForce GTX 670
Result = PASS




三、安装Theano并配置GPU模式



设置theano参数的首选项

sudo vim ~/.theanorc


写入:

[global]
floatX = float32
device = gpu



测试Theano的GPU模块http://deeplearning.net/software/theano/tutorial/using_gpu.html#testing-theano-with-gpu

如果为如下的输出则GPU模块正常

$ THEANO_FLAGS=mode=FAST_RUN,device=cpu,floatX=float32 python check1.py
[Elemwise{exp,no_inplace}()]
Looping 1000 times took 3.06635117531 seconds
Result is [ 1.23178029  1.61879337  1.52278066 ...,  2.20771813  2.29967761
  1.62323284]
Used the cpu

$ THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python check1.py
Using gpu device 0: GeForce GTX 580
[GpuElemwise{exp,no_inplace}(), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 0.638810873032 seconds
Result is [ 1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.29967761
  1.62323296]
Used the gpu


可以通过THEANO_FLAGS参数来覆盖首选项中的参数,例如切换到CPU模式

THEANO_FLAGS='floatX=float32,device=gpu0,nvcc.fastmath=True'  python .py


几个参考网页:

1、安装双系统     http://os.51cto.com/art/201405/439158.htm

2、安装CUDA     http://www.cnblogs.com/platero/p/3993877.html

3、安装Theano     http://blog.csdn.net/abcjennifer/article/details/23016583


合理地运用好GPU运算速度往往能得到数十倍的提升,安装配置过程虽然繁杂,但是绝对磨刀不误砍柴工,会有让你惊喜的性能飞跃,值得一试。

你可能感兴趣的:(Deep,learning)