スパース線形システムを解くためのライブラリ


21

スパース線形連立方程式を解くさまざまなライブラリがありますが、その違いを理解するのは難しいと感じています。

私が知る限り、3つの主要なパッケージがあります: TrilinosPETSc、およびIntel MKLです。それらはすべてスパース行列を解くことができ、すべて高速です(私が知る限り、それらのいずれについても堅実なベンチマークを見つけることができませんでした)。それらはすべて並列化可能です。私が見つけることができないのは違いです。

それでは、そこにあるさまざまなスパース線形システムソルバーの違いは何ですか?

回答:


29

そこにはさらに多くの問題があり、すべてが異なる目標と問題の見解を持っています。それは本当に解決しようとしているものに依存します。不完全なパッケージのリストがあります。詳細を自由に追加してください。

大規模な分散反復ソルバーパッケージ

  • PETSc — Krylov部分空間法と線形ソルバー間の簡単な切り替えに焦点を当てたパッケージ。このカテゴリの他の製品よりもはるかに軽量です。
  • Trilinos — FEMアプリケーション向けの多数のパッケージ
  • Hypre —上記2つに似ています。非常に優れたマルチグリッドソルバー(PETScでダウンロード可能)が有名です。

パラレルダイレクトソルバーパッケージ

シリアルダイレクトソルバーパッケージ

インタラクティブ環境(非常に小規模なシステムの場合)

その他のリスト


9

MKLは分散並列処理(MPIなど)を実行しません。また、スパースソルバーのサポートは基本的なものであり、他の2つのレベルではありません。現在、意味のあるベンチマークは1つしかありません。スパースマトリックス-ベクトル製品(SpMV)のスケーラブルなパフォーマンスです。これはメモリ帯域幅に制限があるため、台無しにすることしかできません。PETScとTrilinosはどちらもこれで問題ありません。

本当の違いは、どのプログラミング環境で生産性が向上するかです。


CまたはC ++で作業をしたい場合、それはほとんど要約しますか?
アンドリュースポット

それはもう少しオープンエンドです。ほとんどの数値計算言語(C、Python、C ++、およびFortranはすべて実行可能なオプションであり、ある程度はMATLAB)からTrilinosまたはPETScを呼び出すことができます。
アロンアーマディア

PETScはF90配列を正しく処理します:)。オブジェクトモデル全体がMatlabで利用可能です。
マットネプリー

1
PETScとTrilinosは、ある程度まで異なるコミュニティにも関与しています。おそらく、最初に解決したい種類の問題を検討する必要があります。同様の問題の既存の例がいずれかのツールキットで既に利用可能な場合はどうでしょうか。
アロンアフマディア

1
さまざまなプロジェクトの例を見て決定することをお勧めします。どのシステムが問題に適しているかという特定の例がある場合、それはより回答の多い質問になります。さもなければ、私たちは私の大学院生としての宗教戦争のみを開始します。
aterrel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.