#author("2020-07-26T13:27:14+09:00","default:opencaewikistaff","opencaewikistaff")
#author("2020-07-26T16:56:06+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並列程度が適当と思われます。

** ウエブ資料にあった分岐モデルを解析する [#acde5ea3]

解析プロジェクト「ExText1」では、練習として大動脈1本のみを対象に血流解析を行いましたが、ウエブ資料「[[Quick Guide:http://simvascular.github.io/docsQuickGuide.html]]」のように、ここでは「ExText2」に大動脈(aorta)をが2つの腸骨動脈(iliac artery)に分岐してする解析モデルで血流解析を行ってみます。

まずSimVascularを起動して、File>Open SV Projectより、先にコピーした「ExText2」フォルダーを選択します。以下の作業では、「Paths」において「aorta」を延長して、新たに「illiac」を追加して、それに続く血流解析の設定手順をやり直します。

そこで「Segmentaion:aorta・Models:aorta・Meshes:aorta・Simulations:aorta」4つの項目をそれぞれ、右クリックメニューの Remove で削除します。ただし Simulation フォルダーの内容は削除されないようなので、この中の「aourta」フォルダーを手動で削除しておきます。

これで新しい「ExText2」の準備ができたので、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

*** ツールPathsでパスaortaを延長しパスilliacを追加する [#g8e64de1]

「SV Data Manager」の「Paths」項目にチェックを入れて、「aorta」項目をダブルクリックして、ツール「SV Path Plannning」を表示します。前のプロジェクト「ExText1」では、11番目までパスの制御ポイントを作っています。

先の練習「SimV-UsageInfo3」の「[[Creating a Path:パスの作成>SimV-UsageInfo2#we6e4198]] 」を参考にして、12番目からAxialスライダー値が10に近くなるまで進めます。分岐を超えたら、右側の腸骨動脈(iliac)を aorta に続けてパスを作ってゆきます。後から分岐から右に向かうパスを「illiac」とします。

ただし、ここからは大動脈の形が変化し、分岐して斜め方向に進む部分もあるので、スライダーの刻みは前の練習の25刻みより小さく5〜10刻みで進めます。
「(12)A:190,S:274,C:42(ここから分岐が始まる感じです)」「(13)A:180,S:267,C:41」「(14)A:170,S:266,C:39」「(15)A:165,S:257,C:29(ここから横に進む感じです)」「(16)A:155,S:243,C:24」「(17)A:145,S:234,C:20」「(18)A:135,S:230,C:19」「(19)A:125,S:225,C:16(ここから更に分岐が始まる感じです)」

以上の19番目の制御ポイントの作成でパス「aorta」は完成とします。作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

次に、12番目の制御ポイントで分岐が始まる感じで、この点を出発して右側の腸骨動脈(iliac)のパスを追加します。ツールの右上「New Path」ボタンを押して、設定パネルの変更はせずに、Path Nameを「illiac」として「OK」で進め、「Paths」項目の下に追加された「illiac」をクリックします。空の制御ポイントリストが表示されます。

先に作ったパスaortaの分岐が始まる12番目の位置を、パスilliacの0番目の制御ポイントにします。分岐を右側に進む腸骨動脈を、同様な手順で以下の制御ポイントを追加してゆきます。パスaortaと同じようにA:130でさらに分岐するので、ここでパスilliacも完成とします。~
「(0)A:190,S:274,C:42」「(1)A:180,S:292,C:43」「(2)A:170,S:307,C:38」「(3)A:160,S:312,C:34」「(4)A:150,S:312,C:31」「(5)A:140,S:313,C:29」「(6)A:130,S:315,C:26」

以上の6番目の制御ポイントの作成でパス「illiac」は完成とします。作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

[[AboutSimVascular]]

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


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