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所在的目錄
至此基本就結束了,如果遇到問題可以繼續討論。