1

私は Eigen の SparseLU と BicGSTAB メソッドを、3000*3000 から 16000*16000 の範囲の密行列のサイズの疎行列でテストしました。すべてのケースで、SparseLU が BicGSTAB メソッドよりも約 13% 高速であることを示しています。

BiCGSTAB に RowMajor スパース マトリックスをフィードしたり、プレコンディショナーを与えたりしませんでした。それが遅い理由かもしれません。

だから、両方の方法をうまくやれば、どちらが速いのでしょうか?

行列のサイズが数百万 * 数百万になるとどうなりますか?

どうもありがとう!

4

2 に答える 2

0

線形ソルバーの選択は、行列の固有値/固有ベクトルの分布に大きく関係しています。対称正定行列がある場合は、共役勾配が適切なオプションです。反復回数は、条件数 (最大固有値/最小固有値) によって異なります。楕円演算子から導出された行列の場合、条件数は行列のサイズとともに増加します。

CG に関する優れた説明については、Jonathan Shewchuk によるこの記事を参照してください。( https://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf )。

他の行列タイプについては、固有特性に基づいて GMRES などを使用できます。この論文をチェックしてください http://www.sam.math.ethz.ch/~mhg/pub/biksm.pdf

お役に立てれば。

于 2016-10-10T07:16:10.147 に答える
0

パフォーマンスの違いの主な理由についてはすでに述べました。「適切な」前提条件子を選択すると、反復法ははるかに高速になります。

参照できる前提条件のリストの例は次のとおりです。

  • ヤコビ
  • SOR
  • ILU
  • マルチグリッド

各前提条件には、調整が必要なパラメーターがいくつかあります。

于 2016-03-24T09:06:33.197 に答える