FreeBSD で ATLAS と LAPACK をビルドとインストール

このページでは, ATLASCBLASLAPACKインストール手順を図解で説明する.
【版とソフトウェアの選択について】

<BLAS の主な機能(ごく一部を紹介)>

<ATLAS と LAPACK のインストールの要点>

謝辞

ATLAS の自動チューニングとマルチコア対応(configure の「-t」オプション)については,Octave 利用者コミュニティでの情報提供を参考にした.記して感謝する.

* 本 Web ページに残っているであろうミスは,本 Web ページの作者である私の責任です.

前準備

前もってインストールしておくソフトウェア

事前に決めておく事項

CPU の物理コア数,クロック周波数,ビット数の確認

ATLAS と LAPACK のビルドとインストール

ここでの説明は,CPU の物理コア数,クロック周波数,ビット数が下記の通りであるとして説明を続けるので, 適切に読み替えてください.

【本 Web ページでの設定】

⇒ 各自,読み替えてください.

ATLAS のダウンロード

  1. ATLAS の「インストール概要」の Web ページを開く.

    https://math-atlas.sourceforge.net/atlas_install/atlas_install.html

  2. CPU の周波数を変動させる機能を無効にする.

    ATLAS は実測値をもとにチューニングを行うので,測定中に周波数が変動すると結果が不正確になる.FreeBSD では powerd を止め,周波数を最大値に固定する.

    service powerd stop
    sysctl dev.cpu.0.freq=3160
    
  3. ATLAS の Web ページを開く

    https://math-atlas.sourceforge.net/

  4. SourceForge Summary Page」をクリック
  5. Files」をクリック
  6. ファイルの選択

    安定版の atlas3.10.3.tar.bz2 をクリックする.クリックすると,ダウンロードが始まる.

ATLAS のビルドとインストール

  1. ダウンロードしたファイルを /tmp に移動
  2. tar コマンドを用いて解凍
    cd /tmp
    tar -xvjof atlas3.10.3.tar.bz2
    
  3. 解凍終了の確認
  4. mv ATLAS ATLAS3.10.3」の実行
  5. configure コマンドの実行
    【本 Web ページでの設定】
    • CPU の物理コア数: 2
    • CPU のクロック周波数: 3160
    • CPU のビット数(ポインタの幅): 64

    ⇒ 各自,読み替えてください.

    cd ATLAS3.10.3
    mkdir B1
    cd B1
    ../configure --prefix=/usr/local/atlas \
    --cc=gcc13 -C acg gcc13 -C ic gcc13 -C xc gcc13 -C dk gcc13 -C dm gcc13 -C if gfortran13 \
    -t 2 -m 3160 -b 64 -Fa alg -fPIC -D c -DPentiumCPS=3160 -D c -DWALL \
    --with-netlib-lapack-tarfile=/tmp/lapack-3.12.1.tar.gz
    

    * 「-t ... -m ...」のところは,物理コア数と周波数を正しく設定すること.

    * LAPACK の新しい版で configure やビルドが通らない場合は,packages の math/atlas(動作確認済みの LAPACK を同梱)を使う.

    <説明>

    • mkdir B1

      作業用のディレクトリの作成.「B1」のところは好きな名前でよい.ATLAS はソースディレクトリの直下ではビルドできないので,別のディレクトリを作ってその中で configure を実行する.

    • CPU の物理コア数: -t 2

      マルチコアの CPU では,「-t <物理コア数>」を引数に含めます. 「-t 2 」は、「物理コア数が 2 個」という意味.物理コアが 4 個のときは -t 4 になる. 「-t <物理コア数>」を付けると,ATLAS のシングルスレッド版とマルチスレッド版の両方のライブラリファイルがビルドされる.

      マルチコアの CPU でない場合には,「-t <物理コア数>」を付けないで下さい. ATLAS のシングルスレッド版のライブラリファイルだけがビルドされる.

    • CPU のクロック周波数: -m 3160

      周波数 (MHz 単位)

    • CPU のビット数(ポインタの幅): -b 64

      32 ビットの時は -b 32 になる.

    • -fPIC: 共有ライブラリを作るために位置独立コードを生成する
    • 使用するコンパイラの指定

      gcc と gfortran を明示的に指定する.

      --cc=gcc13 -C acg gcc13 -C ic gcc13 -C xc gcc13 -C dk gcc13 -C dm gcc13 -C if gfortran13
      
    • LAPACK の組み込み

      configure コマンドの引数に「--with-netlib-lapack-tarfile=/tmp/lapack-3.12.1.tar.gz」を付けると,ATLAS が LAPACK のソースコードを展開してビルドし,ATLAS で最適化したルーチンを含む liblapack.a を生成する.

  6. configure コマンドの結果の確認
  7. make」 の実行
    make
    

    自動チューニングを行うため,完了までに数時間かかることがある.

  8. make」の結果,エラーメッセージが出ないことを確認しておく.
  9. make check」 の実行
    make check
    

    「make check」 の結果,エラーメッセージが出ないことを確認しておく.

  10. make ptcheck」 の実行
    make ptcheck
    

    「make ptcheck」 の結果,エラーメッセージが出ないことを確認しておく.マルチスレッド版のライブラリの検査である.

  11. make time の実行
    make time
    
  12. make time の結果の確認

    「make time」 の結果,エラーメッセージが出ないことを確認しておく.

  13. make install」 の実行
    make install
    
  14. make install」 の結果の確認

    エラーメッセージが出ていないことを確認する.

  15. ファイルの確認

    /usr/local/atlas/lib と /usr/local/atlas/include にファイルができていることを確認する.

  16. 共有オブジェクト (.so) の生成とインストール
    cd lib
    make shared cshared ptshared cptshared
    cp *.so /usr/local/atlas/lib
    

CBLAS のテスト

  1. CBLAS のソースコードを用意する

    CBLAS の参照実装とサンプルプログラムは,LAPACK の配布物の CBLAS ディレクトリに含まれている.前準備でダウンロードした tar ファイルを展開する.

    cd /tmp
    tar -xzf lapack-3.12.1.tar.gz
    
  2. サンプルプログラムのテスト実行
    cd /tmp/lapack-3.12.1/CBLAS/examples
    gcc13 -I/usr/local/atlas/include cblas_example1.c -L/usr/local/atlas/lib -lptcblas -lptf77blas -latlas -lpthread -L/usr/local/lib/gcc13 -lgfortran
    ./a.out
    

    cblas_example1.c では,次を確認できる.

    • cblas_dgemv() : 行列とベクトルの積
    • ベクトルの要素の間隔を表す引数は incx = 1, incy = 1 になっている(連続した配列を使うという意味)