ATLAS + NumPy + SciPy + Theano的python科学计算环境的搭建

ATLAS + NumPy + SciPy + Theano的python科学计算环境的搭建

http://fhqdddddd.blog.163.com/blog/static/1869915420116642947209/

Theano是一个python库,提供了定义、优化以及评估数学表达式的库,尤其适合处理高维数组。使用Theano能获得和C差不多的处理速度,并且当利用GPU进行计算时,效率要优于CPU上运行的C语言程序。利用Theano能快速验证各种算法模型。

但是在Linux上安装theano是一件非常痛苦的事情,从theano的文档中看到,其依赖条件非常多:

(1) 64-bit Linux(最佳)

(2) python 2.4以上

(3) g++ 4.2以上

(4) NumPy 1.5.0以上

(5) SciPy 0.8以上

(6) BLAS支持Level-3

事实上,在安装过程中发现,如果要安装NumPy,还需要安装ATLAS,而ATLAS则又依赖于lapack ……

这其中涉及到:

ATLAS是python下的一个线性代数库,是基于另外两个线性代数库BLAS和lapack的;

NumPy提供了一个在python中做科学计算的基础库,它重在数值计算,甚至可以说是用于多维数组处理的库;

SciPy是基于numpy,提供了一个在python中做科学计算的工具集,也就是说它是更上一个层次的库;

Theano则是基于NumPy以及SciPy的一个更高级的用于科学计算的库。

这里假设python和g++已经按要求装好,并且符合版本要求,以下根据安装的步骤来进行说明:

首先介绍下环境,多核服务器,cpu时钟频率2668MHz,Linux-64bit,非root权限。所有源码放在/data4/open_src中

各开发包的版本为:

开发包     版本       文件名                   下载地址

-----------------------------------------------------------------------------------------------

BLAS                  blas.tgz                 http://www.netlib.org/blas/

lapack     3.2.2      lapack.tgz               http://www.netlib.org/lapack/#_previous_release

ATLAS      3.8.4      atlas3.8.4.tar.bz2       http://sourceforge.net/projects/math-atlas/files/Stable/

NumPy      1.7.1      numpy-1.7.1.tar.gz       https://pypi.python.org/pypi/numpy

SciPy      0.12.0     scipy-0.12.0.tar.gz      https://pypi.python.org/pypi/scipy

Theano     0.6.0      Theano-0.6.0rc3.tar.gz   http://deeplearning.net/software/theano/#download

以下是安装步骤:

step 1. 编译BLAS

(1) 解压:tar -xvzf blas.tgz

(2) cd BLAS

(3) 修改 make.inc 中的编译选项:

PLAT = _LINUX

FORTRAN  = gfortran

OPTS     = -O2 -m64 -fPIC

NOOPT    = -O0 -m64 -fPIC

LOADER   = gfortran

(4) 编译BLAS:make

编译完成后,会生成blas_LINUX.a文件

step 2. 配置ATLAS

在安装ATLAS之前需要先编译lapack,但是为了能使得编译成功,需要保证lapack的编译选项与ATLAS一致。因此首先配置ATLAS,然后将相关编译配置拷贝到lapack中

(1) 解压:tar -xvjf atlas3.8.4.tar.bz2

(2) cd ATLAS

(3) 创建一个build目录,用于存放ATLAS的编译配置:mkdir atlas_build

(4) cd atlas_build

(5) 执行configure进行配置:../configure -b 64 -D c -DPentiumCPS=2668 -Fa alg -fPIC --with-netlib-lapack=/data4/open_src/lapack-3.2.2/lapack_LINUX.a --prefix=~/.local

其中的参数说明如下:

-b 指定编译出库的类型(32位库还是64位库)

-D c -DPentiumCPS 是指定你的CPU的时钟频率,可以通过 grep MHz /proc/cpuinfo 得到

-Fa alg -fPIC 得到与位置无关的代码,生成动态的共享库

--prefix 为安装路径

--with-netlib-lapack 则是制定lapack库文件(此时lapack库文件还没有生成,先随便指定一个)

../configure -b 64 -Fa alg -fPIC -Si cputhrchk 0 --prefix=$HOME/atlas3.8.4 --with-netlib-lapack==$HOME/lapack-3.5.0/liblapack.a

(6) 完成配置后,在Make.inc文件中找到F77和F77FLAGS的参数配置,这两个配置将会赋给lapack的FORTRAN和OPTS

ps:对于ATLAS 3.10及以上版本,设置--with-netlib-lapack会出错,需要直接指定lapack的压缩包(--with-netlib- lapack-tarfile=),它在编译过程中会自动解压和编译lapack,最终生成的so文件也由之前的6个整合成两个。ATLAS 3.10以上版本对后续安装NumPy没有影响,但是在使用的时候会造成有些库文件找不到的现象。因此这里使用的是ATLAS 3.8.4版本。

step 3. 编译lapack

(1) 解压:tar -xvzf lapack.tgz

(2) cd lapack-3.2.2

(3) 拷贝生成make.inc: cp make.inc.example make.inc

(4) 修改make.inc:

将其中FORTRAN和OPTS的值设置得跟 ATLAS/atlas_build/Make.inc 中的F77和F77FLAGS一致

PLAT = _LINUX

BLASLIB = /data4/open_src/BLAS/blas$(PLAT).a

(5) 编译:make

(6) 编译成功后,会在根目录生成两个库文件:lapack_LINUX.a 和 tmglib_LINUX.a

step 4 编译并安装ATLAS

(1) cd ATLAS

(2) 删除原配置:rm -rf atlas_build

(3) 重新配置ATLAS:参考 step 2,并设置 --with-netlib-lapack=/data4/open_src/lapack-3.2.2/lapack_LINUX.a

(4) 在atlas_build中进行编译:make

ps:这个过程相当漫长,耐心等待!!

(5) check编译结果:

make check

make ptcheck (对于多核服务器)

make time

ps:如果check过程中没有报错,则可以放心进行以后的步骤;如果出现报错,也可以尝试进行后续步骤,是否成功就要靠人品了。

(6) 编译动态库:

cd lib

make shared

make ptshared (对于多核服务器)

如果在 lib 下面出现libatlas.so, libcblas.so, libf77blas.so, liblapack.so, libptcblas.so, libptf77blas.so 这6个动态库文件,则表示编译成功

(7) 安装ATLAS:make install

由于之前设置了--prefix=~/.local 因此ATLAS将被安装到 ~/.local/lib 中

(8) cp ./lib/*.so ~/.local/lib

(9) 设置环境变量:在~/.bashrc中添加 export LD_LIBRARY_PATH=~/.local/lib:$LD_LIBRARY_PATH 并执行 source ~/.bashrc

step 5. 安装nose

tar -xzvf nose-1.0.0

cd nose-1.0.0

python setup.py build

python setup.py install

step 6. 安装NumPy

(1) 解压 tar -xvzf numpy-1.7.1.tar.gz

(2) cd numpy-1.7.1

(3) 拷贝生成sit.cfg: cp site.cfg.example site.cfg

(4) 配置site.cfg:

1> 打开[DEFAULT],并设置 library_dirs 和 include_dirs ,使得在编译的时候能够找到atlas库

library_dirs = ~/.local/lib

include_dirs = ~/.local/include

2> 打开[blas_opt],并设置 libraries

libraries = ptf77blas, ptcblas, atlas

3> 打开[lapack_opt],并设置 libraries

libraries = lapack, ptf77blas, ptcblas, atlas

ps:如果在ATLAS安装过程中,没有生成libptf77blas和libptcblas,则需要设置两个libraries为

libraries = f77blas, cblas, atlas

libraries = lapack, f77blas, cblas, atlas

(5) 利用python构建NumPy:python setup.py build

(6) 利用python安装NumPy:python setup.py install --prefix=~/.local

(7) 安装完成后,NumPy被安装在 ~/.local/lib/python2.7/site-packages/numpy

(8) 设置环境变量:在~/.bashrc中添加 export PYTHONPATH=~/.local/lib/python2.7/site-packages:$PYTHONPATH 并执行 source ~/.bashrc

step 7. 安装SicPy

(1) 解压: tar -xvzf scipy-0.12.0.tar.gz

(2) cd scipy-0.12.0

(3) 设置site.cfg: 可以直接将NumPy的site.cfg拷贝到当前目录中

(4) 利用python构建SciPy:python setup.py build

(5) 利用python安装SciPy:python setup.py install --prefix=~/.local

(6) 安装完成后,SciPy被安装在 ~/.local/lib/python2.7/site-packages/scipy

如果前面得到的Fortran编译器是gfortran的话,执行:

python setup.py build --fcompiler=gnu95

如果前面得到的Fortran编译器是g77的话,执行:

python setup.py build --fcompiler=gnu

环境变量设置:

我换成 gnu95 以后,和我以前 环境变量设置有冲突(动态库设置)

export HOME=/home/SCE/zhaolei

export PATH=$HOME/local/bin:$PATH

export LD_LIBRARY_PATH=$HOME/local/lib:$HOME/local/BerkeleyDB.4.5/lib:$LD_LIBRARY_PATH

export LIBRARY_PATH=$HOME/local/lib:$HOME/local/BerkeleyDB.4.5/lib:$LIBRARY_PATH

export LD_RUN_PATH=$LD_LIBRARY_PATH

export INCLUDE=$HOME/local/include:$INCLUDE

所以安装时,只好先注释掉了。

或者下面的变量一般不用设置:

#export LDFLAGS="-L$HOME/local/lib -L$HOME/local/BerkeleyDB.4.5/lib"

#export CPPFLAGS="-I$HOME/local/include -I$HOME/local/BerkeleyDB.4.5/include"

#export CXXFLAGS=$CPPFLAGS

#export CFLAGS=$CPPFLAGS

step 8. 安装Theano

有了以上的准备后,安装Theano就是一个非常简单的过程了。直接利用python就可以完成安装:

(1) 解压:tar -xvzf Theano-0.6.0rc3.tar.gz

(2) cd Theano-0.6.0rc3

(3) python setup.py install --prefiex=~/.local

(4) 安装完成后,SciPy被安装在 ~/.local/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg

然后可以在python下执行相应的测试程序:

python

>>>import nose

>>>import numpy

>>>import scipy

>>>numpy.test('full')

等待。。。。

>>>scipy.test('full')

至此,完成了ATLAS + NumPy + SciPy + Theano的python科学计算环境的搭建

http://blog.sina.com.cn/s/blog_6cb8e53d0101keak.html

Theano是一个python库,提供了定义、优化以及评估数学表达式的库,尤其适合处理高维数组。使用Theano能获得和C差不多的处理速度,并且当利用GPU进行计算时,效率要优于CPU上运行的C语言程序。利用Theano能快速验证各种算法模型。

但是在Linux上安装theano是一件非常痛苦的事情,从theano的文档中看到,其依赖条件非常多:

(1) 64-bit Linux(最佳)

(2) python 2.4以上

(3) g++ 4.2以上

(4) NumPy 1.5.0以上

(5) SciPy 0.8以上

(6) BLAS支持Level-3

事实上,在安装过程中发现,如果要安装NumPy,还需要安装ATLAS,而ATLAS则又依赖于lapack ……

这其中涉及到:

ATLAS是python下的一个线性代数库,是基于另外两个线性代数库BLAS和lapack的;

NumPy提供了一个在python中做科学计算的基础库,它重在数值计算,甚至可以说是用于多维数组处理的库;

SciPy是基于numpy,提供了一个在python中做科学计算的工具集,也就是说它是更上一个层次的库;

Theano则是基于NumPy以及SciPy的一个更高级的用于科学计算的库。

这里假设python和g++已经按要求装好,并且符合版本要求,以下根据安装的步骤来进行说明:

首先介绍下环境,多核服务器,cpu时钟频率2668MHz,Linux-64bit,非root权限。所有源码放在/data4/open_src中

各开发包的版本为:

开发包版本文件名下载地址

-----------------------------------------------------------------------------------------------

BLASblas.tgzhttp://www.netlib.org/blas/

lapack3.2.2lapack.tgzhttp://www.netlib.org/lapack/#_previous_release

ATLAS3.8.4atlas3.8.4.tar.bz2http://sourceforge.net/projects/math-atlas/files/Stable/

NumPy1.7.1numpy-1.7.1.tar.gzhttps://pypi.python.org/pypi/numpy

SciPy0.12.0scipy-0.12.0.tar.gzhttps://pypi.python.org/pypi/scipy

Theano0.6.0Theano-0.6.0rc3.tar.gzhttp://deeplearning.net/software/theano/#download

以下是安装步骤:

step 1. 编译BLAS

(1) 解压:tar -xvzf blas.tgz

(2) cd BLAS

(3) 修改 make.inc 中的编译选项:

PLAT = _LINUX

FORTRAN= gfortran

OPTS= -O2 -m64 -fPIC

NOOPT= -O0 -m64 -fPIC

LOADER= gfortran

(4) 编译BLAS:make

编译完成后,会生成blas_LINUX.a文件

step 2. 配置ATLAS

在安装ATLAS之前需要先编译lapack,但是为了能使得编译成功,需要保证lapack的编译选项与ATLAS一致。因此首先配置ATLAS,然后将相关编译配置拷贝到lapack中

(1) 解压:tar -xvjf atlas3.8.4.tar.bz2

(2) cd ATLAS

(3) 创建一个build目录,用于存放ATLAS的编译配置:mkdir atlas_build

(4) cd atlas_build

(5) 执行configure进行配置:../configure -b 64 -D c -DPentiumCPS=2668 -Fa alg -fPIC --with-netlib-lapack=/data4/open_src/lapack-3.2.2/lapack_LINUX.a --prefix=~/.local

其中的参数说明如下:

-b 指定编译出库的类型(32位库还是64位库)

-D c -DPentiumCPS 是指定你的CPU的时钟频率,可以通过 grep MHz /proc/cpuinfo 得到

-Fa alg -fPIC 得到与位置无关的代码,生成动态的共享库

--prefix 为安装路径

--with-netlib-lapack 则是制定lapack库文件(此时lapack库文件还没有生成,先随便指定一个)

(6) 完成配置后,在Make.inc文件中找到F77和F77FLAGS的参数配置,这两个配置将会赋给lapack的FORTRAN和OPTS

ps:对于ATLAS 3.10及以上版本,设置--with-netlib-lapack会出错,需要直接指定lapack的压缩包(--with-netlib-lapack-tarfile=),它在编译过程中会自动解压和编译lapack,最终生成的so文件也由之前的6个整合成两个。ATLAS 3.10以上版本对后续安装NumPy没有影响,但是在使用的时候会造成有些库文件找不到的现象。因此这里使用的是ATLAS 3.8.4版本。

step 3. 编译lapack

(1) 解压:tar -xvzf lapack.tgz

(2) cd lapack-3.2.2

(3) 拷贝生成make.inc: cp make.inc.example make.inc

(4) 修改make.inc:

将其中FORTRAN和OPTS的值设置得跟 ATLAS/atlas_build/Make.inc 中的F77和F77FLAGS一致

同时设置

PLAT = _LINUX

BLASLIB = /data4/open_src/BLAS/blas$(PLAT).a

(5) 编译:make build

(6) 编译成功后,会在根目录生成两个库文件:lapack_LINUX.a 和 tmglib_LINUX.a

step 4. 编译并安装ATLAS

(1) cd ATLAS

(2) 删除原配置:rm -rf atlas_build

(3) 重新配置ATLAS:参考 step 2,并设置 --with-netlib-lapack=/data4/open_src/lapack-3.2.2/lapack_LINUX.a

(4) 在atlas_build中进行编译:make build

ps:这个过程相当漫长,耐心等待!!

(5) check编译结果:

make check

make ptcheck (对于多核服务器)

make time

ps:如果check过程中没有报错,则可以放心进行以后的步骤;如果出现报错,也可以尝试进行后续步骤,是否成功就要靠人品了。

(6) 编译动态库:

cd lib

make shared

make ptshared (对于多核服务器)

cd ..

如果在 lib 下面出现libatlas.so, libcblas.so, libf77blas.so, liblapack.so, libptcblas.so, libptf77blas.so 这6个动态库文件,则表示编译成功

(7) 安装ATLAS:make install

由于之前设置了--prefix=~/.local 因此ATLAS将被安装到 ~/.local/lib 中

(8) cp ./lib/*.so ~/.local/lib

(9) 设置环境变量:在~/.bashrc中添加 export LD_LIBRARY_PATH=~/.local/lib:$LD_LIBRARY_PATH 并执行 source ~/.bashrc

step 5. 安装NumPy

(1) 解压 tar -xvzf numpy-1.7.1.tar.gz

(2) cd numpy-1.7.1

(3) 拷贝生成sit.cfg: cp site.cfg.example site.cfg

(4) 配置site.cfg:

1> 打开[DEFAULT],并设置 library_dirs 和 include_dirs ,使得在编译的时候能够找到atlas库

library_dirs = ~/.local/lib

include_dirs = ~/.local/include

2> 打开[blas_opt],并设置 libraries

libraries = ptf77blas, ptcblas, atlas

3> 打开[lapack_opt],并设置 libraries

libraries = lapack, ptf77blas, ptcblas, atlas

ps:如果在ATLAS安装过程中,没有生成libptf77blas和libptcblas,则需要设置两个libraries为

libraries = f77blas, cblas, atlas

libraries = lapack, f77blas, cblas, atlas

(5) 利用python构建NumPy:python setup.py build

(6) 利用python安装NumPy:python setup.py install --prefix=~/.local

(7) 安装完成后,NumPy被安装在 ~/.local/lib/python2.7/site-packages/numpy

(8) 设置环境变量:在~/.bashrc中添加 export PYTHONPATH=~/.local/lib/python2.7/site-packages:$PYTHONPATH 并执行 source ~/.bashrc

step 6. 安装SicPy

(1) 解压: tar -xvzf scipy-0.12.0.tar.gz

(2) cd scipy-0.12.0

(3) 设置site.cfg: 可以直接将NumPy的site.cfg拷贝到当前目录中

(4) 利用python构建SciPy:python setup.py build

(5) 利用python安装SciPy:python setup.py install --prefix=~/.local

(6) 安装完成后,SciPy被安装在 ~/.local/lib/python2.7/site-packages/scipy

step 7. 安装Theano

有了以上的准备后,安装Theano就是一个非常简单的过程了。直接利用python就可以完成安装:

(1) 解压:tar -xvzf Theano-0.6.0rc3.tar.gz

(2) cd Theano-0.6.0rc3

(3) python setup.py install --prefiex=~/.local

(4) 安装完成后,SciPy被安装在 ~/.local/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg

至此,完成了ATLAS + NumPy + SciPy + Theano的python科学计算环境的搭建

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容