centos下theano以及CUDA的配置

今天终于搞定了centos下theano以及GPU配置,这里记录一下。

 

1.theano的安装(见前面博文,这里再重新记录一下)

 

(1)# 安装 theano所需的包   

sudo yum install python-devel python-nose python-setuptools gcc gcc-gfortran gcc-c++ blas-devel lapack-devel atlas-devel

 

(2)# 安装pip和python库

sudo easy_install pip

sudo pip install numpy

sudo pip install scipy

 

(3)# 安装theano

sudo pip install theano

 

(4)# 测试

python -c "import theano;theano.test()"

 

假如能够跑起来,就安装好了。

2.cuda的安装(之前已经写过记录,这里贴过来,方便查看)

目前使用的GPU型号为:Tesla C2075

(1)安装前的工作

要在centos下面安装cuda,首先要检查一下内容:

A:有可以运行cuda的GPU

B:有支持cuda的Linux系统

C:安装了GCC

D:下载GPU驱动、NVIDIA CUDA Toolkit

对于A,可以用下面命令查看:

$ lspci | grep -i nvidia

如果这条命令报错,如“bash: lspci: command not found”,则可以用下面的命令查看:

$ /sbin/lspci | grep -i nvidia

输完命令之后,会显示安装的NVIDIA的显卡信息。

对于B,可以用以下命令查看:

$ uname -m && cat /etc/*release

这时候就会显示已经安装好的系统的版本信息。

对于C,可以用以下命令查看:

$ gcc --version

这时就会显示安装的GCC版本

下载tesla C2075驱动和cuda toolkit

Tesla C2075驱动:http://www.nvidia.cn/Download/index.aspx?lang=cn

Cuda  toolkit      : https://developer.nvidia.com/cuda-toolkit-archive

下载驱动的时候,最好选择使用英文版的,版本选择请根据机器的显卡类型和配置,安装文件的格式建议最好使用run的,因为安装起来比较简单。

(2)开始安装

A 禁用nouveau  ( 针对CentOS 6.X系统 )

方法:

1)把驱动加入黑名单中

# vi /etc/modprobe.d/blacklist.conf

在其中添加:blacklist nouveau

2)使用dracut重新建立 initramfs image file

# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

# dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

3)将系统切换至文本模式

# vi /etc/inittab 

将5改成3

重启之后,系统会进入文本模式,若仍然进入图形模式,则说明没有成功禁用nouveau。

A 禁用nouveau  ( 针对CentOS 7.X系统 )

1)把驱动加入黑名单

# vi /usr/lib/modprobe.d/dist-blacklist.conf

注释掉 blacklist nvidiafb

在其中添加:

blacklist nouveau

options nouveau modeset=0

2)使用dracut 重新建立 initramfs image file

# mv /boot/initramfs-$(uname -r).img  /boot/initramfs-$(uname -r).img.bak

# dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

3)将系统启动切换至文本模式

# systemctl set-default multi-user.target

( 切换至图形界面的命令为: # systemctl set-default graphacal.target )

检查是否切换成功的命令为:

# system get-default

重启电脑,就会发现进入文本模式。

B 运行安装文件

1)进入文本模式后,登录root账户,进入含有驱动文件的文件夹,然后运行命令:

# sh NVIDIA-Linux-x86_64-340.87.run

会出现安装界面。

2)安装的过程中一开始的选项根据需要选择即可,当提示是否升级X configuration的时候,选择默认的NO,不要选择YES。

(这样选择是因为有的显卡不具有显示功能,比如Tesla C2075,假如选择yes的话,C2075的配置文件会覆盖掉原来的配置文件,导致无法显示。假如显卡具有显示功能,那么选择YES的话,应该不会有问题。)

3)当提示是否安装32位兼容的时候,我选择的是yes,安装完之后没有出现错误,当然也有人说选NO,这里不是特别清楚。

4)安装完成之后,把系统切换回图形化界面,然后重启机器,假如发现进不了图形化界面,则按ctrl+alt+F2进入文本模式,登录root账户,然后将/etc/X11下面的xorg.conf文件删掉即可。

C 安装cuda-toolkit

在文本模式下,进入有cuda-toolkit的文件夹,运行命令:

# sh cuda_6.5.14_linux_64.run

即可开始安装。

1)提示是否安装显卡驱动的时候,选择NO,因为上一步已经安装了显卡驱动

2)剩下的选择默认即可。

3)配置环境变量

# export PATH=/usr/local/cuda-6.5/bin:$PATH

# export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH

若安装的不是cuda6.5,则根据自己的真实情况改过来就行。

(3)测试

进入/usr/local/cuda-6.5/samples/1_Utilities文件夹,里面有好几个测试样例,常用的是检查设备信息的deviceQuery和测试通讯带宽的bandwidthTest,我们选择deviceQuery,进入之后,运行命令:

# make

# ./deviceQuery

假如成功运行的话,会出现设备的详细信息,最后会出现pass提示。

(4)卸载cuda-toolkit

进入/usr/local/cuda/bin文件夹,然后运行命令:

# ./uninstall_cuda_**.pl

3.在theano中配置cuda

配置好cuda之后,有一个测试theano是否成功调用cuda的脚本,程序如下:

##################################################

from theano import function, config, shared, tensor

import theano.tensor as T

import numpy

import time

 

vlen = 10 * 30 * 768            # 10 x #cores x # threads per core

iters = 1000

 

rng = numpy.random.RandomState(22)

x = shared(numpy.asarray(rng.rand(vlen), config.floatX))

f = function([], T.exp(x))

print(f.maker.fgraph.toposort())

t0 = time.time()

for i in xrange(iters):

    r = f()

t1 = time.time()

print("Looping %d times took %f seconds" % (iters, t1 - t0))

print("Result is %s" % (r,))

if numpy.any([isinstance(x.op,T.Elemwise) for x in f.maker.fgraph.toposort()]):

    print('Used the cpu')

else:

    print('Used the gpu')

##################################################

将上面程序保存为“test.py”,然后运行命令“THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python test.py”,会提示nvcc路径不对,此时可以使用“nvcc -V ”命令查看,若输入之后没有提示nvcc的详细信息或者没有该命令,则说明nvcc没有配置正确,那么可以按照如下命令进行配置:

# echo 'export PATH=/usr/local/cuda-6.5/bin:$PATH'>>~/.bashrc

# echo 'export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH'>>~/.bashrc

# source ~/.bashrc

配置完之后,重新输入nvcc -V就可以看到详细信息了。

配置完nvcc之后,再次使用前面的命令运行test.py程序,如果一切正确的话,则会显示程序的运行时间以及“used the GPU”,说明theano中调用GPU成功,若是显示使用CPU,则说明没有成功调用GPU。

在其他用户下同样出现找不到NVCC的时候,也只需将上面的3条命令配置一下即可。

4.安装cuDNN

cuDNN是加速组件,下载地址为:https://developer.nvidia.com/cudnn,本文以v5.1.5为例,解压后有两个文件夹:cuda/include和cuda/lib64。lib64中有:libcudnn.so,libcudnn.so.5,libcudnn.so.5.1.5和libcudnn_static.a4个文件,include中有cudnn.h一个文件。安装方法如下:

(1)进入lib64文件夹,运行命令:

# cp lib* /usr/local/cuda/lib64/

进入include文件夹,运行命令:

# cp cudnn.h /usr/local/cuda/include

(2)更新软连接

cd /usr/local/cuda/lib64/

rm -rf libcudnn.so libcudnn.so.5

ln -s libcudnn.so.5.1.5 libcudnn.so.5

ln -s libcudnn.so.5 libcudnn.so

如需更换cudnn版本,则替换原来的libcudnn*,重新建立软连接并更新链接库:sudo ldconfig

参考:http://blog.csdn.net/jhszh418762259/article/details/52958287?locationNum=8&fps=1

5.设置cnmem

在用户主目录下,建立文件.theanorc  (有个点.)

打开并输入以下即可:

[lib]

cnmem=1

6.GPU的指定

当机器安装有多块GPU的时候,可以使用命令进行指定:

$ export CUDA_VISIBLE_DEVICES=2

指定GPU,亦可以在运行命令“THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32

python test.py”的时候,设置其中的“device=gpu2”或者“device=gpu0”来实现。

关于GPU标号和GPU卡的对应关系,可以使用以下命令查看:
       $ cd /usr/local/cuda-6.5/sample/1_utilities/deviceQuery/
       $ make (第一次使用需要make,之后不再需要)
       $ ./deviceQuery
       此时会显示机器所有GPU的详细信息,如显示:
       ……
       Detected 4 CUDA Capable device(s)
       Device 0:“Tesla K40c”
       CUDA Driver Version / Runtime Version   6.5/6.5
       CUDA Capability Major/Minor version number   3.5
       ……

这里的意思就是检测到4块GPU卡,其中的K40C的标号是0,以此类推。

参考资料:

[1]http://deeplearning.net/software/theano/install.html   (官方theano安装教程)

[2]http://www.myexception.cn/cuda/2017261.html        (cuda和theano安装)

[3]http://jingyan.baidu.com/article/9f63fb91d7e6b5c8400f0e0c.html   (centos安装显卡驱动)

[4]http://deeplearning.net/software/theano/tutorial/using_gpu.html#using-gpu  (theano使用GPU)

[5]http://blog.csdn.net/jhszh418762259/article/details/52958287?locationNum=8&fps=1    (安装cuDNN)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值