PETScは密行列にどの程度役立ちますか?


14

私が見たところどこでも、PETScのチュートリアル/ドキュメントなどは、線形代数に有用であり、通常、スパースシステムが有益であることを指定しています。密行列はどうですか?密なAのを解くのが心配です。Aバツ=bA

FortranでCGとQMRのコードを独自に作成しました。基本的な構成は、疑似コードをリッピングし、可能な限りBLASルーチン(ddotdnrmおよびdgemv)を少しの自己調整で追加することです。これはPETScと比較してどうですか?

最善の答えは自分で試してみることだと思いますが、時間やその他の理由により不可能です。

どんな助けも大歓迎です。

回答:


7

構造のある密な行列(高速変換、Schur補数など)がある場合、PETScが役立ちます。これらの場合、完全なマトリックスを組み立てることはありません。

組み立てられた高密度システムの場合、PETScは現在PLAPACKを使用していますが、PETScネイティブ形式のマトリックス分布は通信を最小限に抑えるのに最適ではありません(ほとんどの操作)。Jack Poulson、Matt Knepley、および私は、PETScの高密度線形代数を移植して、Jackのより現代的な高密度線形代数ライブラリであるElementalを使用することについて説明しました。まだ起きていませんが、時間があるときに行います。

フル機能の高密度線形代数ライブラリが必要な場合は、Elementalを使用してください。これらの操作には、PETScよりも常に完全なAPIが常に存在する可能性があります。疎システムまたは組み立てられていないシステムとやり取りする必要がある場合は、PETScに固執し、密集した部分にElementalを使用するために必要なものを抽出することは理にかなっています(または、ElementsへのPETScインターフェイスの作成を支援します)。


共有メモリシステムで作業している場合、あなたの答えは何でしょうか?
調査

1
複数のMPIプロセスまたは複数のpthreadを使用できます。共有メモリでのみ動作する並列ソフトウェアを書くことにはあまり意味がありません。通常、分散メモリ用に書き込むときに考えるメモリの局所性は、最高のスレッド実装以外のすべてと比較してパフォーマンスを向上させます。密な線形代数に内部的にスレッドを使用する「シリアル」APIのみが必要な場合は、スレッド化されたBLASを使用できます。
ジェドブラウン

自分のコードをXeon 12コアワークステーションで動作させたい(現在のところクラスターを見ていない)。(スレッド化された)BLASにインテルMKLを使用しています。それでも、PETScを試してみることをお勧めしますか?
審問

必要なのがBLASだけであれば、それで満足です。すでにコードを書いているので、それを使用してください。柔軟性を高めたい場合や分散メモリを使用したい場合は、PETScが必要になる場合があります。
ジェドブラウン

柔軟性は?分散メモリ?
-Inquest

5

On3On2

共有メモリシステムを使用しているとおっしゃったのでlibFLAMEPLASMAをお勧めしますが、レベル1およびレベル2の操作では、ベンダースレッドBLASよりも大幅に高速になるとは思いません。

JedはElementalを推奨しましたが、たまたま開発していますが、レベル1およびレベル2の操作は並列密線形線形代数ライブラリの主な焦点ではないことを強調します。正直に言って、これらのルーチンをベンチマークしたことはありません。


だから、私が得るものから、後続のすべての並列密線形線形代数ライブラリは、固有ベクトル計算、BLASではなくシステムの解決などの操作を最適化しようとします。また、エレメンタルは本当に印象的です。できるときは絶対に試してみます。
インクエスト

通常、レベル3 BLASを最適化します。その理由は、ライブラリを使用するほとんどの人が、通常はレベル3 BLASにマッピングできる大規模な計算を行うためです。
ジャックポールソン

それは、BLAS 1/2がこれ以上良くならないからですか?(たぶん表面から体積への特性のため?)O(N ^ 2)データとO(N ^ 2)計算?
-Inquest

これは、BLAS 1と2が一般的に計算の低次の項だからです。高性能の高密度線形代数の「ゲーム」全体は、すべての操作を適切な方法で細かく調べて、できるだけ多くの作業のためにxGEMMや友人に電話をかけられるようにすることです。
ジャックポールソン

また、はい、彼らがmemopsとほぼ同じ量のフロップを実行するという事実は、可能な限り回避される理由です。
ジャックポールソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.