备注:之前服务器上已经安装caffe,后安装Theano,所有有些步骤简略。
安装caffe详情见
Caffe + Ubuntu 15.04 + CUDA 7.5 在服务器上安装配置及卸载重新安装(已测试可执行)
安装所需的安装包见
链接: http://pan.baidu.com/s/1jIRJ6mU
提取密码:xehi

Theano官方网站:
http://deeplearning.net/software/theano/#


BLAS(Basic Linear Algebra Subprograms)是基础线性代数子程序库,里面拥有大量已经编写好的关于线性代数运算的程序;
LAPACK (Linear Algebra PACKage)包含了求解科学与工程计算中最常见的数值线性代数问题,如求解线性方程组、线性最小二乘问题、特征值问题和奇异值问题等;
ATLAS是python下的一个线性代数库,是基于另外两个线性代数库BLAS和lapack的;
NumPy提供了一个在python中做科学计算的基础库,它重在数值计算,甚至可以说是用于多维数组处理的库;
SciPy是基于numpy,提供了一个在python中做科学计算的工具集,也就是说它是更上一个层次的库;
Theano则是基于NumPy以及SciPy的一个更高级的用于科学计算的库。

要安装Theano,就需要先安装好numpy和scipy;
要安装numpy和scipy,就需要ATLAS;
要安装ATLAS,就需要安装BLAS和LAPACK;

相关库的安装顺序

安装顺序:BLAS → LAPACK → ATLAS → numpy → scipy → Theano

第1步:安装cuda,若已经安装可进入第2步

sudo dpkg -i cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64.deb
sudo apt-get update
sudo apt-get install -y cuda

但此时查询cuda会出现问题

nvcc -V

问题是

The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit

但是我们已经安装了cuda,在 /usr/local 能够看到文件夹 cuda-7.5。 这需要如下设置

执行sudo gedit ~/.bashrc,在最后面,64位的话粘贴以下内容:

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

接着执行 source ~/.bashrc 使其立即生效
下面查询

nvcc -V

可见如下结果

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17

第2步:配置cuda
执行

nvidia-settings

会弹出显卡配置的界面,至少7个大项,其中有一项叫GPU-0(Quadro K5200)和GPU-1(Tesla K40c),如果能看到自己的显卡的话,应该就算安装成功了。下面进行配置。


使用自带的samples进行GPU运算测试。进入到cuda-7.5的samples目录,一般都是cd /usr/local/cuda-7.5/samples,然后会有一个Makefile文件,执行命令

sudo make

不出意外地话,会出现带有红颜色的error错误,大概是这样的:unsupported GNU version! gcc versions later than 4.9 are not supported! 意思也很明显了,就是gcc的版本高于4.9,Cuda不支持。


解释一下:ubuntu15.04自带的gcc是4.9.2,可以通过

gcc --version

查看,但是cuda不支持超过4.9.2的gcc编译器。要么安装一个低版本的编译器,要么把cuda的这个限制给去掉。


方法1:降级安装gcc/g++版本为4.7.x
(a). 下载gcc/g++ 4.7.x

sudo apt-get install -y gcc-4.7
sudo apt-get install -y g++-4.7

(b). 链接gcc/g++实现降级

cd /usr/bin
sudo rm gcc
sudo ln -s gcc-4.7 gcc
sudo rm g++
sudo ln -s g++-4.7 g++

方法2 去掉 cuda的限制

sudo cd /usr/local/cuda/include/ #进入到头文件目录cuda(而不是cuda-7.5);
sudo cp host_config.h host_config.h.bak #备份原头文件;
sudo gedit host_config.h #编辑头文件;

ctrl+F查找4.9出现的地方,大约位于115行,在第113行处应该显示if GNUC>4 || (GNUC == 4 && GNUC_MINOR > 9),因为我们的是4.9.2,因此,把上面的2个4都改成5就ok了,保存退出。

备注:Matlab 2014a(2015a)的版本是4.7.x所以在使用matla调用mex文件的时候,基本上都会报错。综上所述,建议使用方法1来修改。


接着进行编译

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

这个过程会比较长,让他在哪编译一会,剩下的时间可以用来安装Theano。

第3步: 安装 Theano

更新源

sudo apt-get update

安装依赖包

sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ libopenblas-dev git

安装scipy依赖包
scipy的安装需要依赖于numpy、lapack、atlas(后两者都是线性代数工具包),而numpy和sci的测试程序的运行又依赖于nose,因此,整个安装过程必须要按顺序执行的,否则是无法执行下去的。


1、先安装nose包


sudo apt-get install python-nose

2、接下来安装各种包


# 安装gfortran,后面编译过程中会用到
sudo apt-get install gfortran
# 安装blas,Ubuntu下对应的是libopenblas,其它操作系统可能需要安装其它版本的blas——这是个OS相关的。
sudo apt-get install libopenblas-dev
# 安装lapack,Ubuntu下对应的是liblapack-dev,和OS相关。
sudo apt-get install liblapack-dev
# 安装atlas,Ubuntu下对应的是libatlas-base-dev,和OS相关。
sudo apt-get install libatlas-base-dev

  1. 安装numpy scipy
sudo apt-get install python-numpy  # python2.7
sudo apt-get install python3-numpy # python3.5
sudo apt-get install python-scipy  # python2.7
sudo apt-get install python3-scipy # python3.5

安装Theano

sudo pip install Theano

测试numpy是否启用了blas加速,进入python
在命令行输入

python
>>>import numpy
>>>id(numpy.dot) == id(numpy.core.multiarray.dot)
>>>False

输出False表示加速成功,如果输出True,参考官方教程修改,理论上很少加速失败。失败请查看高性能Numpy/Scipy加速:使用Intel MKL和Intel Compilers或OpenBLAS(待续)

第4步: 编辑Theano配置文件

sudo gedit ~/.theanorc 

写入以下下内容:

[global]
openmp=False
floatX=float32
device=gpu
allow_input-downcast=True
[blas]
ldflags=
[nvcc]
flags=-D_FORCE_INLINES
[lib]
cnmem = 1

第5步:命令端其他测试

NumPy (~40s)

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

SciPy (~2m)

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

Theano (~30m)

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

在Theano测试时可能会有问题

Using gpu device 0: Tesla K40c (CNMeM is disabled, cuDNN Version is too old. Update to v5, was 4004.)

所以这需要升级为cuDNN v5。


出现了no module named nose-parameterized问题

pip install nose-parameterized

第6步:测试经典的GPU测试代码保存至test.py

sudo gedit test.py

写入以下内容

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')

结果显示如下

Using gpu device 0: Tesla K40c (CNMeM is disabled, cuDNN 5103)
/home/bids/.local/lib/python2.7/site-packages/theano/sandbox/cuda/__init__.py:600: UserWarning: Your cuDNN version is more recent than the one Theano officially supports. If you see any problems, try updating Theano or downgrading cuDNN to version 5.warnings.warn(warn)
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
-------------------------------------------------------
Looping 1000 times took 0.630527973175 seconds
---------------------------------------------------------
Result is [ 1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.299677611.62323296]
Used the gpu

如果想用cpu测试的话,就sudo gedit ~/.theanorc,将其中的gpu修改为cpu就可以了。
结果显示如下

[Elemwise{exp,no_inplace}(<TensorType(float32, vector)>)]
-----------------------------------------------------------
Looping 1000 times took 3.24689912796 seconds
-----------------------------------------------------------
Result is [ 1.23178029  1.61879337  1.52278066 ...,  2.20771813  2.299677611.62323284]
Used the cpu

结果显示 GPU加速效果明显


Using gpu device 0: Tesla K40c (CNMeM is disabled, cuDNN 5103)
解决方法


cnmem package: https://github.com/NVIDIA/cnmem

cd $HOME
% git clone https://github.com/NVIDIA/cnmem.git cnmem
% cd cnmem
% mkdir build
% cd build
% cmake ..
% make

link with cnmem


The source folder contains a header file include/cnmem.h and the build directory contains the library libcnmem.so, put them into your cuda path: /usr/local/cuda/include,/usr/local/cuda/lib64

sudo cnmem
sudo cp -rf ./include/cnmem.h /usr/local/cuda/include
sudo cp -rf ./build/libcnmem.so /usr/local/cuda/lib64

sudo gedit ~/.theanorc
[global]
openmp=False
floatX=float32
device=cpu
allow_input-downcast=True
[blas]
ldflags=
[nvcc]
flags=-D_FORCE_INLINES
[lib]
cnmem = 1

测试

python test.py
Using gpu device 0: Tesla K40c (CNMeM is enabled with initial size: 95.0% of memory, cuDNN 5110)

参考主页:

Ubuntu15.10_64位安装Theano+cuda7.5详细笔记

Ubuntu-安装-theano+caffe-超详细教程

Caffe + Ubuntu 15.04 + CUDA 7.5 在服务器上安装配置及卸载重新安装(已测试可执行)

Ubuntu14.04安装Theano详细教程

Theano: CNMeM is disabled, CuDNN not available

Windows10 64Bit完美配置Theano并实现GPU加速并解决((CNMeM is disable,CuDNN not available))

Ubuntu15.04 64位安装Theano(已经测试可执行)相关推荐

  1. Ubuntu 14.04 64 位安装 Google 的 TensorFlow

    今天来说一下机器学习库 TensorFlow 的在 Ubuntu14.04 64位下的安装. 更新 这里我会列出对本文的更新. 2017 年 10 月 13 日: 优化排版,与其他博文保持统一. 去掉 ...

  2. Ubuntu12.04 64位安装qq

    今天安装qq走了不少弯路 1.WebQQ 放弃吧,一点都不好用,还占用资源 2.wineqq放弃吧,今天是2015.4.19,wineqq只有2013版的,已经过旧无法使用了,害的我下了一堆的win库 ...

  3. Ubuntu 14.04 64位安装32位兼容包

    问题描述 我的操作系统是64bit版的Ubuntu 14.04,很多32bit的软件无法安装使用,因此希望通过安装32位兼容包解决. 安装过程 在Ubuntu 13.10之前,可以通过安装 ia32- ...

  4. Ubuntu 16.04 64位安装arm-linux-gcc交叉编译器以及samba服务器

    交叉编译器是嵌入式开发的必要工具,但是由于目前大多数人使用64位ubuntu,在照着很多教程做的时候,就会失败,失败原因是64位ubuntu需要额外安装32位的兼容包.以arm-linux-gcc-3 ...

  5. ubuntu14.04 64位安装H3C iNode客户端

    环境: OS:ubuntu14.04LTS 64位 iNode: iNode2.40-R0162 for linux(iNode只有32位的,而且是很久以前的版本) 安装方法: 第一种: 检查本机是6 ...

  6. Ubuntu14.04 64位安装wineqq过程

    1.下载WineQQ     下载地址http://www.longene.org/download/,在列表中选择心仪版本. 2.安装WineQQ 下载后在下载目录中运行:sudo dpkg -i ...

  7. ubuntu 12.04 64位 安装qq

    在ubuntu系统上用上qq忒开心 1.到以下网址下载deb安装包,http://www.longene.org/download/qq2011-for-wine_20120220.deb,已经打包好 ...

  8. Ubuntu 16.04 64位 安装 modelsim

    一.准备 下载modelsim 10.2安装文件及pojie文件 Ubuntu上没有健全的Java环境,先安装jre.jdk sudo apt-get install default-jre sudo ...

  9. 玩玩机器学习1——ubuntu16.04 64位安装TensorFlow GPU+python3+cuda8.0+cudnn8.0

    如今的机器学习运算大多数都是利用gpu进行,包括很大大型游戏,比特币的开采,都离不开GPU的运算,GPU已成为大型运算能力的主要硬件. 大名鼎鼎的机器学习开源框架,如TensorFlow和Caffe, ...

最新文章

  1. 中国互联网+固体饮料行业商业模式创新与投资机会深度研究报告
  2. 罗兰贝格84页白皮书:一文看懂中国ICT产业新黄金十年
  3. 题目1095:2的幂次方
  4. centos6.5搭建php网站,Centos6.5下搭建web环境(Apache+mysql+php+phpMyAdmin)
  5. Chrome指令/追踪Http请求相关
  6. MySQL中查询获取每个班级成绩前三名的学生信息
  7. 《深入理解Java虚拟机》第7章 虚拟机类加载机制
  8. 支持向量机的前世与今生
  9. 力扣两数之和jAVA_力扣----1.两数之和(JavaScript, Java实现)
  10. arange函数--Numpy
  11. python中的IO操作
  12. 【离散数学】最大元素、最小元素、极大元素、极小元素、上界、下界、最小上界(上确界)、最大下界(下确界)
  13. 威联通服务器无限重启,威联通NAS,时不时的读盘,无法休眠的问题
  14. 计算机视觉论文-2021-06-24
  15. 2021-05-28 sqlplus命令连接数据库的几种方法
  16. 高新技术企业认定 国家高新技术企业复审指南
  17. 鸿蒙OS应用开发之——环境搭建
  18. office 字体大小选择,没有 一号二号等中文字体
  19. 边缘计算如何为工业物联网提供便利和好处
  20. 阮一峰老师博客爬取与博客文章存储持久化方式的思考

热门文章

  1. Linux系统自动备份脚本,供参考的Linux系统中自动执行分段备份脚本
  2. Mike and gcd problem(思维)
  3. java系统系统异常处理,银行系统(Java)异常处理
  4. mysql存储过程实例_mysql存储过程案例讲解
  5. openshift4离线部署_OpenShift 4.2 离线安装补充记录
  6. java xml map 方法_JAVA XML转换MAP 方法
  7. java mybatis 代码生成器_Java MyBatis-Plus 代码生成器
  8. 『数学』你确定你学会了勾股弦定理!真的吗?看完这个篇文章再回答我!
  9. org.apache.hadoop.hbase.ClockOutOfSyncException
  10. YOLT遥感图像检测算法详解