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科學計算環境的搭建