ubuntu16.04默认安装了python2.7和python3.5 。本教程使用python3.5

第一步:将ubuntu16.04默认的python2修改成默认使用python3 。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

运行上述代码之后会将ubuntu16.04默认使用python2修改为默认使用python3 。

输入命令 python 可以进入python的交互界面,会显示python的版本 。

第二步:安装theano和CUDA

sudo apt-get install python3-numpy python3-scipy python3-dev python3-pip python3-nose g++ libopenblas-dev git
sudo pip3 install Theano # cuda 7.5 don't support the default g++ version. Install an supported version and make it the default.
sudo apt-get install g++-4.9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10 sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++ # Work around a glibc bug
echo -e "\n[nvcc]\nflags=-D_FORCE_INLINES\n" >> ~/.theanorc

逐个运行上述命令即可安装theano和CUDA,以及numpy、scipy等常用的库。

安装完成后,可进入python交互界面,运行

import numpy;numpy.test()

import scipy;scipy.test()

import theano;theano.test()

检测是否安装成功。

作者安装后测试时numpy和scipy这两个库显示OK,theano显示Fail,但是theano可以正常导入和使用。(这点我也不明白,大神们路过时还望指点一二)

至此,theano安装完毕,可以在cpu上运行theano的程序了。

第三步:配置.theanorc文件

在linux根目录下打开.theanorc(注意前面是带点的)文件,将

[global]

device = gpu

floatX = float32

[nvcc]

fastmath = True

加入到该文件里。

第四步:安装nvcc

这个就比较简单了

sudo apt-get insatll nvcc

就可以了。

至此,所有安装程序都完成了。

可以使用下面这点代码来测试程序是使用cpu还是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 range(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')

  

以上就是本人亲身安装的全部过程,折腾了好久。如有疑问或者哪里有不对的,还请留言指出。

  

最新文章

  1. JavaScript高级程序设计-(2)基础概念
  2. LeetCode 笔记系列 17 Largest Rectangle in Histogram
  3. html5 css3中的一些笔记
  4. Android webView解析URL参数
  5. git管理maven项目实现
  6. ELK笔记
  7. Splunk - 如何在WebFramework之CORS模式下你的网站和splunk web进行交互
  8. [转载]angularjs学习总结 详细教程
  9. a链接onclick="window.location.href=在ie6上面无法执行解决
  10. 关于JavaScript是否会阻塞图片加载
  11. P1912: [Apio2010]patrol 巡逻
  12. Oracle & Sun
  13. 【号外号外:微软收购 .NET 的开源实现 Xamarin 项目的公司】
  14. MapReduce流程、如何统计任务数目以及Partitioner
  15. PHP代码,拒绝频繁访问
  16. Weex-进阶笔记一
  17. Android学习总结(十五) ———— Notification(状态栏通知)基本用法
  18. XSD详解二 - 简易元素、属性、内容限定
  19. MATLAB模型预测控制(MPC,Model Predictive Control)
  20. 【SQL跟踪工具】SQL Profiler 跟踪器

热门文章

  1. eclipse中关闭java文件后再打开,找不到如何切换可视化编辑器
  2. sigqueue与kill详解及实例
  3. arduino 语音音箱 :语音控制、MP3播放、报时、回复温湿度情况
  4. nginx负载均衡核心组件介绍
  5. LeetCode948-令牌放置
  6. JZOJ 4421. aplusb
  7. 本地Navicat连接虚拟机MySQL
  8. 826. Most Profit Assigning Work
  9. ACM-ICPC 2018 徐州赛区网络预赛
  10. sql优化系列1