行列計算パッケージLAPACK/VP の紹介 ` - 九州大学

行列計算パッケージLAPACK/VPの紹介
行列計算パッケージLAPACK/VPの紹介
渡部善隆*
Fortranから利用できる行列計算パッケージLAPACK/VP (正式名称:UXP/V LAPACK/VP
VIO)をスーパーコンピュータVPP700/56上で公開しました・本稿ではLAPACK/VPの特徴、具
体的な利用方法、オンラインマニュアルの参照方法などについて説明します。
なお、 LAPACK/VPの使用方法の説明ではVPP700/56についての基礎的な知識を前提として
います VPP700/56の利用方法の詳細は[1]を御覧ください。
1 LAPACK/VPの概要
1.1 LAPACK/VP
LAPACK/VPは,スーパーコンピュータVPP700/56 (ホスト名kyu-vpp, IPアドレス133.5.9.70)
の単一PE上で動作する行列計算パッケージです.利用者はFortranプログラムから各ルーチンをCALL
文によって呼び出します.
1.2 LAPACK
LAPACK(LinearAlgebraPACKage)は,数学ソフトウェア,スーパーコンピュータの性能評価デー
タなどの情報を提供するnetlib (URL: http://www.netlib.org/1)で公開されている線形計算ライブ
ラリです.各ルーチンはFORTRAN 77で記述されています2.
LAPACK/VPはLAPACK 2.0をVPP700/56の単一PEで高速に実行されるようにベクトルチュー
ニングしたものです.残念ながら,ベクトルチューニング後のソースプログラムは非公開です.
1.3 主な機能
LAPACK/VPには,約300種類,各精度を合計すると約1,100本のルーチンが用意されています.
主な機能は以下の通りです:
・連立1次方程式(一般密行列,バンド行列,対称/Hermite行列など)
・線形最小二乗問題(最小ノルム解,一般化線形モデル問題など)
・固有値問題(対称/非対称固有値問題,一般化固有値問題など)
・特異値分解(特異値,特異ベクトルなど)
*九州大学大型計算機センター・研究開発部 E-mail: watanabeQcc.kyushu-u.ac.jp
l有名なLINPACKベンチマークによる"Top500 Supercomputer Sites"ち,ここで公開されています.
2もちろん現在センターでサポートしているFortran 90から呼び出すことができます. Fortran 90規格はFORTRAN 77
規格を完全に包含しています.
-1-
九州大学大型計算機センター広報
Vol.32 No. 1 1999
解 説
1.4 I-APACK/VPの構成
LAPACK/VPは,一般に問題を解くための機能を提供するドライバルーチン(driverroutines),個々
の問題を解くための機能を提供する計算ルーチン(comutational routines),および,補助的な計算や
共通に使用される手続きを提供する補助ル-テン(auxiliary routines)で構成されています.ドライバ
ルーチンと計算ルーチンの詳細は4章をご覧ください.
LAPACK/VPは,ベクトル演算や行列演算などの『核』となる部分でBLAS/VP(正式名: UXP/V
BLAS/VP VIO)ライブラリを呼び出します3.
BLAS/VPもLAPACK/VPと同様, netlibで公開されているライブラy BLAS(Basic Linear Algebra Subprograms)をベクトルチューニングしたものです4.
1.5 UNPACK, EISPACKとの関係
LAPACKは1970年代に開発,提供された連立1次方程式の解法パッケージLINPACKと固有値問
題の解法パッケージEISPACKを統合したものです LINPACK, EISPACKからLAPACK -の詳し
い移行方法がマニュアル[2], [3]に記述されています・
2 LAPACK/VPの利用方法
ここでは,翻訳・結合によって実行可能ファイルを作成するまでの手順を説明します.翻訳・結合に
よる実行可能ファイルの作成,実行はバッチ処理でも行なうことができます.バッチ処理を行なう場合
のシェルスクリプトの書き方,バッチリクエストの投入方法,処理コマンドのオプションの詳細は[1]
を御覧ください.
0実行可能ファイルの作り方
LAPACK/VPのルーチンは,利用者のFortranプログラムにCALL文で記述します. LAPACK!VP
のライブラリはfrt(/usr/lang/bin/frt)コマンドにリンクオプション-Ilapackvpを指定すること
により結合されます5.
また, LAPACK/VPはBLAS/VPを使用します・そのため,リンクオプションーIblasvpもあわ
せて記述します.
リンクオプションは,必ずソースプログラムファイル名やオブジェクトファイル名よりも後ろに
-llapackvp -lblasvp
の順番に記述してください6.以下は,ソースプログラムsa皿pie.f90を翻訳・結合して実行可能ファ
イルを作成する例です:
蜘-yppX frJ sample,f90 -llapackvp -lblasyp ◎ -実行可能フアイjL,の搾成
3計算の核の部分を構成するBLASを,搭載する計算機にあわせて「ギンギン」にチューニングすることによって, LAPACKソースの移植性を保ったまま高速化が実現できます.さらに,すべてのソースを公開した上で利用者の意見を真撃に受
け入れる(格好いい)姿勢によって, LAPACKは世界的な名声を獲得しました.厳密にはLAPACKとBLASは別のライブ
ラリです.しかしnetlibで入手できるLAPACKのソースにはBLASのソースプログラムがついてきます.
4こちらも殊念ながらソースプログラムは非公開です.
5"ll"はリンクオプションを意味します.
6順番にLAPACK/VPライブラリ(liblapackvp.a), BLAS/VPライブラリ(libblasvp.a)を呼び出しています.
九州大学大型計算機センタ-広報
Vol.32 No. 1 1999
-2-
行列計算パッケージLAPACK/VPの紹介
結合処理が無事に終わると,実行可能ファイルa.outが作成されます.実行可能ファイル名を任意の
名前に変更するには一〇オプションに続けて適当なファイル名を入力します.以下は実行可能ファイル
名を"example.ex"に変更する例です.
蜘-vpp% fxt -0 example.ex sample,f90 -1lapac加p -Iblasyp ◎
3 マニュアル
ここでは, LAPACK/VPマニュアルの参照方法について説明します.
3.1 書籍
公式マニュアルとして書籍[2]が販売されています・日本語訳同もあります.
3.2 manコマンド
kyu-vppではman(/usr/uxp/man)コマンドによる検索が可能です.ただし英語のみです.
LAPACKの概要は`'man lapack"で調べることができます.
kyu-vpp*/,恥R Iapack 薗 キーLAPACKの概要を見る
LAHCK CL) LAPAC妊FORTRAN LIBRARY; ROOT王NES ‥‥ LAPACKく1)
WHAT・ IS LAPAGK?
LAPAぽis ^transportable library of Fortran 77 subroutinesねr
solv軸g the mo畠もcommon problems in numericaユIinear algebra:
野鴫餌等0王Iinear equ醜ions, linear leasも squares px曲1卵,
eigenvalue problems, and singular value problem5. It has been
des丘gned to be efまIcieat on a 甘ide rmge of modern M酔perfformCe CO叩1止er昆・
LAPACK is intended to be the successor to LI封PACK and EISPAGK.
It extend昏 tIie fu且C七ionality of these packages by including
equilibration., iterative refinement, error bounds, and 血iver
rou七iaes かr linear systems, routines for comp-止ing血reordering the Scmxr factorization, and condition esti:血的ion rou一
七ine基軸r eigenvalue problems. LAPACK improves on七he accirr&ey
of七Iie standard algorithms in EISPACK by including hi酔 accuracy 娘gorxthn串まor finding singular values and eigenvalues of
bidiagoflal and tridi喝oaal matrices respectively that arise ia
SVD and 昏ymnieはic eigenvalue problems. The algori七hnS and
so王も甘旺e have been restructured to achieve Mgh.占f王iciency on
vector prOce55ors, Mgk-performance Hsuperscalar'* work的ationS aneU shared-memory multIprocessors. A comprehensive testユ喝 and ti血i王唱 suite is provided along 甘i七五 the LAPACK
So王もware.
HOW TO GET LAPACK
The entire LAPACK` package is available via xnetIib and NAG, or
8P声eifxc routines can be obtained via netIib. To see a
description,
of
the
coatents
of
LAPAClく send
email
to
netliib鮎rnl.gov and in the mail message type:缶end index王rom
H削巳ism
-3-
九州大学大型計算機センター広報
Vol.32 No. 1 1999
解 説
manに続けて各ルーチンの名前を指定することにより,機能・引数などを詞べることができます.な
お,ルーチン名は小文字で入力してください.
3.3 WWWブラウザによる検索
netlibの
http : //www. netlib ・ org/lapack/
にLAPACKの公式ホームページがあります.
ここではマニュアル[2]のHTML版を参腐することができます7.また,個別のソースプログラムの
ダウンロード,テクニカル・ノート,並列版・ C版 Fortran 90版LAPACKなど,最新の情報を入
手することができます.
LJ色PACK - Linear AIg昏b和PACKage
'pTWM.V/^Kil',冒問
題rPm即1*サォJ!?!H5!!R5! 【相聞)
Click品蛇teォee触れumberoface耶¢tothail如rY
JLr一レームー・・-′一ヽJdl…ーtJ-一一
LAPACK仰山塔rouOT*Sbr*olvmi野tomeofcimuttsnei甘地さIt-squ:細WIutl帥印加鵬ofat&sbo鵬.
elenvaitiaoroblamsandsd'arvaJuetreble鵬The議書Dciぬdmatnr如tonzatJons虹はchol捗%.CRS油Seh叫tenerdi如Sc
毒血oprovitfe或革arVrelit'号ytJclI由nn功urfactonZ等b†椅鞠d堺もTr曲れumbersDens事3nd
bphdrrartncesrehsictcdbutn°Indffvtss.ctmfarrunctronafity■d・idcomplexmatri捕
血aidehubteoY的
輸lIran20ofU聯血鵬.亀mil串B加dnf軸9functionalityofsヵ事加froutinesnO(totaledinform*輸rI°
rwiciam.plixarefertor貞ゞ担
'胤抜幽息触
Thoon抑;91ォ03lof伽∪籾Kprojectはtomslサthサm由秘仏。王立即土mlU封r=琵追Iitran嘘頗軸もneh的叫トrTd相Or
vBc加randparallelproeォ銘8桔OnAォ29machines.Lfl臓CKmfBSPACK耶Lne頗cmnibecausetheirme棚田等Pa的11噂血re
監芯浩一忠恕㌶r冒ぷembyrein漂iよsretw
ltfci昌まま空intuisfu!flo昌恕.iてこ
theinnermostloops
transp。rtsttewayt。ま忠霊綜霊,so霊zei
fattestpossiblepe血Trr由れco.LWACKraquir辞thathilh吋opもむixoporalも°栂toair.叫rlmか印サntサdonoサ:h朋
d。:浩蒜恕悪霊*霊謂浩濫蒜woiyhie
instead翻oprovidea
岩慧㍑lUtl
'fcweaae,for
lie品蒜芯品隷arebase品謂豊盈thecomputationi監琵雷だ訂,瑠謡品賢:LinearAleebraSu
e癖!oittheLevel3郎五一一的etof幸pecific>地軸如q抑dl如do欄nOue蜘Bfmtnズmultiplic曲en都d也ssoluも○れd
medesiinedattfti恕㌫
細聯teT稚wtfcmulも如rt肘handsl如hc3脹oofthocaさ即脚tLlimtyoftheLevel3BLftSoper的e帆鉄郎fate(re恥t8n恥
6絹ciencyollmanyhi*h-peiね¢事括.卵eul叫dispecial鞍eo血d岬〆甘血tunr
ughtyefficien
upACKr。ufc£譜me-specrficI深窓慧㌫濫詣eB慧formany
Alth。uth忠恕悪霊温TheBUSenrffe
的馳intho乱輸It碍note聯撫ぜtgpa:血円め串aspeeisiむむ噂輸en°inmosth!fh-pe血rrr肺C8
BUSinwalstig
nc芸t。fferany。than蒜濫'tab。n。fthサH.AS欄叩
-butltd如棚細U糊血鵬誠血
LAPACKホームページ(1999年1月現在)
Iatex2htmlで機械的に変換したものです.
九州大学大型計算棟センター広報
Vol. 32 No. 1 1999
-4-
行列計算パッケージLAPACK/VPの紹介
4 ドライバルーチン,計算ル-テン一覧
LAPACK/VPで利用できるドライバルーチン,計算ルーチンの一覧です・
4.1 ドライバルーチン
ドライバルーチン(driver routines)は,それぞれが1つの完全な問題を解くルーチンです・各ドライ
バルーチンは,ふつう一連の計算ルーチンを呼び出す構造になっています.
連立1次方程式
連立1次方程式のドライバルーチンには,通常の単純ドライバ(simple driver)に加えて,幾つかの機
能を追加したエキスパート・ドライバ(expert drive)があります・エキスパート・ドライバは,条件数
の算定,行列の特異性のチェック,解の反復改良,誤差解析などの機能をサポートします.ただしエキ
スパート・ドライバを実行するた糾こは,単純ドライバの約2倍の記憶容量が必要です.
行列の型と格納形式
倍精度
複素数
ドライバ
線形最小二乗問題
単精度
複素数
-5-
倍精度
複素数
九州大学大型計算機センター広報
Vol.32 No. 1 1999
堰
読
●一般化線形最小二乗問題
●標準固有値問題,特異値分解
対称固有値問題の単純ドライバルーチンは,固有値すべてと選択された固有ベクトルを計算します・
divide and conquerドライバルーチンtt,単純ドライバに比べ高速な代わりに記憶容量を多く使用する
手法を用いています.エキスパート・ドライバは指定した範囲の固有値と対応する固有ベクトルが計算
できます.
非対称固有値問題のエキスパート・ドライバは単純ドライバルーチンに行列の均衡化,条件数の計算
などの機能が追加されています.
壁
圧
^J
固
値
固
●一般化固有値問題,一般化特異値分解
対称またはHermite行列Aと正定値対称行列Bに対してはAz -入Bx, ABx -入a:, BAx - ACを
選択できます.
JL州人・、('
-人^,fl一群機センターIiこm
Vol.32No.11999
^9t^^5
行列計算パッケージLAPACK/VPの紹介
4.2 計算ルーチン
計算ルーチンはLU分解,実対称行列の三重対角化など,個々の計算を実行します.ドライバルーチ
ンは一連の計算ルーチンを呼び出す構成になっています.利用者はこれらの計算ルーチンを組み合わせ
てドライバルーチンでは実行できない処理を実行することができます.
"LDL"分解とは,対角行列Dおよび上三角行列Uまたは下三角行列Lを用いて行列をLDLT, UDUT,
LDLH, UDUHの形に分解する総称とします.ただし"T"は行列の転置'#'は行列の共役転置をそ
れぞれ表します.
●連立1次方程式(1)
行列の型と格納形式
一般行列
一般バンド行列
一般三重対角行列
対称/Hermite
正定値行列
対称/Hermite
正定値行列
(圧縮形式)
対称/Hermite
正定値バンド行列
対称/Hermite
正定値三重対角行列
複素数
部分ピボット選択付きLU分解
分解を使って解を求める
条件数を推定する
解の誤差限界を計算する
分解を使って逆行列を求める
方程式を均衡化する
部分ピボット選択付きLU分解
分解を使って解を求める
条件数を推定する
解の誤差限界を計算する
方程式を均衡化する
部分ピボット選択付きLU分解
分解を使って解を求める
条件数を推定する
解の誤差限界を計算する
Cholesky分解
分解を使って解を求める
条件数を推定する
解の誤差限界を計算する
分解を使って逆行列を求める
方程式を均衡化する
Cholesky分解
分解を使って解を求める
条件数を推定する
解の誤差限界を計算する
分解を使って逆行列を求める
方程式を均衡化する
Cholesky分解
分解を使って解を求める
条件数を推定する
解の誤差限界を計算する
方程式を均衡化する
LDL分解
分解を使って解を求める
粂件数を推定する
解の誤差限界を計算する
-7-
倍精度
複素数
S GETRF
C GETRF
DGETRF
Z GETRF
SGETRS
C GETRS
DGETRS
ZGETRS
SGECON
CGECON
DGECON
ZGECON
S GERFS
C GERFS
D GERFS
ZGERFS
S GETRI
CGETRI
DGETRI
ZGETRI
SGEEQU
CGEEQU
D GEEQU
Z GEE QU
S GBTRF
CGB TRF
DGBTRF
ZGBTRF
S GBTRS
CGBTRS
D GBTRS
Z GBTRS
SGBCON
CGBCON
DGBCON
ZGBCON
SGBRFS
CGBRFS
DGBRFS
Z GBRFS
SGBEQU
CGBEQU
DGBEQU
ZGBEQU
S GTTRF
C GTTRF
D GTTRF
Z GTTRF
SGTTRS
C GTTRS
DGTTRS
Z GTTRS
SGTCON
CGTCON
DGTCON
ZGTCON
SGTRFS
C GTRFS
DGTRFS
Z GTRF S
SPOTRF
CPOTRF
DP OTRF
ZPOTRF
SP OTRS
CPOTRS
DPOTRS
ZPOTRS
SPOCON
CPOCON
DPOCON
ZPOCON
SPORFS
CP ORFS
DP ORFS
ZPORFS
SPOTRI
CP OTRI
DPOTR工
ZPOTRI
SPOEQU
CPOEQU
DPOEQU
ZPOEQU
SPPTRF
CPP TRF
DPPTRF
ZPPTRF
SPPTRS
CPPTRS
DPPTRS
ZPP TRS
SPPCON
CPPCON
DPPCON
ZPPCON
SPPRFS
CPPRFS
DPPRFS
ZPPRFS
SPPTRI
CPPTRI
DPPTR工
ZPPTRI
SPPEQU
CPPEQU
DPPEQU
ZPPEQU
S PB TRF
CPB TRF
DPBTRF
ZPBTRF
SPBTRS
CPBTRS
DPBTRS
ZPBTRS
SPBCON
CPBCON
DPBCON
ZPBCON
SPBRFS
CPBRFS
DPBRFS
ZPBRFS
SPBEQU
CPBEQU
DPBEQU
ZPBEQU
SPTTRF
CP TTRF
DPTTRF
Z PTTRF
S PTTRS
CP TTRS
DPTTRS
ZPTTRS
SPTCON
CPTCON
DPTCON
ZPTCO N
SPTRFS
CPTRFS
DPTRFS
ZPTRFS
九州大学大型計算機センター広報
Vol.32 No. 1 1999
解 説
連立1次方程式(2)
直交分解と線形最小二乗問題
九州大学夫JFIJ計算機センター広報
Vol.32 No. 1 1999
-8-
行列計算パッケージLAPACK/VPの紹介
●一般化直交分解と線形最小二乗問題
対称固有値問題
非対称固有値問題
特異値分解
-9-
九州大学大型計算機センター広報
Vol.32 No. 1 1999
解 説
対称正定借一般化固有値問題
一一般化固有値問題
●一般化特異値分解
●その他
参考文献
囲VPP700/56利用の手引(第2版),九州大学大型計算機センター1998.
[2] Anderson, E., Bai, Z., Bischof, C, Demmel, J., Dongarra, J., Du Croz, J., Greenbaum, A.,
Hammarling, S., McKenney, A., Ostrouchov, S-, and Sorensen, D.: LAPACK Users Guide,
Second Edition, Society for Industrial and Applied Mathematics, Philadelphia, ISBN 0-89871345-5, 1995. (http: //www.netlib. org/lapack/)
[3] Anderson, E., Bai, Z., Bischof, C, Demmel, J., Dongarra, J., Du Croz, J., Greenbaum, A.,
Hammarling, S., McKenney, A., Ostrouchov, S., and Sorensen, D.,小国力訳:行列計算パッ
ケージLAPACK利用の手引,丸善ISBN 4-621-04076-6, 1995.
九州大学大型計算機センターIA報
Vol.32 No.1 1999
- 10 ---