#author("2020-07-26T13:27:14+09:00","default:opencaewikistaff","opencaewikistaff")
* UsageInfo2で作った例題ExText1を基本にして、並列処理や分岐モデル作成などの活用情報3 [#vad49072]

まずUsageInfo2で作った例題「ExText1」を基本にして展開するので、作業フォルダ「C:\WorkSV」のフォルダ「ExText1」をコピーして「ExText2」フォルダを作ります。なおここではWindows10の環境で検証を進めます。

** 並列処理による解析時間を検討する [#acde5ea3]

この練習はWindows10で進めていますが、「SimVascular」は血流解析の統合支援ツールで、ものづくりで活用するCAEで言えば以下の3段階の手順の1:プリと3:ポストを担当しています。~
1:プリ処理(解析モデルの形状を作成しメッシュや境界条件を設定する)~
2:ソルバー(有限要素法による流体解析手法で血流を数値解析する)~
3:ポスト処理(解析結果の圧力や速度の数値情報を可視化する)~
それで、2:ソルバーは「SvSolver」による実現していますが、導入手順[[SimV-Install1]]で示したように導入済みです。

*** 逐次処理1コアによる解析時間 [#d631dced]

まずSimVascularを起動して、File>Open SV Projectより、先にコピーした「ExText2」フォルダーを選択します。

最初に、逐次処理での計算時間を確認します。「SV Data Manager」の「Simulations/aorta」項目にチェックを入れて、「aorta」をダブルクリックして、ツール「SV Simulation」を表示させます。既に「ExText1」で解析を完了している設定なので、「Create Files and Run Simulation」ボタンを押して、「Run Simulation」で実行してみます。

「Simulation job 'aorta' has finished.」とメッセージが表示され、メインウインドウの左下に「aorta: running. 100% completed.」と表示されています。この表示パネルの「Show Details…」ボタンを押して、詳細を確認します。

この小さな枠の表示の2行目を見ると「The number of processes is 1.」ですので、1CPUを用いた逐次処理を行っていることが分かります。
The process ID for myrank (0) is (20248).

解析時間を確認するために、例題プロジェクトの解析用フォルダ「C:\WorkSV\ExTest2\Simulations\aorta」の中の、「histor.dat」ファイルをメモ帳などを使って確認します。また解析1ステップにおいて収束反復回数が2なので、1ステップに2行ずつ表示されます。

現在の設定では SvSolver は解析を行うごとに、ログや結果を上書きせずに追加してゆきます。よって前にExTest1のログが1から100で、今のExTest2のログが101から200です。この200ステップ目の2つの数値が秒単位の解析時間です。この練習で用いた Intel Corei9-9900K 3.6GHz では、1コア実行で27秒となりました。

*** 並列処理8コアによる解析時間 [#q6885461]

ツール「SV Simulation」の「Create Files and Run Simulation」ボタンの表示では、「Use MPI」としてMPI並列処理が可能なようです。この状態で可能か確かめます。このチェックを入れて、「Number of Processes」スライダーでは1から16が選択できます。このCPUは、物理コア8で論理コア16なので、こうなっています。ここでは8にします。

これで「Run Simulation」で実行してみます。この状態では「nknow error return code」となり実行できません。先の導入手順では、Windows10にMS-MPIを導入していないので当然ですね。

そこで、以下のMicrosoftのサイトに接続し、「Microsoft MPI v10.1.2」をダウンロードします。まず「Download」で進み、ファイル「msmpisetup.exe・msmpisdk.msi」の2つにチェックを入れて、「Next」で進むとダウンロードできます。 https://www.microsoft.com/en-us/download/details.aspx?id=100593

ダウンロードフォルダにあるこの2つのインストールファイルをダブルクリックして、全て標準の指示に従ってインストールします。これで並列実行してもエラーになります。

とよく考えてみると、並列解析用のデータを作っていないです。そこで上記のMPI並列処理の設定を行ってから、「Create Data Files for Simulation」を押して試してみます。それでも並列処理がエラーで失敗します。…………「解決したら追記します」と諦めたのですが。

で何気なく、並列数を6にしてみました。つまり「Use MPI」にチェックを入れて、「Number of Processes」を6にして、「Create Data Files for Simulation」を押して、「Run Simulation」で実行してみます。なんと並列動作したようなのです。

完了メッセージの「Show Details…」の内容を見ると、並列処理で表示が崩れているところもあります。「The number of processes is 6.」となり6プロセスで並列処理しているようで、タスクマネージャーを見ても6コアが動作しているようです。感覚的にすぐに終了した感じです。

この時の解析時間は、並列処理実行結果フォルダとして「C:\WorkSV\ExTest2\Simulations\aorta\6-procs_case」中の、「histor.dat」ファイルを見ると「なんと8秒」で解析が終了しています。6コア並列計算で約3.4倍の高速化です。素晴らしい!

ちなみに4コア並列処理で9秒ですから3倍の高速化で、2コア並列処理で16秒ですから約1.7倍の高速化となり、領域分割のMPI並列処理の有効性が確認できました。

さらに更にもしやと思い10コア並列処理したら9秒で動作しましたが、高速化は実現しませんでした。この規模(要素数:38758)では4並列程度が適当と思われます。

[[AboutSimVascular]]

【このページの閲覧数:総計:&counter(total); 今日:&counter(today);】

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS