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です.スパコンの世界では超有名人です.

2011/04/05

【Mac】Web共有の公開先フォルダ

新学期がキタ!
このブログはいつでもマイペースでいきますので,新年度とかあまり関係がありません.

あ,でも今年度から身分が少し変わりました.詳しくはホームページを参照してください.

Akitoshi TAKAYASU -Home Page-

さて今日は備忘録.

Snow leopardでWeb共有するとすぐにWebページを公開することが出来ます.クリック1つであなたのマシンがWebサーバーになっちゃうのです.このとき,httpでどのフォルダを見に行かせるんだ?というワケでメモ.ちなみにMacでホームページのホームページ公開は

システム環境設定→共有→Web 共有

にチェック入れるだけです.さてその公開フォルダですが,

/Library/WebServer/Documents/

です.ここがいわゆるpublic_html(DocumentRoot)の代わり.この直下にindex.htmlをおけば

http://(サーバーIP)/

にアクセスがあった時にまず読み込まれます.
本当ならはapacheだのDNSといったコトを説明するべきなのですが,あくまで自分メモなので.必要になったら書きます.