1. 程式人生 > >blas、lapack、atlas在Ubuntu上的安裝

blas、lapack、atlas在Ubuntu上的安裝

本文主要介紹atlas的安裝。

一、使用到的安裝包主要有blas,cblas,lapack,atlas。

   blas和cblas的安裝包下載地址為 :

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

  lapack的官方包地址: http://www.netlib.org/lapack/

  atlas的官方包地址:http://sourceforge.net/projects/math-atlas/

  PS:安裝過程中會使用到gfortran編譯器,如果沒有安裝則使用sudo apt-get install gfortran進行安裝。

二、 blas的安裝

下載檔案後,對壓縮包進行解壓,進入目錄,執行命令為:

gfortran -c  -O3 *.f  # 編譯所有的 .f 檔案,生成 .o檔案  
ar rv libblas.a *.o  # 連結所有的 .o檔案,生成 .a 檔案  
su cp libblas.a /usr/local/lib  # 將庫檔案複製到系統庫目錄

三、cblas的安裝

進入CBLAS資料夾,根據你自己的計算機平臺,將目錄下某個 Makefile.XXX 複製為 Makefile.in , XXX表示計算機的平臺,如果是Linux,那麼就將Makefile.LINUX 複製為 Makefile.in,然後使用下面的命令安裝:

cp ../BLAS/libblas.a  testing  # 將上一步編譯成功的 libblas.a 複製到 CBLAS目錄下的testing子目錄  
make # 編譯所有的目錄  
sudo cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a # 將庫檔案複製到系統庫目錄下  

四、lapack的安裝

編譯 lapack以及lapacke,這一步比較麻煩,首先當然是進入lapack-3.4.2資料夾,然後根據平臺的特點,將INSTALL目錄下對應的make.inc.XXX 複製一份到 lapack-3.4.2目錄下,並命名為make.inc, 這裡我複製的是 INSTALL/make.inc.gfortran,因為我這裡用的是gfortran編譯器。

修改lapack-3.4.2/Makefile, 因為lapack以來於blas庫,所以需要做如下修改

#lib: lapacklib tmglib

lib: blaslib variants lapacklig tmglib

make # 編譯所有的lapack檔案  
cd lapacke # 進入lapacke 資料夾,這個資料夾包含lapack的C語言介面檔案  
make # 編譯lapacke  
cp include/*.h /usr/local/include #將lapacke的標頭檔案複製到系統標頭檔案目錄  
cd .. #返回到 lapack-3.4.2 目錄  
cp *.a /usr/local/lib # 將生成的所有庫檔案複製到系統庫目錄  

五、altas的安裝

這個比較麻煩,不過可以直接使用命令sudo apt-get install libatlas-dev來進行安裝。如果想自己手動編譯原始碼,那是要費寫波折的,主要問題是由於在編譯atlas原始碼的過程中需要關閉intel晶片即CPU的 throttling。但是目前網站上提供的一些關閉方法都已經行不通了,這主要是CPU晶片的驅動問題,官方的驅動會使得網上的那些方法失效,並不能真的關閉cpu throttling。

經過我資料的查閱,終於找到了解決辦法,現在先列舉一些網上常見的方法,可以先進行測試,如果可以真正關閉cpu throttling那就最好了。現在列舉方法:

1.安裝cpufreqd和cpufrequtils,然後用命令關閉:

sudo apt-get install gnome-applets
sudo apt-get install gnome-applets-data
sudo /usr/bin/cpufreq-selector -g performance
通過測試,發現如果是多CPU時,該命令並不能完全更改所有cpu的效能模式,當然更沒有關閉cpu throttling,不過Ubuntu12.04及以前的版本可能會關閉cpu throttling。 我在Ubuntu14.04 以後得版本測試都不行。

2 使用cpupower來修改cpu模型:

# 輸入命令cpupower, 會提示你如何安裝cpupower
sudo apt-get install linux-版本號-generic #根據提示的名字寫
sudo cpupower frequency-set -g performance
這個命令可以全部修改cpu模式。想要檢視cpu的模式可以使用下面的命令:
cat /sys/devices/system/cpu/cpu{0,1,2,3}/cpufreq/scaling_governor
會得到類似下面的結果:
performance
performance
performance
performance
單從結果上看貌似已經修改了cpu的模式,其實不然,當編譯atlas時,還是會報錯,說沒有關閉cpu throttling。如下面的錯誤:
CPU Throttling apparently enabled!
It appears you have cpu throttling enabled, which makes timings
unreliable and an ATLAS install nonsensical.  Aborting.
See ATLAS/INSTALL.txt for further information

現在來說說如何徹底關閉cpu throttling(當然是軟體臨時性關閉,因此也可以從BOIS裡面進行關閉)。必須載入cpu驅動的其他模組,其實只要關閉一個就行了,程式碼如下:

sudo vim /etc/default/grub
#修改其中的一行程式碼
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"

然後用命令更新一下:

sudo grub_mkconfig -0 /boot/grub/grub.cfg

如果還是報錯,那重啟一次就應該沒問題了。

接下來再用上述的第二種方法關閉cpu throttling就好了。

既然關閉好cpu throttling了,接下來就可以編譯atlas了。這個網上教程還是有的,這裡給出一個常規的步驟:

bunzip2 -c atlas3.10.x.tar.bz2 | tar xfm -    # create SRCdir
mv ATLAS ATLAS3.10.x                          # get unique dir name
mkdir build                         # create BLDdir
cd build                            # enter BLDdir
../configure -b 64 -D c -DPentiumCPS=2400 \   # configure command
    --prefix=/home/whaley/lib/atlas \           # install dir
    --with-netlib-lapack-tarfile=/home/whaley/dload/lapack-3.4.1.tgz  #lapack所在的目錄
make build                                    # tune & build lib
make check                                    # sanity check correct answer
make ptcheck                                  # sanity check parallel
make time                                     # check if lib is fast
make install                                  # copy libs to install dir
其中需要注意的就是配置引數,如果想生成動態連結庫,使用下面的命令配置:
../configure -b 64 -D c -DPentiumCPS=2400 -Fa alg -fPIC \   # configure command
    --prefix=/home/whaley/lib/atlas \           # install dir
    --with-netlib-lapack-tarfile=/home/whaley/dload/lapack-3.4.1.tgz  #lapack所在的目錄
至此基本就結束了,如果遇到問題可以繼續討論。