quad-double算術スパースマトリックスパッケージはありますか?


10

私はいくつかの悪条件の大規模なスパース線形方程式系に取り組んでいます。それらを解決するために、ダブルダブル算術またはクワッドダブル算術を使用したいと思います。中田真帆が開発したMPACKという名前のパッケージがあり、4倍算術で数値線形代数計算を実行できることを知っています。ただし、スパースマトリックスではなく、デンスマトリックス用に設計されています。quad-double算術スパースマトリックスパッケージがあるかどうかを知っていますか?


どのようなマトリックスを使用していますか?それは対称、エルミート、正定ですか?スパースLUを実行しますか、それとも反復方式を使用しますか?
Victor Liu

回答:


3

バージョン3.2以降、PETScはgcc / gfortran 4.6以降でスパース4倍精度計算をサポートしています。

4倍精度のBLASおよびLAPACKが必要です。PETScは、次の(部分的な)configureコマンドで(クワッドサポートとともに)提供できます。

./configure --with-precision=__float128 --download-f2cblaslapack

詳細については、FAQを参照してください

また、私はnOObに同意します。可能であれば、システムを正則化してから4倍精度に切り替えるようにします。


1
これはクワッド精度(128ビット実数)であり、クワッドダブル(256ビット実数)ではありません。とは言っても、4倍精度は通常、2倍精度で発生する安定性の問題を理解するのに十分であり、通常はシステムをスケーリングして離散化して、倍精度で生産できるようにします。
ジェドブラウン

2

悪条件のシステムは、数値の精度を上げるよりも、正則化によって解決されます。詳細については、「不適切な正規化」を検索してください。


2

Trilinosライブラリを試してみるかもしれません。Tpetra(元のスパースマトリックスライブラリであるEpetraを置き換えることになっています)の下にスパースマトリックスライブラリがテンプレート化されています。ダブル、コンプレックス、クワッドなどのテンプレートを作成できます。PETScの次に、ソルバーの選択肢が(ダイレクトと反復の両方で)最大の選択肢があります。

編集:コメントを読んだ後、Tpetraの即時の有用性は、クワッド精度については少し疑わしいようです...


残念ながら、ソルバーの大部分はまだTpetraで動作しません:-(
Wolfgang Bangerth 2013

それは残念です。私は希望を持っていましたが、Tpetraの開発がどこまで進んだかはわかりませんでした(そのため、「Epetraに代わると想定されています」:P)。私は少なくともBelosライブラリ(つまり、サードパーティのコードのラッパーに基づいていないTrilinosソルバー)がTpetraをサポートしていると思いましたか?
Jesse Chan

Belos2があると思います。確かに、TrilinosプロジェクトはリソースをTpetraの背後に置いており、将来的には標準パッケージになるでしょう。でも、まだ完全にはないようです。
Wolfgang Bangerth 2013

__float128quad-doubleは言うまでもなく、Tpetraによってサポートされていることさえ知りません。Tpetraはスタンドアロンではなく、すべてのヘッダ、およびそれがあっても、のようなものされていないstd::complexとだけ仕事floatdouble
ジェドブラウン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.