ちっぷす: ATLAS と LAPACK

やはり数値計算も速いに越したことないし、Linux と MacOS X で同じコードですむならもっと幸せなので、MacOS X に ATLAS と LAPACK をインストール。ATLAS じゃなくて BLAS でもいいのかもしれないけど、やっぱり C でプログラミングしたいし、なんか速そうだから。

ATLAS

ここからatlas3.3.14.tar.gzをもらってくる。でも bz2 の方がだいぶ小さいので、これを機に bzip2 を入れた方がいいかも知れない。

  1. まずファイルを適当に展開。
    tar zxf atlas3.3.14.tar.gz && cd atlas
  2. おもむろにコンパイル。でも gcc がないので、cc を指定する。
    make CC=cc
    いろいろ質問されるが、全部リターンキーだけでも、だいたい大丈夫。
  3. で、ライブラリを作る。
    make install arch=OSX_PPCG4AltiVec
    これでライブラリはできあがる。途中、エラーで止まったら、 ごく単純にもう一度 make してみる。コンパイルには長時間かかるので、 1時間くらいは覚悟しておく。
    やっぱりエラーになる場合、bin/OSX_PPCG4AltiVec/INSTALL_LOG に cd して、一番新しいファイルの末尾に、 どんなコマンドでどんなエラーが出たか書いてあるので、適当に対処する。 シェルスクリプトでエラーが出てたら、 その中で実行されてるコマンドをもう一度手動でやってみたりする。 うまく行ったらまた make。
  4. 適当な場所に、できたライブラリやインクルードファイルをコピー。
    cp lib/OSX_PPCG4AltiVec/*.a /usr/local/lib
    cp -r include /usr/local/include/atlas
    /usr/local/libあたりがなければ、作ってもいいし、 他の場所にコピーしても良い。

CLAPACK

本家からclapack.tgzをもらってきて、適当に展開。

  1. まずはmake.incの編集。コンパイラのフラグは INSTALL/make.inc.LINUX を参考にする。
  2. f2clibを作る。
    make f2clib
  3. BLASをATLASで置き換えたので、そのラッパーライブラリを作る。
    cd BLAS/WRAP && make && cp libcblaswr.a ../..
  4. 手動で ranlib する。
    ranlib /usr/local/lib/libcblas.a
    ranlib /usr/local/lib/libatlas.a
    ranlib ../../libcblaswr.a
  5. BLASのテスト。
    cd BLAS/TESTING && make -f Makeblat2 && make -f Makeblat3
    あとなんか README に従ってやってみる。するとエラーが出る。
    TransA must be 111, 112 or 113, but is set to -1Parameter 2 to routine cblas_sg mv was incorrect
    いかんともしがたいので、無視。
  6. やっと、LAPACKを作るとこまできた。
    cd SRC && make
    たくさんコンパイルする。時間もだいぶかかる。G4 Cube(PPC G4 450MHz)、 メモリ1.25GBで40分くらい。できるライブラリも10MBくらいある。
  7. たくさんテスト。
    cd TESTING/MATGEN; make
    cd TESTING/TIMING; make
    cd TESTING; make
    xlintims < sblasa.in > sblasa.out
    xlintims < sblasb.in > sblasb.out
    xlintims < sblasc.in > sblasc.out
    xlintims < cblasa.in > cblasa.out
    xlintims < cblasb.in > cblasb.out
    xlintims < cblasc.in > cblasc.out
    xlintims < dblasa.in > dblasa.out
    xlintims < dblasb.in > dblasb.out
    xlintims < dblasc.in > dblasc.out
    xlintims < zblasa.in > zblasa.out
    xlintims < zblasb.in > zblasb.out
    xlintims < zblasc.in > zblasc.out

インストール

案外面倒。

以下のものを、/usr/local/libにコピーする。

cd /usr/local/lib して、ln -s lapack_OSX_PPCG4AltiVec.a liblapack.a とかする。

以下のものを、/usr/local/includeにコピーする。

使い方

C のソースファイルでは、

という行を冒頭に入れる。コンパイルするときは、 とする。