トップページ -> コンピュータ -> Linux の C/C++ プログラミング用ツールとライブラリ -> Linux で GotoBLAS2 バージョン 1.13 と CBLAS と LAPACK バージョン 3.4.1 のダウンロードとビルドとインストール
[サイトマップへ], サイト内検索:

Linux で GotoBLAS2 バージョン 1.13 と CBLAS と LAPACK バージョン 3.4.1 のダウンロードとビルドとインストール

サイト構成 連絡先,業績など 実践知識 コンピュータ 教材 サポートページ

GotoBLAS2 とは,ATLAS と並んで,BLAS 実装の決定版です. (無料で使えるソフトウエアの範囲では,そう言い切ってしまって良いと考えています.ライセンス条項は各自でよく確認すること.どちらも素晴らしいソフトウエアです).

CBLAS は,それらの BLAS 実装を,C 言語から使えるようにするためのプログラムです(本来の BLAS 実装は FORTRAN).

この Web ページでは, Linux での GotoBLAS2 バージョン 1.13 と CBLAS のインストール手順を説明する.

※ GotoBLAS2 を octave に組み込む方法は,別の Web ページで説明する.

※ 関連Webページ: Linux で開発環境やツールを整備

GotoBLAS2 は, ダウンロード前に,ライセンス条項をよく確認すること.ライセンス条項には, 再配布には許可が必要.商用・業務利用には許可が必要などと定められているはずです. 確認すること. その場合、バイナリやソースコードを人にあげることはできません. (「パソコンを借りてインストールしてあげる」こともNGでしょう).

BLAS の機能の概要(ごく一部)

参考 Web ページ

◆ この Web ページで行うコマンドの概略 (Ubuntu の場合の例)

ライセンス条項の確認は必ず行うこと

# GotoBLAS2 のビルドとインストール
cd /tmp
sudo rm -rf GotoBLAS2
tar -xvzof GotoBLAS2-1.13.tar.gz

sudo cpufreq-selector -g performance

cd GotoBLAS2 
if [ `arch` = 'i686' ]; then
  make BINARY=32 FC=gfortran SMP=1 USE_THREAD=1 USE_OPENMP=1 NO_CBLAS=1 REFBLAS_ANTILOGY=1
elif [ `arch` = 'x86_64' ]; then
  make BINARY=64 FC=gfortran SMP=1 USE_THREAD=1 USE_OPENMP=1 NO_CBLAS=1 REFBLAS_ANTILOGY=1
fi

sudo cp *.a /usr/lib

# CBLAS のダウンロードとビルドとインストール
cd /tmp
if [ ! -f cblas.tgz ]; then 
    wget http://www.netlib.org/blas/blast-forum/cblas.tgz
fi 

cd /tmp
sudo rm -rf /tmp/CBLAS
tar -xvzof cblas.tgz
cd /tmp/CBLAS
if [ `arch` = 'i686' ]; then
  make CC="gcc -fopenmp -m32" FC="gfortran -fopenmp -m32" CBDIR=/tmp/CBLAS BLLIB="-lgoto2 -lpthread -lgomp" all
elif [ `arch` = 'x86_64' ]; then
  make CC="gcc -fopenmp -m64" FC="gfortran -fopenmp -m64" CBDIR=/tmp/CBLAS BLLIB="-lgoto2 -lpthread -lgomp" all
fi

sudo cp lib/cblas_LINUX.a /usr/lib/libcblas.a
sudo cp include/cblas.h /usr/include/cblas.h
cd examples
gcc -o a.out cblas_example1.c -L/usr/lib -lcblas -lgoto2  -lpthread -lgomp
./a.out

# LAPACK バージョン 3.4.1 のダウンロードとビルドとインストール (Download lapack 3.4.1 and build it and install it) 
sudo cpufreq-selector -g performance

cd /tmp
if [ ! -f lapack-3.4.1.tgz ]; then 
    wget http://www.netlib.org/lapack/lapack-3.4.1.tgz
fi 
rm -rf lapack-3.4.1
tar -xvzof lapack-3.4.1.tgz
cd /tmp/lapack-3.4.1
cp make.inc.example make.inc
if [ `arch` = 'i686' ]; then
  F1="-fPIC -fomit-frame-pointer -mfpmath=sse -msse3 -fno-schedule-insns2 -fopenmp -fno-tree-loop-optimize  -fno-tree-vectorize -fexceptions -funroll-all-loops -O3 -march=native"
  cp make.inc.example make.inc
  if [ `arch` = 'i686' ]; then
    make LOADER="gfortran -fPIC" FORTRAN="gfortran -m32 -mieee-fp $F1" BLASLIB="/tmp/BLAS/blas_LINUX.a -lgfortran -lgomp -lpthread -ldl"
  elif [ `arch` = 'x86_64' ]; then
    make LOADER="gfortran -fPIC" FORTRAN="gfortran -m64 -mieee-fp $F1" BLASLIB="/tmp/BLAS/blas_LINUX.a -lgfortran -lgomp -lpthread -ldl"
  fi
fi

sudo cp liblapack.a /usr/local/lib
sudo cp libtmglib.a /usr/local/lib
sudo chmod 755 /usr/local/lib/liblapack.a
sudo chmod 755 /usr/local/lib/libtmglib.a

# LAPACK の共有オブジェクト (LAPACK shared object)
cd /tmp/lapack-3.4.1
rm -rf hoge
mkdir hoge
cd hoge
ar x ../liblapack.a
gcc -shared -o liblapack.so *.o
sudo cp liblapack.so /usr/local/lib/liblapack.so

cd /tmp/lapack-3.4.1
rm -rf hoge
mkdir hoge
cd hoge
ar x ../libtmglib.a
gcc -shared -o libtmglib.so *.o
sudo cp libtmglib.so /usr/local/lib/libtmglib.so

事前準備


■ Linux で GotoBLAS 2 バージョン 1.13 のソースコードのダウンロードとビルドとインストールを行う場合の手順 (Ubuntu や Fedora を使用)

◆ GotoBLAS 2 バージョン 1.13 のソースコードのダウンロード

  1. 参考 Web ページ: http://jasp.ism.ac.jp/kinou2sg/contents/RTutorial_Goto1211.pdf

  2. GotoBLAS2 の Web ページ: http://www.tacc.utexas.edu/resources/software/ を開く

  3. TACC プロジェクトの Web ページにジャンプしたいので「click here」をクリック

  4. GotoBLAS2」をクリック

  5. ダウンロードしたいので,「Downloads」をクリック

  6. ダウンロードしたいので,「login to this site」をクリック

  7. ダウンロードしたいので, 「To download the sourcecode」の右横の 「click here」をクリック

  8. 登録

  9. 登録が終わったらログイン

  10. ダウンロード前に,ライセンス条項をよく確認

    フリーソフトウエアでは無いので,全部よみ,よく確認し,納得する 

    ※ 再配布には許可が必要.商用・業務利用には許可が必要など


    ライセンス条項の一部分.必ず全部読むこと

  11. ダウンロード

  12. ダウンロードしたファイルを /tmp に移動

  13. ダウンロードしたファイルを解凍

    次のように「tar -xvzof ...」で解凍する.

    tar -xvzof GotoBLAS2-1.13.tar.gz
    

◆ ソフトウエア開発環境などのインストール

◆ ビルドの前に決めておく事項

◆ GotoBLAS 2 のビルドとインストール

  1. CPU の種類の確認

    CPU の種類を確認するために「cat /proc/cpuinfo」を実行 下記のように「processor :」の行が複数あるときは,マルチプロセッサあるいはマルチコアという意味になる.

    cat /proc/cpuinfo
    

  2. (オプション)「sudo cpufreq-selector -g performance」コマンドの実行

    ※ cpufreq-selector は Ubuntu にはある.他の Linux については未確認.

    sudo cpufreq-selector -g performance
    

  3. (オプション)Makefile.rule の設定

    ■ GotoBLAS2 バージョン 1.13 での設定例

    CC = gcc
    
    FC = gfortran
    
    USE_THREAD = 1
    
    USE_OPENMP = 1
    

  4. ビルド
    cd GotoBLAS
    ./quickbuild.32bit
    

    64 ビット Linux (x86_64) の場合には,次のように「./quickbuild.64bit」を実行する

    cd GotoBLAS
    ./quickbuild.64bit
    

    ※ 64 ビット Linux であるかは,「uname -a」で簡単に調べることができる.

    quickbuid.32bit や quickbuild.64bit ではなくて,make コマンドを手動で起動したい場合の手順の例 

    if [ `arch` = 'i686' ]; then
      make BINARY=32 FC=gfortran SMP=1 USE_THREAD=1 USE_OPENMP=1 NO_CBLAS=1 REFBLAS_ANTILOGY=1
    elif [ `arch` = 'x86_64' ]; then
      make BINARY=64 FC=gfortran SMP=1 USE_THREAD=1 USE_OPENMP=1 NO_CBLAS=1 REFBLAS_ANTILOGY=1
    fi
    

  5. ビルドの終了の確認

    Ubuntu 11.04 での実行結果例

    うまくビルドできない場合には対処が必要(Google で情報を得ることはできます)

    ※ 参考 Web ページ:R と GotoBLAS のページ: http://www.okada.jp.org/RWiki/?R%A4%C8GotoBLAS

  6. インストール
    sudo cp *.a /usr/lib
    

CBLAS のインストール

  1. BLAS Technical Forum の Web ページを開く

    http://www.netlib.org/blas/blast-forum/

  2. Reference implementation for the C interface to the Legacy BLAS」をクリック.ダウンロードが始まる.

  3. ダウンロードしたソースコードを,/tmp の下に展開./tmp/CBLAS ができる

  4. Makefile.in のリンクを作成
    cd /tmp/CBLAS
    ln -s Makefile.LINUX Makefile.in
    

  5. ビルド

    CC と FC については,GotoBLAS2 をビルドしたときに使われた C, FORTRAN コンパイラを指定する.

    ◆ 32 ビット OS の場合の実行手順例

    make CC="gcc -fopenmp -m32" FC="gfortran -fopenmp -m32" CBDIR=/tmp/CBLAS BLLIB="-lgoto2 -lpthread -lgomp"
    

    ◆ 64 ビット OS の場合の実行手順例

    「quickbuild.64bit」を使って GotoBLAS をビルドした場合には,CFLAGS と FFLAGS に「-m64」を付け加える

    make CC="gcc -fopenmp -m64" FC="gfortran -fopenmp -m64" CBDIR=/tmp/CBLAS BLLIB="-lgoto2 -lpthread -lgomp"
    

  6. ビルド結果の確認

  7. インストール

    sudo cp lib/cblas_LINUX.a /usr/lib/libcblas.a
    sudo cp include/cblas.h /usr/include/cblas.h
    

  8. サンプルプログラムのテスト実行

    cd /tmp/CBLAS
    cd examples
    gcc -o a.out cblas_example1.c -L/usr/lib -lcblas -lgoto2  -lpthread -lgomp
    ./a.out
    

cblas_example1.c を引用すると次の通り。


LAPACK のダウンロードとビルドとインストール

ビルド

cd /tmp
if [ ! -f lapack-3.4.1.tgz ]; then 
    wget http://www.netlib.org/lapack/lapack-3.4.1.tgz
fi 
rm -rf lapack-3.4.1
tar -xvzof lapack-3.4.1.tgz
cd /tmp/lapack-3.4.1
cp make.inc.example make.inc
if [ `arch` = 'i686' ]; then
  make LOADER="gfortran -fPIC" FORTRAN="gfortran -fPIC -mieee-fp -fomit-frame-pointer -mfpmath=sse -msse3 -fno-schedule-insns2 -fopenmp -fno-tree-loop-optimize  -fimplicit-none -g -m32 -fno-tree-vectorize -fexceptions -march=native" BLASLIB="-lgoto2 -lpthread -lgomp"
elif [ `arch` = 'x86_64' ]; then
  make LOADER="gfortran -fPIC" FORTRAN="gfortran -fPIC -mieee-fp -fomit-frame-pointer -mfpmath=sse -msse3 -fno-schedule-insns2 -fopenmp -fno-tree-loop-optimize  -fimplicit-none -g -m64 -fno-tree-vectorize -fexceptions -march=native" BLASLIB="-lgoto2 -lpthread -lgomp"
fi

インストール

sudo cp liblapack.a /usr/local/lib
sudo cp libtmglib.a /usr/local/lib
sudo chmod 755 /usr/local/lib/liblapack.a
sudo chmod 755 /usr/local/lib/libtmglib.a

rm -rf hoge
mkdir hoge
cd hoge
ar x ../liblapack.a
gcc -shared -o liblapack.so *.o
sudo cp liblapack.so /usr/local/lib/liblapack.so

cd ..
rm -rf hoge
mkdir hoge
cd hoge
ar x ../libtmglib.a
gcc -shared -o libtmglib.so *.o
sudo cp libtmglib.so /usr/local/lib/libtmglib.so