1. 程式人生 > >菜鳥 ubuntu下安裝scipy全過程 (主要是安裝atlas)

菜鳥 ubuntu下安裝scipy全過程 (主要是安裝atlas)

參考資料:
atlas官方主頁:http://math-atlas.sourceforge.net/
http://210.75.240.148/blog-449511-577597.html
http://blog.csdn.net/zxia1/article/details/8164746
http://blog.sina.com.cn/s/blog_6cb8e53d0101keak.html


LAPACK版本:LAPACK 3.5.0
SCIPY版本 :3.11.17
python版本:2.7


首先明確幾個庫的關係:
ATLAS是python下的一個線性代數庫,是基於線性代數庫lapack的;
NumPy提供了一個在python中做科學計算的基礎庫,它重在數值計算,甚至可以說是用於多維陣列處理的庫;
SciPy是基於numpy,提供了一個在python中做科學計算的工具集,也就是說它是更上一個層次的庫;


許多人說NumPy依賴於ATLAS,但是實測我自己沒有安裝ATLAS成功安裝NumPy,不過直接安裝scipy卻報缺少BLAS庫,因此選擇了BLAS的優化ATLAS進行安裝。


預處理:
根據atlas的安裝文件,安裝前,要先要禁掉CPU Throtting。由於我使用的是虛擬機器,只有一個核,故而不需要此步,但仍然列出: 在Ubuntu系統上要首先安裝cpufrequtils和cpufreqd這兩個包, 也許還要安裝powernowd包, 然後執行sudo /usr/bin/cpufreq-selector –g 


1. 安裝LAPACK
網上的教程很多直接用LAPACK的壓縮包作為ATLAS的引數,我 真正安裝scipy的時候也是用的壓縮包,不過這裡仍然給出完整安裝lapack的教程。(網上現有教程版本較老,實際操作需要有所改動,安裝的時候我快糾結得要死)
(1)解壓LAPACK,將lapack源目錄下的make.inc.example 改名make.inc:
mv make.inc.example make.inc
(2)編輯一下make.inc,將編譯器指定為你的編譯器ifort或者gfortran (我沒做修改)
(3)修改一下那個makefile,其實裡面有個讓你選的,
#lib : blaslib ,lapacklib , tmglib ...
lib : lapacklib ,tmglib ,..
改成
lib :blaslib ,lapacklib,tmglib ..
# lib :lapacklib ,tmglib ,..
(4) make  
最後生成3個.a檔案:



2. 安裝ATLAS 
ATLAS 完整安裝步驟主要分5步,僅configure和build是必需的。下面是官網介紹:

  • configure: Tell the ATLAS build harness where your SRCdir and BLDdir directories are, and allow ATLAS to probe the platform to create ATLAS's Make.inc and BLDdir directory tree.
  • build: Tune ATLAS for your platform, and build the libraries.
  • check: Run sanity tests to ensure your libraries are producing correct answers.
  • time: Run basic timing on various ATLAS kernels in order to make sure the tuning done in the build step has resulted in efficient implementations.
  • install: Copy ATLAS's libraries from the BLDdir to some standard location.
(1)在安裝前需要確定2個資料夾:
SRCdir:the path to your ATLAS source directory (eg, /home/whaley/ATLAS3.8.0).
BLDdir: the path to your ATLAS build directory (eg, /home/whaley/ATLAS3.8.0/Linux_P4E64SSE3).
2個檔案目錄不允許相同,但BLDdir可以不在SRCdir子目錄下。

(2)從官網下載ATLAS庫,解壓到ATLASSRCdir資料夾,然後進入該資料夾,執行:
mkdir Linux_C2D64SSE3                        

# create BLDdir
cd Linux_C2D64SSE3                            # enter BLDdir
../configure -b 64 -D c -DPentiumCPS=2800 -Fa alg -fPIC --with-netlib-lapack-tarfile=/home/haiyu/Programs_Install/lapack-3.5.0.tgz --prefix=/usr/local/atlas

粗體引數
需要根據個人系統修改:
-b 指定編譯出庫的型別(32位庫還是64位庫)
       -D c -DPentiumCPS 是指定你的CPU的時鐘頻率,可以通過 grep MHz /proc/cpuinfo 得到
       -Fa alg -fPIC 得到與位置無關的程式碼,生成動態的共享庫
       --prefix 為安裝路徑
       --with-netlib-lapack-tarfile 則是lapack壓縮包路徑

成功configure的結果應該如下:


(3)編譯:make build
      這個過程相當漫長,耐心等待!!


(4)可選步驟:check編譯結果
       make check
       make ptcheck (對於多核伺服器)
       make time
      如果check過程中沒有報錯,則可以放心進行以後的步驟;如果出現報錯,也可以嘗試進行後續步驟,是否成功就要靠人品了。反正我當時每步貌似都報錯了o(╯□╰)o 不過目前看來沒有影響。


3.安裝scipy等python庫


對於python 2.7 可以直接執行:
sudo apt-get install python-numpy  
sudo apt-get install python-scipy  
sudo apt-get install python-matplotlib  


4.驗證scipy是否正確安裝
  開啟Terminal,輸入:
  python
  >>>import scipy.io as io 
 沒有報錯則安裝成功!