Theano-艰辛的GPU配置之路

缘由

GPU可以极大的加速运算,特别是图像的运算。所以做图像处理不能不用。
那么就开始配置把。

在配置的过程中走了很多弯路。报了很多错误,终于配成功了。

测试GPU是否正常运行

使用官方给的代码

from theano import function, config, shared, sandbox  
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' % iters, t1 - t0, 'seconds'  
print 'Result is', 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'

如果显示 Used the gpu恭喜,GPU配置成功。但刚开始是不会那么顺利的。

安装CUDA

按照官方文档,开始装cuda。因为是ubuntu14.04,所以直接

sudo apt-get install nvidia-current
sudo apt-get install nvidia-cuda-toolkit

随后想按照文档去添加环境变量。发现。。。根本找不到cuda
安装在哪里了。。。。

到了Nvida官网
选择了操作系统ubuntu14.04 64位,离线的deb包。

sudo dpkg -i xxxx.deb
sudo apt-get update
sudo apt-get install cuda

第一个错,磁盘空间不足

下载的deb包其实是个压缩包,他有1G多。解压后又占几个G,让我的磁盘满了。。且知道了他会解压到/var/cuda…下面。
把一些文件挪到其他盘后。好了。。

第二个错

E:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系

后面提示缺少cuda-7-5

解决方法: 使用apt-get install 安装他缺少的库。
结果这个命令又提示缺少别的。 如此再安装他缺少的。

最终把这个cuda装上了。

装上后,还是不能跑

就又回到默认的试试

sudo apt-get install nvidia-current
sudo apt-get install nvidia-cuda-toolkit

还是不行。

找到了cuda 的安装位置

在/usr/local/cuda下面。 设置了要求的$CUDA_ROOT
仍然不行。

准备更新Nvidia驱动

到官网下载后是一个run文件。

chmod +x xxx.run
sudo ./xxx.run

提示说,只有需要结束x-server。

搜索材料后说是要用

gdm stop

我发现gdm没有就装了一个,结果发现这是个桌面。。。。。

重启后,发现进不了系统了。只有桌面背景啥也没有了。
幸好还能开shell。尝试继续
查资料后找到了,原来模认是lightgm,是在init.d目录下的。
找到lightgm的目录然后,运行

sudo lightgm stop

桌面崩溃了

重启后,发现进不了系统了。只有桌面背景啥也没有了。
多次重启后,发现能看到一点东西。那个gdm桌面也可以看到一点点。
幸好还能开shell。尝试继续
按Alt+F2输入用户名和密码登陆。。。
安装显卡驱动失败。。。。 原因不详。
想再重新装一下cuda发现,命令行中无法正常运行。
重启进入图形界面,打开了幸运能打开的命令行

重装了cuda

为什么又要装cuda,因为似乎这个东西是带显卡驱动的。。。
重装了cuda,桌面竟然就好了。。。

测试显卡

运行 nvidia-smi命令,发现说找不到类库。加了几个类库到
/etc/environment这个文件中。可以运行了。终于出了结果。
+——————————————————+
| NVIDIA-SMI 352.63 Driver Version: 352.63 |
|——————————-+———————-+———————-+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GT 635M Off | 0000:01:00.0 N/A | N/A |
| N/A 73C P0 N/A / N/A | 475MiB / 2047MiB | N/A Default |
+——————————-+———————-+———————-+

+—————————————————————————–+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
+—————————————————————————–+

Not Supported什么鬼?

到最后我也没弄明白这是什么鬼。
使用最上面的那个测试代码,发现还是不成。

加全类库路径并设置~/.theanorc文件。

CUDA_ROOT="/usr/local/cuda-7.5/"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$CUDA_ROOT/bin:/usr/lib/nvidia-352/bin:/usr/lib/nvidia-352/:/usr/local/cuda/lib64:/usr/local/cuda-7.5/targets/x86_64-linux/lib"
LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/cuda-7.5/targets/x86_64-linux/lib"

.theanorc文件

[global]
device = gpu
floatX=float32

[nvcc]
flags=--machine=64

[lib]
cnmem=100

总结

  1. 安装cuda最新版。
  2. 讲环境变量设置全。 包括CUDA_ROOT. PATH中加lib , LD_LIBRARY_PATH 加全面。
  3. 安装cuda后要重启电脑
  4. 一定要设置.theanorc文件。
  5. 环境变量中要能找到nvcc。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值