[ English | Japanese ]

ScaLAPACKおよびBLACS

概要

ScaLAPACK (Scalable Linear Algebra PACKage) は、分散メモリ型のコンピュータ向けに開発された高性能なルーチン群です。ScaLAPACKは、連立1次方程式、線形最小二乗問題、固有値問題、特異値問題を解くことができます。また、行列の分解や条件数の計算も行うことができます。密行列や帯行列に対するルーチン群は提供されていますが、疎行列に対しては提供されていません。同様な機能が実行列、複素行列に対して提供されています。

LAPACKと同様に、ScaLAPACKでは、メモリ階層間のデータの転送頻度を最小限にするためブロックアルゴリズムを採用しています。ScaLAPACKは、PBLAS (Parallel BLAS) と呼ばれる分散メモリ版のレベル1、2、3 BLASを基礎としています。更に、PBLASはシングルノード上の計算にはBLASを、各ノード間の通信にはBLACSを採用し、その上に構築されています。PBLASは、ScaLAPACKに含まれています。

BLACS (Basic Linear Algebra Communication Subprograms) は、線形代数のために開発されたメッセージパッシングライブラリです。計算モデルは、1次元、あるいは2次元のプロセスグリッドを想定しており、各プロセスは行列とベクトルの一部を保持します。BLACSは、1つのプロセスから他のプロセスへ、行列や部分行列の通信をするための同期送信および受信、部分行列のブロードキャスト、あるいはグローバルデータのリダクション操作(和、最大値、最小値)を含んでいます。また、プロセスグリッドの生成、変更、問い合わせを行うルーチンも提供しています。ScaLAPACKのアルゴリズムには、プロセスグループの、異なるサブセット内でのブロードキャスト、あるいはリダクションを要求するものがあります。そのためBLACSでは、1つのプロセスがいくつかの重複した、あるいは排反するプロセスグループに属することを許しています。各プロセスは、コンテキストによりラベル付けされています。これは、MPIではコミュニケータと呼ばれています。BLACSは、システムコンテキストと、BLACSのコンテキストが混同しないような仕組みになっています。

ScaLAPACKおよびBLACSの使用方法

  • ScaLAPACKPBLASおよびBLACSルーチン一覧には、ScaLAPACK、PBLAS、BLACSの各ルーチンの概要を記載しています。
  • 追加のユーザインタフェース情報については、ScaLAPACK User's Guide [1]ScaLAPACKPBLAS および BLACS のQuick Reference [2][3][4]を参照してください。
  • コンパイルとリンクには、ScaLAPACKおよびBLACSのコンパイル方法およびリンク方法を記載しています。

ScaLAPACKルーチン一覧

シンプルドライバおよび分割統治法ドライバサブルーチン

 名称欄の? は、接頭辞欄のいずれかに置き換わります。接頭辞はそれぞれ精度を表します。
凡例: S = REAL(kind=4), D = REAL(kind=8), C = COMPLEX(kind=4), Z = COMPLEX(kind=8)
名称 接頭辞 説明
S D C Z 軸選択を伴わない一般帯行列の連立1次方程式AX=Bを解く
S D C Z 軸選択を伴わない一般三重対角行列の連立1次方程式AX=Bを解く
S D C Z 一般帯行列の連立1次方程式AX=Bを解く
S D C Z フルランク行列の優決定系/劣決定系の連立1次方程式を解く
S D C Z 一般行列の連立1次方程式AX=Bを解く
S D C Z 一般行列の特異値分解、オプションとして左/右の特異値ベクトルを求める
S D C Z 対称/エルミート正定値帯行列の連立1次方程式AX=Bを解く
S D C Z 対称/エルミート正定値行列の連立1次方程式AX=Bを解く
S D C Z 対称/エルミート正定値三重対角行列の連立1次方程式AX=Bを解く
P?SYEV
S D 対称行列の選択された固有値および固有ベクトルを求める
P?SYEVD
S D 実対称行列のすべての固有値、オプションとして固有ベクトルを求める。固有ベクトルの場合は、分割統治アルゴリズムを使って求める
P?HEEV
C Z エルミート行列のすべての固有値、オプションとして固有ベクトルを求める
P?HEEVD
C Z エルミート行列のすべての固有値、オプションとして固有ベクトルを求める。固有ベクトルの場合は、分割統治アルゴリズムを使って求める
P?HSEQR
S D 上ヘッセンベルク行列の固有値を求める

エキスパートドライバおよびRRRドライバサブルーチン

 名称欄の? は、接頭辞欄のいずれかに置き換わります。接頭辞はそれぞれ精度を表します。
凡例: S = REAL(kind=4), D = REAL(kind=8), C = COMPLEX(kind=4), Z = COMPLEX(kind=8)
名称 接頭辞 説明
S D C Z 一般行列の連立1次方程式AX=Bを解く
S D C Z 対称/エルミート正定値行列の連立1次方程式AX=Bを解く
P?SYEVX
S D 対称行列の選択された固有値および固有ベクトルを求める
P?SYEVR
S D 実対称行列の選択された固有値および固有ベクトルを求める
P?SYGVX
S D 実一般化対称定値固有値問題の選択された固有値および固有ベクトルを求める
P?HEEVX
C Z エルミート行列の選択された固有値および固有ベクトルを求める
P?HEEVR
C Z エルミート行列の選択された固有値および固有ベクトルを求める
P?HEGVX
C Z 一般化エルミート定値固有値問題の選択された固有値および固有ベクトルを求める

計算ルーチン

 名称欄の? は、接頭辞欄のいずれかに置き換わります。接頭辞はそれぞれ精度を表します。
凡例: S = REAL(kind=4), D = REAL(kind=8), C = COMPLEX(kind=4), Z = COMPLEX(kind=8)
名称 接頭辞 説明
S D C Z 一般帯行列をLU分解する(軸選択なし)
S D C Z P?DBTRFで求めたLU分解を使って、一般帯行列の連立1次方程式AX=BATX=BまたはAHX=Bを解く
S D C Z P?DBTRFで求めたLU分解を使って、三角帯行列の連立1次方程式AX=BATX=BまたはAHX=Bを解く
S D C Z 一般三重対角行列をLU分解する(軸選択なし)
S D C Z P?DTTRFで求めたLU分解を使って、一般三重対角行列の連立1次方程式AX=BATX=BまたはAHX=Bを解く
S D C Z P?DTTRFで求めたLU分解を使って、三重対角三角行列の連立1次方程式AX=BATX=BまたはAHX=Bを解く
S D C Z 行交換による部分軸選択を用いて、一般帯行列をLU分解する
S D C Z P?GBTRFで求めたLU分解を使って、一般帯行列の連立1次方程式AX=BATX=BまたはAHX=Bを解く
S D C Z 直交/ユニタリ変換により、一般長方行列を実準対角形に縮約する
S D C Z 一般行列の条件数の逆数を求める
S D C Z 一般長方行列を平衡化する行と列のスケーリングを計算し、条件数を減らす
S D C Z 直交/ユニタリ相似変換により、一般行列を上ヘッセンベルク形に縮約する
S D C Z 一般長方行列をLQ分解する
S D C Z 一般長方行列をQL分解する
S D C Z 列軸選択を用いて、一般長方行列をQR分解する
S D C Z 一般長方行列をQR分解する
S D C Z 一般行列の連立1次方程式の解を改良し、解に対する前進/後退誤差限界を求める
S D C Z 一般長方行列をRQ分解する
S D C Z 行交換による部分軸選択を用いて、一般行列をLU分解する
S D C Z P?GETRFで求めたLU分解を使って、一般行列の逆行列を求める
S D C Z P?GETRFで求めたLU分解を使って、一般行列の連立1次方程式AX=BATX=BまたはAHX=Bを解く
S D C Z 一般化QR分解する
S D C Z 一般化RQ分解する
S D C Z ヘッセンベルク形行列をSchur分解/固有値を求める
P?ORGLQ
S D PSGELQFで求めたLQ分解を使って、直交行列Qの全部/一部を生成する
P?ORGQL
S D PSGEQLFで求めたQL分解を使って、直交行列Qの全部/一部を生成する
P?ORGQR
S D PSGEQRFで求めたQR分解を使って、直交行列Qの全部/一部を生成する
P?ORGRQ
S D PSGERQFで求めたRQ分解を使って、直交行列Qの全部/一部を生成する
P?ORMBR
S D PSGEBRDで求めた準対角形への縮約を使って、直交行列の一つを一般行列に乗算する
P?ORMHR
S D PSGEHRDで求めたヘッセンベルク形への縮約を使って、直交行列に一般行列を乗算する
P?ORMLQ
S D PSGELQFで求めたLQ分解を使って、直交行列に一般行列を乗算する
P?ORMQL
S D PSGEQLFで求めたQL分解を使って、直交行列に一般行列を乗算する
P?ORMQR
S D PSGEQRFで求めたQR分解を使って、直交行列に一般行列を乗算する
P?ORMRQ
S D PSGERQFで求めたRQ分解を使って、直交行列に一般行列を乗算する
P?ORMRZ
S D PSTZRZFで求めた上三角形への縮約を使って、直交行列に一般行列を乗算する
P?ORMTR
S D PSSYTRDで求めた三重対角形への縮約を使って、直交行列に一般行列を乗算する
S D C Z 対称/エルミート正定値帯行列をコレスキー分解する
S D C Z P?PBTRFで求めたコレスキー分解を使って、対称/エルミート正定値帯行列の連立1次方程式AX=Bを解く
S D C Z P?PBTRFで求めたコレスキー分解を使って、三角帯行列の連立1次方程式AX=Bを解く
S D C Z 対称/エルミート正定値分散行列の条件数の逆数を求める
S D C Z 対称/エルミート正定値行列を平衡化する行と列のスケーリングを計算し、条件数を減らす
S D C Z 対称/エルミート正定値行列の連立1次方程式AX=Bの解を改良し、解に対する前進/後退誤差限界を求める
S D C Z 対称/エルミート正定値行列をコレスキー分解する
S D C Z P?POTRFで求めたコレスキー分解を使って、対称/エルミート正定値行列の逆行列を求める
S D C Z P?POTRFで求めたコレスキー分解を使って、対称/エルミート正定値行列の連立1次方程式AX=Bを解く
S D C Z 対称/エルミート正定値三重対角行列をコレスキー分解する
S D C Z P?PTTRFで求めたコレスキー分解を使って、対称/エルミート正定値三重対角行列の連立1次方程式AX=Bを解く
S D C Z P?PTTRFで求めたコレスキー分解を使って、三重対角三角行列の連立1次方程式AX=Bを解く
P?STEBZ
S D 二分法により対称/エルミート三重対角行列の固有値を求める
P?STEDC
S D 分割統治法アルゴリズムを使って、対称三重対角行列のすべての固有値、オプションとして固有ベクトルを求める
S D C Z 逆反復法を使って、対称/エルミート三重対角行列の固有ベクトルを求める
P?SYGST
S D 対称定値一般化固有値問題を標準形に縮約する
P?SYTRD
S D 直交相似変換により対称行列を実対称三重対角形に縮約する
S D C Z 三角行列の条件数の逆数を求める
S D C Z 三角係数行列の連立1次方程式の解に対する前進/後退誤差限界を求める
S D C Z 三角行列の逆行列を求める
S D C Z 三角行列の連立1次方程式AX=BATX=BまたはAHX=Bを解く
S D C Z 直交変換により上台形行列を上三角形に縮約する
P?HEGST
C Z エルミート定値一般化固有値問題を標準形に縮約する
P?HETRD
C Z ユニタリ相似変換により、エルミート行列をエルミート三重対角形に縮約する
P?UNGLQ
C Z PCGELQFで求めたLQ分解を使って、ユニタリ行列Qの全部/一部を生成する
P?UNGQL
C Z PCGEQLFで求めたQL分解を使って、ユニタリ行列Qの全部/一部を生成する
P?UNGQR
C Z PCGEQRFで求めたQR分解を使って、ユニタリ行列Qの全部/一部を生成する
P?UNGRQ
C Z PCGERQFで求めたRQ分解使って、ユニタリ行列Qの全部/一部を生成する
P?UNMBR
C Z PCGEBRDで求めた準対角形への縮約を使って、ユニタリ行列の1つを一般行列に乗算する
P?UNMHR
C Z PCGEHRDで求めたヘッセンベルク形への縮約を使って、ユニタリ行列を一般行列に乗算する
P?UNMLQ
C Z PCGELQFで求めたLQ分解を使って、ユニタリ行列を一般行列に乗算する
P?UNMQL
C Z PCGEQLFで求めたQL分解を使って、ユニタリ行列を一般行列に乗算する
P?UNMQR
C Z PCGEQRFで求めたQR分解を使って、ユニタリ行列を一般行列に乗算する
P?UNMRQ
C Z PCGERQFで求めたRQ分解を使って、ユニタリ行列を一般行列に乗算する
P?UNMRZ
C Z PCTZRZFで求めた上三角形への縮約を使って、ユニタリ行列を一般行列に乗算する
P?UNMTR
C Z PCHETRDで求めた三重対角形への縮約を使って、ユニタリ行列を一般行列に乗算する
B?LAAPP
S D 一般長方行列と直交行列の積を求める
B?LAEXC
S D 直交相似変換を行って上準三角行列の隣り合う対角ブロックを交換する
B?TREXC
S D 実行列の実Schur分解を並び替える
?LAQR6
S D マルチシフトQR法を行う
?LAR1VA
S D 三重対角行列の部分逆行列のr列目を求める
?LARRB2
S D 限定的な二分法を行ってLDLTの固有値の精度を改良する
?LARRD2
S D 対称三重対角行列の固有値を求める
?LARRE2
S D 実対称三重対角行列の固有値を求める
?LARRE2A
S D 実対称三重対角行列の固有値を求める
?LARRF2
S D Relatively Robust Representation LDLTを求める
?LARRV2
S D 三重対角行列の固有ベクトルを求める
?STEGR2
S D 実対称三重対角行列の選択された固有値および固有ベクトルを求める
?STEGR2A
S D 選択された固有値を求め、固有ベクトルの計算に必要な初期処理を行う
?STEGR2B
S D 実対称三重対角行列の選択された固有値および固有ベクトルを並列に求める
P?GEBAL
S D 一般行列の平衡化を行う
P?LAMVE
S D 分散行列を他の分散行列にコピーする
P?LAQR0
S D ヘッセンベルク行列の固有値を求める
P?LAQR1
S D ヘッセンベルク形行列のSchur分解/固有値を探す
P?LAQR2
S D 上ヘッセンベルク行列を受け取り、直交相似変換を行う
P?LAQR3
S D 上ヘッセンベルク行列を受け取り、直交相似変換を行う
P?LAQR4
S D ヘッセンベルク形行列のSchur分解/固有値を探す
P?LAQR5
S D マルチシフトQR法を行う
P?ROT
S D ギブンス回転を適用する
P?TRORD
S D 実行列の実Schur分解を並び替え、上準三角行列の主対角ブロックに現れる固有値群と右不変部分空間の正規直交基底を張る行列Qの列を求める
P?TRSEN
S D 実行列の実Schur分解を並び替え、上準三角行列の主対角ブロックに現れる固有値群と右不変部分空間の正規直交基底を張る行列Qの列を求める
ローカル環境に対する問題依存パラメータを選択する
ScaLAPACKのバージョンを返す
問題依存パラメータおよびマシン依存パラメータを設定する

補助サブルーチン

 名称欄の? は、接頭辞欄のいずれかに置き換わります。接頭辞はそれぞれ精度を表します。
凡例: S = REAL(kind=4), D = REAL(kind=8), C = COMPLEX(kind=4), Z = COMPLEX(kind=8)
接頭辞 名称
S D C Z
S D CS ZD
S D
?LAPST
?LASORTE
?LASRT2
?STEIN2
P?LABAD
P?LAED0
P?LAED1
P?LAED2
P?LAED3
P?LAEDZ
P?LAMCH
P?LARED1D
P?LARED2D
P?LASRT
P?ORG2L
P?ORG2R
P?ORGL2
P?ORGR2
P?ORM2L
P?ORM2R
P?ORML2
P?ORMR2
P?ORMR3
P?SYGS2
P?SYNGST
P?SYNTRD
P?SYTD2
P?SYTTRD
C Z
?LAHQR2
?LANV2
P?HEGS2
P?HENGST
P?HENTRD
P?HETD2
P?HETTRD
P?LACGV
P?LANHE
P?LARFC
P?LARZC
P?LATTRS
P?MAX1
P?TREVC
P?UNG2L
P?UNG2R
P?UNGL2
P?UNGR2
P?UNM2L
P?UNM2R
P?UNML2
P?UNMR2
P?UNMR3
SC DZ
P?SUM1
なし

PBLASルーチン一覧

 名称欄の? は、接頭辞欄のいずれかに置き換わります。接頭辞はそれぞれ精度を表します。
凡例: S = REAL(kind=4)D = REAL(kind=8)C = COMPLEX(kind=4)Z = COMPLEX(kind=8)
  名称 接頭辞 説明
レベル1 P?SWAP S D C Z ベクトル同士を交換
P?SCAL S D C Z CS ZD ベクトルをスカラー倍
P?COPY S D C Z ベクトルをコピー
P?AXPY S D C Z ベクトルをスカラー倍して加算
P?DOT S D 内積、実数
P?DOTU C Z 内積、複素数(第1ベクトルを転置)
P?DOTC C Z 内積、複素数(第1ベクトルを転置複素共役)
P?NRM2 S D SC DZ ユークリッド・ノルム
P?ASUM S D SC DZ 絶対値の和
PI?AMAX S D C Z 最大絶対値のインデックス
レベル2 P?GEMV S D C Z 一般行列とベクトルの積
P?HEMV C Z エルミート行列とベクトルの積
P?SYMV S D C Z 対称行列とベクトルの積
P?TRMV S D C Z 三角行列とベクトルの積
P?TRSV S D C Z 三角行列の求解
P?GER S D 一般行列のランク1更新、実数
P?GERU C Z 一般行列のランク1更新、複素数( 第2ベクトルを転置)
P?GERC C Z 一般行列のランク1更新、複素数(第2ベクトルを転置複素共役)
P?HER C Z エルミート行列のランク1更新
P?HER2 C Z エルミート行列のランク2更新
P?SYR S D 対称行列のランク1更新
P?SYR2 S D 対称行列のランク2更新
レベル3 P?GEMM S D C Z 一般行列同士の積
P?SYMM S D C Z 対称行列同士の積
P?HEMM C Z エルミート行列同士の積
P?SYRK S D C Z 対称行列のランクk更新
P?HERK C Z エルミート行列のランクk更新
P?SYR2K S D C Z 対称行列のランク2k更新
P?HER2K C Z エルミート行列のランク2k更新
P?TRAN S D 行列の転置、実数
P?TRANU C Z 行列の転置、複素数
P?TRANC C Z 行列の転置複素共役 、複素数
P?TRMM S D C Z 三角行列同士の積
P?TRSM S D C Z 三角行列の求解

BLACSルーチン一覧

 名称欄の? は、接頭辞欄のいずれかに置き換わります。接頭辞はそれぞれ精度を表します。
凡例: s = REAL(kind=4), d = REAL(kind=8), c = COMPLEX(kind=4), z = COMPLEX(kind=8), i = INTEGER
  名称 接頭辞 説明
初期化 blacs_pinfo BLACS設定前に必要な初期行列情報を入手
blacs_setup blas_pinfo相当の機能
blacs_get BLACSが内部デフォルト値として使用する値を取得
blacs_set BLACS内部デフォルト値を設定
blacs_gridinit BLACSプロセス格子にプロセッサを割り当て
blacs_gridmap BLACSプロセス格子に任意の方法でプロセッサを割り当て
解放 blacs_freebuff BLACSバッファを解放
blacs_gridexit BLACSコンテキストを解放
blacs_abort 全BLACSプロセスを破棄
blacs_exit 全BLACSコンテキストおよび割り当てメモリを解放
送信 ?gesd2d s d c z i 一般2次元送信
?gebs2d s d c z i 一般2次元一斉送信
?trsd2d s d c z i 台形2次元送信
?trbs2d s d c z i 台形2次元一斉送信
受信 ?gerv2d s d c z i 一般受信
?gebr2d s d c z i 一般一斉受信
?trrv2d s d c z i 台形受信
?trbr2d s d c z i 台形一斉受信
結合 ?gamx2d s d c z i 一般要素ごとの最大絶対値
?gamn2d s d c z i 一般要素ごとの最小絶対値
?gsum2d s d c z i 一般要素ごとの総和
情報他 blacs_gridinfo BLACS格子情報を入手
blacs_pnum 行列プロセス番号を取得
blacs_pcoord BLACSプロセス格子の行と列を取得
blacs_barrier 全プロセスが本ルーチンをcallするまで全プロセスの実行を中断
非標準 dcputime00 任意開始時間からのCPU秒数を取得
dwalltime00 任意開始時間からのwall-clock秒数を取得
ksendid BLACSメッセージIDを取得
krecvid 受信用BLACSメッセージIDを取得
kbsid 送信元BLACSメッセージIDを取得
kbrid 一斉送信先BLACSメッセージIDを取得

外部リンク

  1. ScaLAPACK User's Guide
  2. ScaLAPACK Quick Reference (PostScriptファイルダウンロード)
  3. PBLAS Quick Reference
  4. BLACS Quick Reference
  5. ScaLAPACK User's Guideのコピーは、SIAMから入手できます。

バージョン情報

  • このマニュアルページのバージョン: 2.2.0-180823