私はFortranで書かれた流体の流れと熱伝達の解析プログラムの最適化に取り組んでいます。ますます大きなメッシュシミュレーションを実行しようとすると、メモリ制限の問題が発生します。ただし、メッシュはそれほど大きくはありません。一般的なCFDコードを実行するには、わずか500,000個のセルと小さなピーナッツが必要です。問題のために80GBのメモリを要求しても、仮想メモリが不足しているためにクラッシュします。
どのアレイがそのすべてのメモリを占有しているのか、いくつか推測できます。特に1つは(28801,345600)に割り当てられています。計算が間違っている場合は訂正してください。ただし、倍精度配列は値ごとに8ビットです。したがって、このアレイのサイズは28801 * 345600 * 8 = 79.6 GBになりますか?
さて、この配列のほとんどは計算全体でゼロになると思うので、それらを格納する必要はありません。解のアルゴリズムを変更して、ゼロ以外の値のみを格納し、はるかに小さな配列で処理できると思います。ただし、サイズを縮小するための適切なアレイを確認したいと思います。それで、最初に、上記の配列サイズを正しく計算しましたか?そして第二に、実行時にFortranにMBまたはGB単位の配列サイズを表示させる方法はありますか?最もメモリを大量に消費する配列を出力することに加えて、実行時にコードのメモリ要件がどのように変化するかを確認したいと思います。