最近由于一些實驗要用到線性代數庫,因此便要找一個性能優良的,同時有公信力的線性代數庫。
很早就知道了ATLAS的大名,在跨平臺的高性能線性代數數學包中,可能要屬ATLAS最有名了。因此從一開始便決定了要用ATLAS BLAS作為CPU的線性代數部分的性能和數學基準。
只是我在shell下面的經驗太少,所以編譯的時候被狠狠郁悶了一把。
因此這篇文章將以我的血淚史為一些E文和我一樣爛的人鋪好前進的道路。
ATLAS的版本里面,我推薦ATLAS 3.6.0的版本。不僅僅是因為這個版本是Stable的,更重要的是,3.7的版本安裝方式有了不小的變化,一切都需要命令行直接設置,不像360可以依靠它所帶的向導可以一步步的完成設置工作。因此安裝起來頗為頭大。所以以下的例子將以360為準。并且,如果需要支持多核或者多CPU,建議使用ScaLAPACK。
下載好ATLAS 360以后,第一反應自然是看Install.txt。
Install.txt里面說,如果你是在Windows系統下工作的話,需要參考另外一個幫助文檔。實際上另外一個幫助文檔只告訴你兩件事情:
第一是如果你使用cygwin的話,那么一切都as normal,就是和Linux/Unix平臺一樣;
第二是如果你使用其它的編譯器,如msvc或者icc(intel c++ compiler)的話,請參見XXX云云。
盡管理論上說支持MSVC和ICC,但是我覺得想用MSVC的同學還是先忍一忍,因為所有的編譯參數都已經不是默認的了,需要重新設置,比方說INCLUDE和LIB,又比方說編譯器選項。我又是個比較笨的人,所以就選擇了as normal的cygwin。理論上說mingw也可以,但是mingw的sh不太好用,因此我也就沒有在mingw上面順利通過。同時如果你的機器上已經有mingw,記得安裝完cygwin以后,把path這個環境變量里面mingw的路徑替換成cygwin的路徑。
先下載CYGWIN。gcc, g77, gnu make, mingw-gcc, mingw-g77, mingw-runtime這幾項是必須要的。建議大家先選擇Download without installing,把需要下載的東西準備好,然后在選擇第三項從本地install。服務器很多人都推薦kernel.org。實際用來效果也不錯。
cygwin下載,安裝都OK了以后,先要補丁兩個文件:
“
Assembler renaming problem for Windows machine“ 和
“
String overrun in config for long compiler paths”。
我之所以失敗了無數次就是因為把這個給漏掉了。
補丁打好以后,先測試一下make,gcc,g77能不能正常工作。
如果無誤以后,就可以動手了。
先啟動cygwin,bash進入atlas的安裝目錄(就是install.txt所在的目錄)
然后就是直接運行
make
這一步是全部向導,按照向導的說明完成配置就好了,正常來說,這一步不會出現任何錯誤。
然后便是運行
make install arch=<ARCH>
這里的arch在上一步make完成的時候已經給了個樣例,抄下來就可以了。
然后就是漫長又漫長的編譯過程。。。
編譯好以后,可以在$atlas/lib/<arch>下面見到一些.a文件。對于gcc來說,這些就足夠用了,但是對于msvc來說,這一步還不行。我們還需要把.a文件轉換成dll+lib的方式,vc才能使用。