一般的なサイズは 1000 x 1000 ですが、100000 x 100000 を超えることもあります (現在、時間とメモリのために失敗しています)。通常の感情は「逆をとらないで、それを行う別の方法を見つけてください」であることは知っていますが、現時点ではそれは不可能です. この理由は、逆行列を取得することを期待する、既に作成されているソフトウェアの使用によるものです。(注:これを変更する方法を検討していますが、それには時間がかかります)
現在、数値複製からの LU 分解法を使用しており、固有ライブラリのテストを行っています。固有ライブラリはより安定しており、少し高速であるように見えますが、正確さについてはまだテスト段階です。ATLAS や LAPACK などの他のライブラリをざっと見てみましたが、これらについてはまだ実質的なテストを行っていません。
固有ライブラリは逆数を計算するために並行メソッドを使用していないように見えますが (逆数の LU 因数分解部分では使用します)、ATLAS と LAPACK はこの制限において類似していると言えます。(私は現在、openMP を使用する場合と使用しない場合の固有値の速度の違いをテストしています。)
最初の質問は、並列化によって逆行列を最適化する方法を誰でも説明できるかということです。ここで、行列反転並列アルゴリズムについて説明している記事を見つけましたが、理解できませんでした。この記事は別の方法について話しているようですか?また、scaLAPACK または PETSc が役立つかどうかもわかりません。
2 番目の質問です。GPU を使用してパフォーマンスを向上させるというこの記事を読みましたが、GPU 用にコーディングしたことがないので、何が伝えようとしているのかわかりませんが、一番下のグラフはかなり警戒しているように見えました。これはどのように可能であり、それが真実である場合、このようなものを実装するためにどこから始めればよいでしょうか。
この記事も見つけましたが、理解するためにそれを読む時間がありましたが、メモリは私たちのソフトウェアの現在の問題であるため、有望なようです.
これらの記事または一般的な問題に関する情報は、非常に役立ちます。この質問が漠然としているように思われる場合は、もう一度お詫び申し上げます。必要に応じて、さらに拡大しようとします。