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のコンテキストが混同しないような仕組みになっています。
ユーザインタフェース情報は、いくつかの箇所に記載されています。
PZHEEVDの情報を見るには、man pzheevdと入力してください。man pageをご覧になれない場合は、
リファレンス(Man Page)を参照してください。
| 名称 | 接頭辞 | 説明 |
|---|---|---|
P?DBSV
| S D C Z
| 軸選択を伴わない一般帯行列の連立1次方程式AX=Bを解く |
P?DTSV
| S D C Z
| 軸選択を伴わない一般三重対角行列の連立1次方程式AX=Bを解く |
P?GBSV
| S D C Z
| 一般帯行列の連立1次方程式AX=Bを解く |
P?GELS
| S D C Z
| フルランク行列の優決定系/劣決定系の連立1次方程式を解く |
P?GESV
| S D C Z
| 一般行列の連立1次方程式AX=Bを解く |
P?GESVD
| S D
| 一般行列の特異値分解、オプションとして左/右の特異値ベクトルを求める |
P?PBSV
| S D C Z
| 対称/エルミート正定値帯行列の連立1次方程式AX=Bを解く |
P?POSV
| S D C Z
| 対称/エルミート正定値行列の連立1次方程式AX=Bを解く |
P?PTSV
| S D C Z
| 対称/エルミート正定値三重対角行列の連立1次方程式AX=Bを解く |
P?SYEV
| S D
| 対称行列の選択された固有値および固有ベクトルを求める |
P?SYEVD
| S D
| 実対称行列のすべての固有値、オプションとして固有ベクトルを求める。固有ベクトルの場合は、分割統治アルゴリズムを使って求める |
P?HEEV
| C Z
| エルミート行列のすべての固有値、オプションとして固有ベクトルを求める |
P?HEEVD
| C Z
| エルミート行列のすべての固有値、オプションとして固有ベクトルを求める。固有ベクトルの場合は、分割統治アルゴリズムを使って求める |
| 名称 | 接頭辞 | 説明 |
|---|---|---|
P?GESVX
| S D C Z
| 一般行列の連立1次方程式AX=Bを解く |
P?POSVX
| S D C Z
| 対称/エルミート正定値行列の連立1次方程式AX=Bを解く |
P?SYEVX
| S D
| 対称行列の選択された固有値および固有ベクトルを求める |
P?SYGVX
| S D
| 実一般化対称定値固有値問題の選択された固有値および固有ベクトルを求める |
P?HEEVX
| C Z
| エルミート行列の選択された固有値および固有ベクトルを求める |
P?HEGVX
| C Z
| 一般化エルミート定値固有値問題の選択された固有値および固有ベクトルを求める |
| 名称 | 接頭辞 | 説明 |
|---|---|---|
P?DBTRF
| S D C Z
| 一般帯行列をLU分解する(軸選択なし) |
P?DBTRS
| S D C Z
| P?DBTRFで求めたLU分解を使って、一般帯行列の連立1次方程式AX=B、ATX=BまたはAHX=Bを解く
|
P?DBTRSV
| S D C Z
| P?DBTRFで求めたLU分解を使って、三角帯行列の連立1次方程式AX=B、ATX=BまたはAHX=Bを解く
|
P?DTTRF
| S D C Z
| 一般三重対角行列をLU分解する(軸選択なし) |
P?DTTRS
| S D C Z
| P?DTTRFで求めたLU分解を使って、一般三重対角行列の連立1次方程式AX=B、ATX=BまたはAHX=Bを解く
|
P?DTTRSV
| S D C Z
| P?DTTRFで求めたLU分解を使って、三重対角三角行列の連立1次方程式AX=B、ATX=BまたはAHX=Bを解く
|
P?GBTRF
| S D C Z
| 行交換による部分軸選択を用いて、一般帯行列をLU分解する |
P?GBTRS
| S D C Z
| P?GBTRFで求めたLU分解を使って、一般帯行列の連立1次方程式AX=B、ATX=BまたはAHX=Bを解く
|
P?GEBRD
| S D C Z
| 直交/ユニタリ変換により、一般長方行列を実準対角形に縮約する |
P?GECON
| S D C Z
| 一般行列の条件数の逆数を求める |
P?GEEQU
| S D C Z
| 一般長方行列を平衡化する行と列のスケーリングを計算し、条件数を減らす |
P?GEHRD
| S D C Z
| 直交/ユニタリ相似変換により、一般行列を上ヘッセンベルク形に縮約する |
P?GELQF
| S D C Z
| 一般長方行列をLQ分解する |
P?GEQLF
| S D C Z
| 一般長方行列をQL分解する |
P?GEQPF
| S D C Z
| 列軸選択を用いて、一般長方行列をQR分解する |
P?GEQRF
| S D C Z
| 一般長方行列をQR分解する |
P?GERFS
| S D C Z
| 一般行列の連立1次方程式の解を改良し、解に対する前進/後退誤差限界を求める |
P?GERQF
| S D C Z
| 一般長方行列をRQ分解する |
P?GETRF
| S D C Z
| 行交換による部分軸選択を用いて、一般行列をLU分解する |
P?GETRI
| S D C Z
| P?GETRFで求めたLU分解を使って、一般行列の逆行列を求める
|
P?GETRS
| S D C Z
| P?GETRFで求めたLU分解を使って、一般行列の連立1次方程式AX=B、ATX=BまたはAHX=Bを解く
|
P?GGQRF
| S D C Z
| 一般化QR分解する |
P?GGRQF
| S D C Z
| 一般化RQ分解する |
P?LAHQR
| S D
| ヘッセンベルク形行列を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で求めた三重対角形への縮約を使って、直交行列に一般行列を乗算する
|
P?PBTRF
| S D C Z
| 対称/エルミート正定値帯行列をコレスキー分解する |
P?PBTRS
| S D C Z
| P?PBTRFで求めたコレスキー分解を使って、対称/エルミート正定値帯行列の連立1次方程式AX=Bを解く
|
P?PBTRSV
| S D C Z
| P?PBTRFで求めたコレスキー分解を使って、三角帯行列の連立1次方程式AX=Bを解く
|
P?POCON
| S D C Z
| 対称/エルミート正定値分散行列の条件数の逆数を求める |
P?POEQU
| S D C Z
| 対称/エルミート正定値行列を平衡化する行と列のスケーリングを計算し、条件数を減らす |
P?PORFS
| S D C Z
| 対称/エルミート正定値行列の連立1次方程式AX=Bの解を改良し、解に対する前進/後退誤差限界を求める |
P?POTRF
| S D C Z
| 対称/エルミート正定値行列をコレスキー分解する |
P?POTRI
| S D C Z
| P?POTRFで求めたコレスキー分解を使って、対称/エルミート正定値行列の逆行列を求める
|
P?POTRS
| S D C Z
| P?POTRFで求めたコレスキー分解を使って、対称/エルミート正定値行列の連立1次方程式AX=Bを解く
|
P?PTTRF
| S D C Z
| 対称/エルミート正定値三重対角行列をコレスキー分解する |
P?PTTRS
| S D C Z
| P?PTTRFで求めたコレスキー分解を使って、対称/エルミート正定値三重対角行列の連立1次方程式AX=Bを解く
|
P?PTTRSV
| S D C Z
| P?PTTRFで求めたコレスキー分解を使って、三重対角三角行列の連立1次方程式AX=Bを解く
|
P?STEBZ
| S D C Z
| 二分法により対称/エルミート三重対角行列の固有値を求める |
P?STEDC
| S D
| 分割統治法アルゴリズムを使って、対称三重対角行列のすべての固有値、オプションとして固有ベクトルを求める |
P?STEIN
| S D C Z
| 逆反復法を使って、対称/エルミート三重対角行列の固有ベクトルを求める |
P?SYGST
| S D
| 対称定値一般化固有値問題を標準形に縮約する |
P?SYTRD
| S D
| 直交相似変換により対称行列を実対称三重対角形に縮約する |
P?TRCON
| S D C Z
| 三角行列の条件数の逆数を求める |
P?TRRFS
| S D C Z
| 三角係数行列の連立1次方程式の解に対する前進/後退誤差限界を求める |
P?TRTRI
| S D C Z
| 三角行列の逆行列を求める |
P?TRTRS
| S D C Z
| 三角行列の連立1次方程式AX=B、ATX=BまたはAHX=Bを解く |
P?TZRZF
| 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で求めた三重対角形への縮約を使って、ユニタリ行列を一般行列に乗算する
|
| 名称 | 接頭辞 | 説明 | |
|---|---|---|---|
| レベル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
| 三角行列の求解 |
| C言語名 | FORTRAN言語名 | 接頭辞 | 説明 | |
|---|---|---|---|---|
| 初期化 | Cblacs_pinfo
| blacs_pinfo
| BLACS設定前に必要な初期行列情報を入手 | |
Cblacs_setup
| blacs_setup
| blas_pinfo相当の機能 | ||
Cblacs_get
| blacs_get
| BLACSが内部デフォルト値として使用する値を取得 | ||
Cblacs_set
| blacs_set
| BLACS内部デフォルト値を設定 | ||
Cblacs_gridinit
| blacs_gridinit
| BLACSプロセス格子にプロセッサを割り当て | ||
Cblacs_gridmap
| blacs_gridmap
| BLACSプロセス格子に任意の方法でプロセッサを割り当て | ||
| 解放 | Cblacs_freebuff
| blacs_freebuff
| BLACSバッファを解放 | |
Cblacs_gridexit
| blacs_gridexit
| BLACSコンテキストを解放 | ||
Cblacs_abort
| blacs_abort
| 全BLACSプロセスを破棄 | ||
Cblacs_exit
| blacs_exit
| 全BLACSコンテキストおよび割り当てメモリを解放 | ||
| 送信 | C?gesd2d
| ?gesd2d
| s d c z
i
| 一般2次元送信 |
C?gebs2d
| ?gebs2d
| s d c z
i
| 一般2次元一斉送信 | |
C?trsd2d
| ?trsd2d
| s d c z
i
| 台形2次元送信 | |
C?trbs2d
| ?trbs2d
| s d c z i
| 台形2次元一斉送信 | |
| 受信 | C?gerv2d
| ?gerv2d
| s d c z i
| 一般受信 |
C?gebr2d
| ?gebr2d
| s d c z i
| 一般一斉受信 | |
C?trrv2d
| ?trrv2d
| s d c z i
| 台形受信 | |
C?trbr2d
| ?trbr2d
| s d c z i
| 台形一斉受信 | |
| 結合 | C?gamx2d
| ?gamx2d
| s d c z i
| 一般要素ごとの最大絶対値 |
C?gamn2d
| ?gamn2d
| s d c z i
| 一般要素ごとの最小絶対値 | |
C?gsum2d
| ?gsum2d
| s d c z i
| 一般要素ごとの総和 | |
| 情報他 | Cblacs_gridinfo
| blacs_gridinfo
| BLACS格子情報を入手 | |
Cblacs_pnum
| blacs_pnum
| 行列プロセス番号を取得 | ||
Cblacs_pcoord
| blacs_pcoord
| BLACSプロセス格子の行と列を取得 | ||
Cblacs_barrier
| blacs_barrier
| 全プロセスが本ルーチンをcallするまで全プロセスの実行を中断 | ||
| 非標準 | Csetpvmtids
| setpvmtids
| PVMルーチン、未使用 | |
Cdcputime00
| dcputime00
| 任意開始時間からのCPU秒数を取得 | ||
Cdwalltime00
| dwalltime00
| 任意開始時間からのwall-clock秒数を取得 | ||
Cksendid
| ksendid
| BLACSメッセージIDを取得 | ||
Cdrecvid
| drecvid
| 受信用BLACSメッセージIDを取得 | ||
Ckbsid
| kbsid
| 送信元BLACSメッセージIDを取得 | ||
Ckbrid
| kbrid
| 一斉送信先BLACSメッセージIDを取得 |