JyAM's BSD: NetBSD-1.6 System on AT Installation, Leg #13
13th Leg. LAPACK-3.0の導入
高性能コンピュータのための線型代数パッケイジであるLAPACK (a Linear algebra library for high-performance computers) Version 3.0を
導入した。
LAPACKは、UNPACK(連立1次方程式を解くライブラリやQR分解ライブラリなどを含む)と
EISPACK(固有値解析ライブラリや特異値分解ライブラリなどを含む)を統合したパッケイジである。
LAPACKは基本的な行列計算にはBLAS (Basic Linear Algebra Sub-program)を使う。
ハードウェア、ソフトウェアメイカーがLAPACKに改良を加えて販売している。
- DSSLIB (Apogee)
- IMSL (Visual Numeric)
- LibSci (Cray)
- MATRIX (Hitach)
- SUN Performance Library (SUN)
また、C言語で書き換えられたCLAPACK, 並列計算機用のScaLAPACK等もある。
■ コンパイルとインストール
- lapack.tgz(101 MB)を展開すると出てくるLAPACKディレクトリ内のlapack.tgz (5 MB)を
展開する。lapackディレクトリが生成されるので入る。
- INSTALLディレクトリにあるlawn81.*
(LAPACK Working Note 81: Quick Installation Guide for LAPACK on Unix Systems)
がインストールマニュアルなので、
印刷して手元に置いておくと作業がはかどる。
- make.incを修正する。
INSTALLディレクトリにmake.inc.LINUXがあるのでそれを参考にする。
- PLAT = _NETBSD13
- FORTRAN = g77
- OPT = -G3 # -c以外のオプションを指定
- NOOPT =
- LOADER = g77
- LOADEROPT =
- ARCFLAGS = -cr
- RANLIB = ranlib
- BLASLIB = ../../blas$(PLAT).a
- Makefileを修正する。BLAS Libraryを持っていないので、
blaslibを作成する指定を追加。
- lib: blaslib lapacklib tmglib
- BLAS ディレクトリでrm *.SUMMする。
- gmakeを実行する。
- suでgmake installを実行する.
- cp *.a /usr/local/libを実行する。
- gmake cleanを実行する
- manpagesとequivalenceをインストールする。
- manpages.tgzを展開する。出てくるREADMEを読む。
- manpagesを/usr/local/man/manlにコピーする。
- /etc/man.confの_subdirにmanlを追加し、
*.lに関する扱いを指示する_buildを追加する。
- gcc -o equivalence equivalence.cする。equivalenceを/usr/local/binへcpする。
rehashする。
-G3オプションは必ずつけること。つけると約44 mflops、つけないと約17 mflops
(INSTALL/testsecond, INSTALL/testdsecndで計測)。
またTiming the Eigensystem Routinesでは約20 Megaflopsをマークした。
私のマシンではTiming the Liner Equations Routinesを行っているとき、
xlintim{s,c,d,z}がNo enough memoryのため実行できなかった
(64 MB Phyisical Memory + 64 MB Virtual Memory)。
使い方はexample1.fがLAPACKを使ったソースコードだとすると、
g77 -o example1 example1.f /usr/local/lib/lapack_NETBSD13.a /usr/local/lib/blas_NETBSD13.a
最適化オプションなどは適当に。Makefileを書いたほうが面倒臭くなくてよい。
BSDのTopへ戻る