PETScはスパース行列演算にLAPACKライ​​ブラリを使用しますか?


10

外部のBLAS / LAPACKライ​​ブラリを使用してPETScをコンパイルすると、スパース行列のパフォーマンスに大きな影響がありますか、それとも密な行列計算にこれらのライブラリのみを使用しますか?


LUを事前調整に使用できます。
stali

回答:


10

PETScは、いくつかのベクトルプリミティブにBLASを使用しますが、これらは一般にメモリ帯域幅によって制限され、「最適化」に大きな変動はないため、パフォーマンスに大きな違いはありません。

また、LanczosまたはArnoldiの固有値と特異値の推定などの一部の分析にはLapackを使用しますが、これらは一般にパフォーマンスに影響されません。

密な「レベル3」操作は、サードパーティライブラリ(たとえばMUMPS、SuperLU、UMFPACK)のスパースダイレクトソルバーを使用する場合に、通常、パフォーマンス重視のコンテキストでのみ表示されます。 BLASを呼び出します。

大規模な問題に適用されるこれらの疎な直接ソルバーに依存している場合は、調整されたBLAS実装で構築する価値があります。それ以外の場合は、ほとんど違いがありません。


ジェド、PETScはどのようにLAPACKを使用して、分散行列の場合に固有値/特異値を推定しますか?それはブロックごとのルーチンですか、それともScaLAPACKですか?
アレクサンダー

Arnoldi反復は、反復数(30または100など)に等しい次元のヘッセンベルク行列を生成します。ヘッセンバーグ行列の固有値または特異値は、LAPACKを使用して各プロセスで冗長に計算されます。これは、サイズが小さく、データがすでに冗長に分散されているため、並行して実行するよりもはるかに高速です。ランチョスについても同様です。
ジェド・ブラウン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.