5

有限要素問題のコンテキストでは、12800x12800 の疎行列があります。MATLAB の演算子を使用して線形システムを解こうとしてい\ますが、mldivide を使用するとメモリ不足エラーが発生します。だから、これをスピードアップする方法があるかどうか疑問に思っています。

つまり、メモリエラーが発生しないという点で、LU因数分解のようなものが実際にここで役立つでしょうか? 環境設定でヒープ サイズを 256 GB に増やしましたが、これは取得できる最大値です。それでもメモリ不足エラーが発生します。

また、一般的な質問です。現在、ラップトップには8GBのRAMがあります。16GB へのアップグレードはまったく役に立ちますか? それとも、MATLAB により多くのメモリを割り当てるために何かできるでしょうか? 私はこのことにかなり慣れていません。

ここに画像の説明を入力

4

4 に答える 4

0

バックスラッシュは A のスパース性を利用しますが、それが使用する qr メソッドは、(number_ocused_elements)^3 メモリの割り当てを必要とする完全な行列を生成します。あなたが試すことができるいくつかのこと

  1. 疎行列をいくつかの対角線で分割している場合は、前方/後方置換でシステムを解決しようとすることができます
  2. 問題をより小さく分割してみてください 問題をより小さく分割してみてください
  3. 行列除算を開始する前に、whos を実行して、メモリを占有している要素を確認します。これらのいずれかを事前にクリアできますか?
  4. ここで述べたように問題には適用できませんが、システムが定義されている場合 (A には列よりも行が多い)、疑似逆(A.'*A)\(A.'*b)を使用すると、より小さな列の次元を使用して結果が生成されます

追加のメモリの追加については; Matlab32 は 2^32 バイトのメモリ (4 Gb) を使用するため、64 ビット バージョンを使用していない限り、コンピューターの物理 RAM を増やしても効果はありません。

于 2014-11-11T17:02:37.100 に答える
0

mldivide の使用に縛られていますか? bicg や gmres などの反復メソッドに最適な状況のように聞こえますか?

于 2014-04-22T00:19:39.190 に答える