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


备注:之前服务器上已经安装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))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跳槽时,不敢要高工资也会对候选人不利

我在做技术面试官的时候&#xff0c;在问完问题后&#xff0c;照例会问一句&#xff1a;你期望的工资是多少&#xff1f;对此&#xff0c;我只会记录下候选人的回答然后上报&#xff0c;没有同意权&#xff0c;更没有批驳权。 判断候选人能否通过面试&#xff0c;主要看候选人能…

ubuntu 15.04 下的 nvidia(待续)

检查自己的GPU是否支持CUDA&#xff0c;linux可用以下命令来查看GPU型号&#xff1a; lspci | grep –i nvidia 本机显示结果如下 03:00.0 3D controller: NVIDIA Corporation GK110BGL [Tesla K40c] (rev a1) 04:00.0 VGA compatible controller: NVIDIA Corporation GK110…

LSTM

具体推导公式为&#xff1a; https://zybuluo.com/hanbingtao/note/581764 转载于:https://www.cnblogs.com/invisible2/p/11593270.html

查看windows显卡内存详细信息

方式一&#xff1a; 打开运行&#xff08;WindowsR&#xff09;&#xff0c;输入DXDIAG&#xff0c;打开DirectX诊断工具 可以看到显卡是AMD Radeon HD 7000 series&#xff0c;但是没有具体显卡信息&#xff0c;这个型号是AMD在2013年主推的ATI的入门级独显系列&#xff0c;其…

会话技术CookieSession

1&#xff0e;会话技术 从打开一个浏览器访问某个站点&#xff0c;到关闭这个浏览器的整个过程&#xff0c;成为一次会话。会 话技术就是记录这次会话中客户端态的状与数据的。 会话技术分为Cookie和Session&#xff1a; Cookie&#xff1a;数据存储在客户端本地&#xff0…

从服务器上传和下载文件方法

1. ssh 安装SSH Secure Shell Client客户端 下载链接 http://download.csdn.net/detail/jiandanjinxin/9755684 使用方法参考主页 http://www.cnblogs.com/wxjnew/archive/2013/06/05/3118808.html http://www.cnblogs.com/pingzhanga/p/5126885.html 导致此问题的原因是…

动态页面技术(JSP/EL/JSTL)

1 JSP技术1.1 jsp脚本和注释jsp脚本&#xff1a;  1) <%java代码%> ----- 内部的java代码翻译到service方法的内部  2) <%java变量或表达式> ----- 会被翻译成service方法内部out.print()  3) <%!java代码%> ---- 会被翻译成servlet的成员的内容jsp…

Deep Learning运行所需的硬件配置(转)

A Full Hardware Guide to Deep Learning 2015-03-09 by Tim Dettmers 304 Comments 转自&#xff1a;http://timdettmers.com/2015/03/09/deep-learning-hardware-guide/ Deep Learning is very computationally intensive, so you will need a fast CPU with many cores, ri…

DBUtils

概述 DBUtils是Java编程中的数据库操作实用工具&#xff0c;小巧简单实用。 DBUtils封装了对JDBC的操作&#xff0c;简化了JDBC操作&#xff0c;可以少写代码。 DBUtils三个核心功能介绍 QueryRunner中提供对sql语句操作的APIResultSetHandler接口&#xff0c;用于定义select操…

ubuntu系统中import h5py, ImportError: No module named h5py的解决方法

问题如下&#xff1a; 在python中输入 import h5py 却出现如下问题&#xff1a; Traceback (most recent call last):File "<stdin>", line 1, in <module> ImportError: No module named h5py于是&#xff0c;查询网上资料&#xff0c;给出如下解决…

在VNC远程桌面环境Xfce4中Tab键失效的解决方法

配置vnc远程桌面环境xfce4见下文 windows vnc 远程登录 ubuntu Linux 系统 在成功登陆xfce4远程桌面环境之后发现在终端中Tab键不能自动补齐。问题的原因是由于Tab键的功能被窗口快捷键占用&#xff0c;从而Tab键不起作用。 解决方法1如下&#xff1a; <span style&quo…

windows7 下vmware workstation 12安装Ubuntu16.04虚拟机及安装和共享文件夹

关于安装虚拟机&#xff0c;具体细节可参考下文&#xff08;已测试可执行&#xff09; vmware workstation 12 安装 ubuntu kylin 16.04虚拟机 下面就给出在虚拟机Ubuntu16.04下安装VMware Tools&#xff0c;是为了实现目标主机和虚拟机之间的通讯。 1.打开虚拟机之后&#…

图灵测试是不是已经Out了

图灵测试是图灵于1950年提出的一个关于判断机器是否能够思考的著名试验&#xff0c;测试某机器是否能表现出与人等价或无法区分的智能。 机器能否具备人类思考能力是图灵测试的核心关键。因此&#xff0c;若一台机器仅仅是通过了所谓的某种规则的“图灵测试”&#xff0c;这不…

ubuntu 15.04 /var/log/下各个日志文件及修复无message文件和debug文件

本文简单介绍ubuntu/var/log/下各个日志文件&#xff0c;方便出现错误的时候查询相应的log /var/log/alternatives.log-更新替代信息都记录在这个文件中/var/log/apport.log -应用程序崩溃记录/var/log/apt/ -用apt-get安装卸载软件的信息/var/log/auth.log -登录认证log/v…

ubuntu 15.04 系统中如何启用、禁用客人会话

方法1&#xff1a; 禁止启用客人会话 sudo gedit /etc/lightdm/lightdm.conf输入如下 [SeatDefaults] greeter-sessionunity-greeter user-sessionubuntu allow-guestfalse 然后关机重启即可生效。 启用客人会话 去掉 allow-guestfalse 即可。 方法2&#xff1a; 禁止…

前端行性能优化

PS&#xff1a;结合了精英的思想和自己的一些小小的总结~ 影响用户访问的最大部分是前端的页面。网站的划分一般为二&#xff1a;前端和后台。我们可以理解成后台是用来实现网站的功能的&#xff0c;比如&#xff1a;实现用户注册&#xff0c;用户能够为文章发表评论等等。而前…

ps怎么扣圆

在 Photoshop 中扣圆&#xff08;即将图像中的对象或人物从背景中抠出并形成一个圆形选择&#xff09;的步骤如下&#xff1a; 打开图像&#xff1a; 在 Photoshop 中打开你想要编辑的图像。 选择椭圆选框工具&#xff1a; 在工具栏中找到椭圆选框工具&#xff08;Elliptical …

Linux 下修改(NTFS或fuseblk)磁盘(卷标)显示名称

因服务器挂在新的硬盘&#xff0c;显示的是硬盘名称为中文&#xff0c;有些程序调用不支持中文&#xff0c;故需要修改挂在硬盘的名称。 查看当前所有分区 sudo fdisk -l 查看所有分区的磁盘格式 df -T 先卸载要修改名称的分区 sudo umount /dev/sda2 修改名称 sudo nt…

构建单页Web应用

单页应用是什么&#xff1f; 让我们先来看几个网站&#xff1a; coding teambition cloud9 注意这几个网站的相同点&#xff0c;那就是在浏览器中&#xff0c;做了原先“应当”在客户端做的事情。它们的界面切换非常流畅&#xff0c;响应很迅速&#xff0c;跟传统的网页明…

电脑可安装的超炫实用软件

本文所提及到的软件下载可见&#xff1a; 链接&#xff1a;http://pan.baidu.com/s/1hsQ9OTQ 密码&#xff1a;bqfc 1. SpaceSniffer 想一目了然你硬盘上什么东西最占地方吗&#xff1f;下这个就对了。 网站&#xff1a;http://www.uderzo.it/main_products/space_sniffer/…