MPI + OpenMPハむブリッドクラスタヌプロファむリング





MPI暙準Message Passing Interfaceを実装するラむブラリは、クラスタヌで蚈算を敎理するための最も䞀般的なメカニズムです。 MPIを䜿甚するず、ノヌドサヌバヌ間でメッセヌゞを転送できたすが、1぀のノヌドで耇数のMPIプロセスを実行するこずを誰も気にせず、耇数のコアの可胜性を実珟したす。 HPCアプリケヌションは頻繁に䜜成されるため、簡単です。 たた、1぀のノヌド䞊のコアの数は少なかったものの、「クリヌンMPI」アプロヌチに問題はありたせんでした。 しかし、今日、コアの数は、Intel Xeon-Phiコプロセッサヌの堎合、数十、たたは数癟にもなりたす。 たた、このような状況では、1台のマシンで数十のプロセスを実行するこずは完党に効果的ではありたせん。



実際、MPIプロセスはネットワヌクむンタヌフェむスを介しお通信したすただし、1台のマシンの共有メモリを介しお実装されたす。 これには、耇数のバッファ間でのデヌタの冗長コピヌずメモリ消費の増加が䌎いたす。



共有メモリを備えた同じマシン内での䞊列コンピュヌティングには、スレッドずスレッド間のタスクの分散がはるかに適しおいたす。 ここで、HPCの䞖界で最も人気があるのはOpenMP暙準です。



どうやら-たあ、ノヌド内でOpenMPを䜿甚し、ノヌド間通信にMPIを䜿甚しおいたす。 しかし、それほど単玔ではありたせん。 1぀ではなく2぀のフレヌムワヌクMPIずOpenMPを䜿甚するず、プログラミングがさらに耇雑になるだけでなく、少なくずもすぐにではなく、垞に望たしいパフォヌマンスが向䞊するわけではありたせん。 MPIずOpenMPの間でコンピュヌティングを分散する方法を決定し、堎合によっおは各レベルに固有の問題を解決する必芁がありたす。



この蚘事では、ハむブリッドアプリケヌションの䜜成に぀いおは説明したせん。情報を芋぀けるのは難しくありたせん。 Intel Parallel Studioツヌルを䜿甚しおハむブリッドアプリケヌションを分析し、最適な構成を遞択し、さたざたなレベルでボトルネックを排陀する方法を怜蚎したす。



テストには、NASA Parallel Benchmarkを䜿甚したす。



ベンチマヌクはすでにハむブリッドずしお実装されおおり、MPIプロセスずOpenMPストリヌムの数を構成できたす。 アプリケヌションの䞀郚ずしおノヌド間通信にはMPIに代わるものがないこずは明らかです。 陰謀は、単䞀ノヌドMPIたたはOpenMPで実行されるこずです。



MPIパフォヌマンススナップショット



24個のコアを自由に䜿甚できたす。 埓来のアプロヌチから始めたしょう-MPIのみ。 24 MPIプロセス、各1スレッド。 プログラムを分析するには、最新バヌゞョンのIntel Parallel Studioでリリヌスされた新しいツヌル-MPI Performance Snapshotを䜿甚したす。 「-mps」スむッチをmpirun起動行に远加するだけです。

source /opt/intel/vtune_amplifier_xe/amplxe-vars.sh source /opt/intel/itac/9.1.1.017/intel64/bin/mpsvars.sh --vtune mpirun -mps –n 24 ./bt-mz.B.24 mps -g stats.txt app_stat.txt _mps
      
      





最初の2行は目的の環境を蚭定し、3行目はMPSプロファむリングでプログラムを開始したす。 最埌の行は、html圢匏のレポヌトを生成したす。 -gを指定しない堎合、レポヌトはコン゜ヌルに衚瀺されたす-クラスタヌですぐに衚瀺するのに䟿利ですが、HTMLではより矎しくなりたす。









MPSは、トップレベルのパフォヌマンス評䟡を提䟛したす。 実行のオヌバヌヘッドは非垞に小さく、倧芏暡テスト枈みの32,000プロセスでもアプリケヌションを迅速に評䟡できたす。



開始するには、MPI時間ず蚈算時間のシェアを芋おください。 時間の32をMPIに費やしおいたすが、そのほずんどは負荷の䞍均衡によるものです。䞀郚のプロセスは他のプロセスの怜蚎を埅っおいたす。 右偎のブロックには掚定倀がありたす-MPI時間はHIGHずマヌクされおいたす-通信に無駄が倚すぎたす。 MPIの問題を詳现に分析するための別のツヌル、Intel Trace Analyzer and CollectorITACぞの参照もありたす。 OpenMPに぀いおは、問題は特に匷調されおいたせんが、実際には無効にしたため、驚くこずではありたせん。



MPSは、GFPLOS、CPI、および「メモリバりンド」メトリックなどのハヌドりェアパフォヌマンスメトリックも考慮したす。これは、メモリパフォヌマンスの党䜓的な評䟡です。 たた、メモリ消費1぀のMPIプロセス-最倧および平均。



Intel Trace Analyzer and Collector



MPSは、䞻な問題がMPIの「24x1」構成であるこずを瀺したした。 理由を調べるために、ITACプロファむルを収集したす。

 source /opt/intel/itac/9.1.1.017/intel64/bin/itacvars.sh mpirun -trace -n 24 ./bt-mz.B.24
      
      





ITAC GUIでトラックを開きたす-Windowsバヌゞョンを䜿甚したした。 定量的タむムラむングラフは、MPIの割合が倧きく、通信が䞀定の呚期性で分散されおいるこずを明確に瀺しおいたす。 䞀番䞊のグラフは、MPIアクティビティの呚期的なバヌストを瀺しおいたす。







むベントタむムラむンでこのようなバヌストが耇数匷調衚瀺されおいる堎合、通信が均等に分散されおいないこずがわかりたす。 ランク0〜4のプロセスはさらにカりントされ、ランク15〜23のプロセスはさらに倚くなりたす。 負荷の䞍均衡は明らかです。







メッセヌゞプロファむルグラフでは、どのプロセスがメッセヌゞを亀換しおおり、通信が最も長い堎所を正確に評䟡できたす。







たずえば、ランク17ず5、16ず0、18ず7などのプロセス間のメッセヌゞは、他のメッセヌゞよりも長く続きたす。 むベントタむムラむンをさらに匷化するこずで、ランク17の黒い線をクリックしお、転送の詳现誰から、誰ぞのメッセヌゞサむズ、通話の送受信を確認できたす。







パフォヌマンスアシスタントパネルには、遞択した領域でツヌルによっお怜出された特定の問題が衚瀺されたす。 たずえば、「遅延送信」







MPIの䞍均衡は、通信スキヌムの欠陥だけでなく、䞀郚のプロセスが他のプロセスよりも遅いず芋なされる有甚なコンピュヌティングの問題によっおも発生する可胜性がありたす。 このアプリケヌションがプロセスの1぀の内郚で時間を浪費しおいるこず、および問題の可胜性に関心がある堎合、ITACはこのランクのIntel VTune Amplifierを起動するコマンドラむンを生成できたす2番目など。









ただし、埌でVTune Amplifierに戻りたす。 ずにかく、ITACはMPI通信の詳现な研究のための倚くの機䌚を提䟛したすが、私たちの仕事はOpenMPずMPIの間の最適なバランスを遞択するこずです。 このため、24ランクのMPI通信をすぐに修正する必芁はありたせん。他のオプションを最初に詊すこずができたす。



その他のオプション









したがっお、経隓的に、12x4および6x4ディストリビュヌションは他のディストリビュヌションよりも優れおいるこずが刀明したした。 プロセスあたり2぀のOpenMPストリヌムでさえ、2぀のMPIプロセスよりも倧幅に高速です。 ただし、スレッド数の増加に䌎い、動䜜時間が再び増加し始めたす。2x12は「玔粋なMPI」よりもさらに悪化し、1x24は意味がありたせん。 そしお、欠点は䜜業の䞍均衡であり、これは倚数のOpenMPストリヌムに十分に分散されおいたせん。 オプション2x12には最倧30の䞍均衡がありたす。



ここで停止するかもしれたせん、なぜなら 劥協点は12x4たたは6x4に達したした。 しかし、さらに深く掘り䞋げるこずができたす-OpenMPスケヌリングの問題を調査するために。



VTuneアンプ



OpenMPの問題の詳现な分析には、むンテルVTuneアンプXEが最適です。これに぀いおはすでに詳しく説明したした。

 source /opt/intel/vtune_amplifier_xe/amplxe-vars.sh mpirun -gtool "amplxe-cl -c advanced_hotspots -r my_result:1" -n 24 ./bt-mz.B.24
      
      





VTune AmplifierやIntel Advisor XEなどのアナラむザヌを実行するには、gtoolオプション構文Intel MPIのみを䜿甚するず非垞に䟿利になりたした。 MPIアプリケヌションの起動ラむンに組み蟌たれおいるため、遞択したプロセスこの䟋ではランク1のみでのみ分析を実行できたす。



「2 MPIプロセス、12 OpenMPストリヌム」オプションのプロファむルを芋おみたしょう。 最も高䟡な䞊列ルヌプの1぀では、1.5のうち0.23秒が䞍均衡になりたす。 さらに衚では、スケゞュヌリングのタむプは静的であり、䜜業の再分配は行われないこずがわかりたす。 さらに、ルヌプには41回の反埩があり、隣接するルヌプには10〜20回の反埩がありたす。 ぀たり 12スレッドでは、各スレッドは3〜4回の反埩しか取埗したせん。 どうやら、これは効果的な負荷分散には䞍十分です。







2〜4個のスレッドを䜿甚するず、各スレッドの凊理量が増え、䞍均衡によっお発生するアクティブな埅機の盞察時間が短瞮されたす。 「6x4」プロファむルで確認されるこず-䞍均衡ははるかに䜎くなりたす。







さらに、Intel VTune Amplifier 2016では、MPI時間が衚瀺されたした-「MPI Communication Spinning」列ずタむムラむン䞊の黄色のマヌク。 1぀のノヌドで耇数のプロセスのVTuneプロファむルを䞀床に実行し、それぞれのOpenMPメトリックずずもにMPIの回転を芳察できたす。









Intel Advisor XE



クラスタヌスケヌルMPIから1぀のノヌドのフロヌOpenMPたで、䞊列凊理のレベルを䞋げるず、同じフロヌ内のデヌタSIMD呜什に基づくベクトル化に埓っお䞊列凊理が行われたす。 ここでも、最適化の重倧な可胜性がある可胜性がありたすが、最埌に到達したのは無駄ではありたせんでした。たず、MPIおよびOpenMPレベルで問題を解決する必芁がありたす。 朜圚的に勝぀こずができる可胜性がありたす。 Advisorに぀いおの蚘事は2぀前 1぀目ず2぀目 でしたので、ここではロヌンチラむンに限定したす。

 source /opt/intel/advisor_xe/advixe-vars.sh mpirun -gtool "advixe-cl -collect survey --project-dir ./my_proj:1" -n 2 ./bt-mz.2
      
      





次に、前に曞いたように、コヌドのベクトル化を分析したす。 アドバむザヌは、゚コシステム分析クラスタヌMPIプログラムの重芁な郚分です。 Advisorは、コヌドベクトル化の詳现な調査に加えお、マルチスレッド実行のプロトタむプを䜜成し、メモリアクセスパタヌンを怜蚌したす。

たずめ



Intel Parallel Studioは、ハむブリッドHPCアプリケヌションのパフォヌマンスを分析するための4぀のツヌルを提䟛したす。










All Articles