2011/04/11

【BLAS】GotoBLAS2をMacBook Air (late2010)でビルド

最近,ブログの更新が多いです.良いのか悪いのか.

さて,今日はBLASの1つである,GotoBLAS2をMacBook Air late 2010(2.13GHz Intel Core 2 Duo, penryn?)上でmakeします.以下はその記録.なぜかは聞かないでください.研究で必要なんです.Xcodeが入っている状態を仮定します.


目的:
Macbook air (late2010)に最適化したGotoBLAS2の共有ライブラリ(.dylib)をつくる.

インストール方法:
下記のページ(University of Texas Austin)

GotoBLAS2|Texas Advanced Computing Center

からGotoBLAS2をダウンロード→解凍→makeでOKとReadmeには書いてあります.これだけ!

が,まぁそんな上手く行きません.ちょこっと変更が必要.

やること5つ:

1.Makefile.ruleのソースを変更

# If you need to synchronize FP CSR between threads (for x86/x86_64 only).
CONSISTENT_FPCSR = 1

この部分のコメントを外す.(精度保証付き数値計算をしたい人向け)

2.gfortranが64bit対応してないとダメ(version 4.6.0から?)
MacはOSがほぼ64bitで動いているので,コンパイラが対応してないとエラーになります.ターミナルで

gfortran -v

とした時の文を注目,

Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-apple-darwin10.4.0/4.6.0/lto-wrapper
Target: x86_64-apple-darwin10.4.0
Configured with: ../gcc-4.6-20101106/configure --enable-languages=fortran
Thread model: posix
gcc version 4.6.0 20101106 (experimental) (GCC)

このversionが大切.4.6くらいあれば行けるハズ.

3.wget をcurlに変更
Makefile内のlapackの部分(以下)を

lapack-3.1.1.tgz :
ifndef NOFORTRAN
#       -wget http://www.netlib.org/lapack/lapack-3.1.1.tgz
        -curl -0 http://www.netlib.org/lapack/lapack-3.1.1.tgz
endif

とcurl文を追加してwgetをコメントアウト.

4.perlのスクリプトf_checkのなかで

$flags =~ /^\-l/ → $flags =~ /^\-l./

と.(ピリオド)をつける.

5.libgoto2_****.dylibというダイナミックリンクが出来ていれば成功!と思いきや・・・exportsというフォルダの中にlibgoto2_penrynp-r1.13.dylib出来ています.キター!

これでGotoBLASをMatlabに連携させて数値計算が出来るようになります.ちなみにGotoBLASは世界で一番速いBLASといわれていて,制作者が後藤さんだからGotoBLASです.スパコンの世界では超有名人です.

0 件のコメント: