[Re:11] Reboot : ゼロから始める OpenFOAM @ windows ザ・円柱 その4(並列計算もやってみた前編)
並列計算方法
どうも計算が予想通り時間がかかるようなので、並列計算も試してみました。
そうは言っても、XSim でプロセッサー数を増やすだけですが、実行するとそうはいきませんでした。
log.pimpleFoam の終盤
[1]
[0]
[2]
FOAM parallel run exiting
FOAM parallel run exiting
FOAM parallel run exiting
[1]
[0]
[2]
job aborted:
[ranks] message
[0] application aborted
aborting MPI_COMM_WORLD (comm=0x44000000), error 1, comm rank 0
[1] application aborted
aborting MPI_COMM_WORLD (comm=0x44000000), error 1, comm rank 1
[2] application aborted
aborting MPI_COMM_WORLD (comm=0x44000000), error 1, comm rank 2
—- error analysis —–
[0-2] on LAPTOP-3P0SOHGT
pimpleFoam aborted the job. abort code 1
—- error analysis —–
log.decomposePar の末尾
–> FOAM FATAL ERROR:
Your current settings specify ASCII writing with 6 digits precision.
Your merging tolerance (1e-006) is finer than this.
Please change your writeFormat to binary or increase the writePrecision
or adjust the merge tolerance (-mergeTol).
From function int main(int, char**)
in file reconstructParMesh.C at line 542.
FOAM exiting
【翻訳】
->FOAMの致命的なエラー:
現在の設定では、6桁の精度でASCII書き込みを指定しています。 マージ許容値(1e-006)はこれよりも細かいです。 writeFormatをバイナリに変更するか、writePrecisionを増やしてください または、マージ許容値を調整します(-mergeTol)。 関数intmain(int、char **)から ファイルreconstructParMesh.Cの542行目。
FOAM修了
結論からいけば、データーの桁が足りないような警告で致命的エラーをpimplefoam がログに吐いていて、そこに、バイナリ出力を試しなさい、のようなことが書いてありました。アスキーで桁増やす、とかはないのか、と思いつつ、とりあえず、単純にバイナリ出力に設定しました。
これに先立って、流速とメッシュの限界も試さないといけないので、流速を3倍の 1 m/s、タイムステップもおまかせにして実行しました。
まずこの条件で、動作確認。動きました。
この後、3コア並列化して実行。
そのときのトラブルが上述の状況です。
相変わらず、アスキーでの解決は先送りして前へ進みます。
3 CPU 並列化の効果
さて、順調に計算も進んでいるようです。チェック用だったので、出力は少ないですが、同じ計算を実施した時間比較は以下の通りです。
1 CPU | 3 CPU (a) | 3 CPU (b) | ||
0-1 | 20 | 19 | 21 | |
1-2 | 21 | 15 | 14 | |
2-3 | 11 | 11 | ||
3-4 | 11 | 11 |
またアップデートするかもしれませんが、1→3 CPU で、15 → 11 分。まぁこんな印象ですね。あ、これ、出力が 5 step 置きだったかもですが、実時間で割ってみないとだめですよね。
並列計算結果の可視化表示
これも気になるところです。というのも、シングルCPU計算とはファイル構成が異なって、各時間結果ファイル群が、振り分けられたコアごとに別フォルダーに保存されているんです。当然、そのことをpara viewが理解してくれなければ、結果は読み込めなさそうです。
これまでのように、中身空っぽの hogehoge.foam を作成して開くと、開きます。形状が表示されます。デフォルトは solid color です。選択のプルダウンメニューを開くと、予想通り物理量は表示されません。やっぱり。
-
- データーを合算する
- paraviewにすがる
前者は、openfoamにどうも reconstructPar というツールがついてきているようです、これを使えば、連番ディレクトリのデーターを、うまく合わせて一つにまとめてくれるようです。自分でデーター下流処理をする場合には、入力ファイルがまとまっている方が単純化できます。そういう場合には、端から一つにまとめておくほうが良いでしょう。
後者は、意外と簡単でした。とりあえずいつものように hogehoge.foam でいつものようにデーター群を開きます。その後、プロパティの最初の方にある case type の項目を、Reconstructed case から Decomposed Case に変更します。そしていつもの apply です。そうするだけでその後はいつものように操作できます。
まとめ
今回は、時間待ちの間に、並列計算の段取りと、その場合の paraview でのデーター読み込み方法を試してみました。で、この後プチトラブルに。それは次回のお楽しみ。