GotoBLAS とは,ATLAS と並んで,BLAS 実装の決定版です. (所定の条件下で,無料で使えるソフトウェアの範囲では,そう言い切ってしまって良いと考えています.ライセンス条項は各自でよく確認すること.どちらもソフトウェアです).
CBLAS は,それらの BLAS 実装を,C 言語から使えるようにするためのプログラムです(本来の BLAS 実装は FORTRAN).
このページでは, GotoBLAS と CBLAS のインストール手順を説明する.
※ GotoBLAS は「フリーソフトウェア」ではない.ダウンロードしたら、同封のライセンス条項をよく確認すること. 特に、商用や業務での利用でも十分に気をつけてください.また、 ライセンス条項に定められている 再配布の条件にも十分に気をつけてください。 ライセンス条項を理解せずに, バイナリやソースコードを人にあげること(再配布すること)はできません.(「パソコンを借りてインストールしてあげる」こともやめましょう).
※ GotoBLAS を octave に組み込む方法は,別の Web ページなどで説明する.
※ Linux での GotoBLAS と CBLAS をビルドとインストールについては, 別の Web ページで説明する.
※ このページでは,Cygwin 上で動く GNU のコンパイラを「GNU のコンパイラ」、 MinGW 由来の GNU のコンパイラを「MinGW のコンパイラ」と書いています.
BLAS の主な機能(ごく一部を紹介)
【関連する外部ページ】
◆ 謝辞
「Octave for Windows メモの筆者」様 (http://www40.atwiki.jp/gnuoctavejp)に、 MinGW コンパイラ等の情報をいただきました。ありがとうございます
Cygwin のセットアッププログラム setup.exe を使って, GotoBLAS と CBLAS をソースプログラムからコンパイルするのに必要となる他のソフトウェアをインストールする.簡単にインストールできる.
下記のパッケージを選ぶ.
gcc4, gcc4-fortran などは,必ず最新バージョンを選ぶ (gcc バージョン 4.3 系列では、GotoBLAS のビルド時にエラーが無くても、あとで不具合が見つかる場合がある)
libstdc++ なども,必ず gcc とバージョンを一致させておく
【外部ページへのリンク】http://jasp.ism.ac.jp/kinou2sg/contents/RTutorial_Goto1211.pdf
ここから先の操作は,Cygwin のコンソール で行う.
まず,ダウンロードしたファイルを,C:\cygwin\tmp の下にコピー.
次のように「tar -xvzof ...」で展開(解凍)する.
tar -xvzof GotoBLAS2-1.13_bsd.tar.gz
ライセンス条項を理解できないのならば使用してはいけない(下につけたスクリーンショットではなく、必ず、同封のライセンス条項を確認してください)
cd GotoBLAS2 cat 00License.txt
CPU の種類を確認するために「cat /proc/cpuinfo」を実行 下記のように「processor :」の行が複数あるときは,マルチプロセッサあるいはマルチコアという意味になる.
Cygwin のコンソール で,make を実行
■ GNU のコンパイラを使う場合の実行例
まずは gcc のバージョンを確認しておく(gcc バージョン 4.3 系列では、ビルド時にエラーが無くても、あとで不具合が見つかる場合がある)
※ なお CC=gcc-4, FC=gfortran-4 と指定するよりは CC=gcc, FC=gfortran の方が良さそう.詳しくは Makefile.sysstem
※ なお 「USE_OPENMP=1」を付けると途中で止まる場合があります.
○ マルチスレッド版が欲しい場合の実行例
make -j 2 BINARY=32 USE_THREAD=1 CC=gcc FC=gfortran
○ シングルスレッド版が欲しい場合の実行例
make -j 2 BINARY=32 USE_THREAD=0 CC=gcc FC=gfortran
■ MinGW のコンパイラを使う場合の実行例
まずは i686-w64-mingw32-gcc のバージョンを確認しておく.
make -j 2 BINARY=32 USE_THREAD=1 CC=i686-w64-mingw32-gcc FC=i686-w64-mingw32-gfortran
■ GNU のコンパイラを使う場合の実行結果例
■ MinGW のコンパイラを使う場合の実行結果例
「make BINARY=32 USE_THREAD=1 CC="i686-w64-mingw32-gcc -mthreads" FC="i686-w64-mingw32-gfortran -mthreads"」を実行した場合の実行結果例
■ GNU のコンパイラを使う場合の実行例
dll ファイルもコピー(役立つ可能性がある)
cp *.a /usr/lib cp exports/libgoto2.dll /usr/lib/libgoto2.dll.a cp exports/libgoto2.def /usr/lib/libgoto2.def
■ MinGW のコンパイラを使う場合の実行例
cp *.lib /usr/lib cp exports/*.dll /usr/lib cp exports/*.def /usr/lib cd /usr/lib cp libgoto2.dll libgoto2.dll.a
■ GNU のコンパイラを使う場合の設定例
FORTRAN = gfortran-4 -fimplicit-none -g -fexceptions -m32 -mthreads ... TMGLIB = libtmglib_LINUX.a
■ MinGW のコンパイラを使う場合の設定例
FORTRAN = i686-w64-mingw32-gfortran -fimplicit-none -g -fexceptions -m32 -mthreads ... LAPACKLIB = liblapack_LINUX.lib LAPACKLIB_O = liblapack_LINUX_p.lib ... BLASLIB = /usr/lib/libgoto2.lib TMGLIB = libtmglib_LINUX.lib
■ GNU のコンパイラを使う場合
cd lapack-3.1.1 make clean make cp liblapack_LINUX.a /usr/lib cp libtmglib_LINUX.a /usr/lib
■ MinGW のコンパイラを使う場合
cd lapack-3.1.1 make clean make cp liblapack_LINUX.lib /usr/lib cp libtmglib_LINUX.lib /usr/lib
■ ハードウェアとソフトウェア
【要点】 Octave は,ソースコードからビルド, Intel Core2 Duo E8500, Cygwin, Windows XP, Octave バージョン 3.0.3 + GotoBLAS バージョン 1.26
実測値
CC と FC については,GotoBLAS をビルドしたときに使われた C, FORTRAN コンパイラを指定する.
■ GNU のコンパイラを使う場合の設定例
BLLIB = /usr/lib/libgoto2.a ・・・ GotoBLASのパスを指定 CC = gcc FC = gfortran
■ MinGW のコンパイラを使う場合の設定例
BLLIB = /usr/lib/libgoto2.lib ・・・ GotoBLASのパスを指定 CC = i686-w64-mingw32-gcc FC = i686-w64-mingw32-gfortran
make all
■ GNU のコンパイラを使う場合の実行結果例
■ MinGW のコンパイラを使う場合の実行結果例
cd /tmp/CBLAS/lib cp cblas_LINUX.a /usr/lib/libcblas.a cd /tmp/CBLAS/include cp *.h /usr/include
■ GNU のコンパイラを使う場合の実行例
cd /tmp/CBLAS/examples gcc cblas_example1.c -lcblas -lgoto2 ./a.exe
■ MinGW のコンパイラを使う場合の実行例
cd /tmp/CBLAS/examples i686-w64-mingw32-gcc -I/usr/include cblas_example1.c -L/usr/lib -lcblas /usr/lib/libgoto2.lib ./a.exe
cblas_example1.c を引用すると次の通り。