The Parallel Universe 1 インテル MPI ライブラリーのマルチ EP によりハイブリッド アプリケーションのパフォーマンスを向上 最小限のコード変更でエクサスケール時代に備える Rama Kishan Malladi インテルコーポレーショングラフィックス パフォーマンス モ

Similar documents
Code Modernization Online training plan

インテル(R) Visual Fortran コンパイラ 10.0

Microsoft PowerPoint - 演習1:並列化と評価.pptx

Product Brief 高速なコードを素早く開発 インテル Parallel Studio XE 2017 インテル ソフトウェア開発ツール 概要 高速なコード : 現在および次世代のプロセッサーでスケーリングする優れたアプリケーション パフォーマンスを実現します 迅速に開発 : 高速かつ安定し

NUMAの構成

インテル® Xeon Phi™ プロセッサー上で MPI for Python* (mpi4py) を使用する

Pervasive PSQL v11 のベンチマーク パフォーマンスの結果

Microsoft PowerPoint - 1_コンパイラ入門セミナー.ppt

IntelR Compilers Professional Editions

Click to edit title

for (int x = 0; x < X_MAX; x++) { /* これらの 3 つの行は外部ループの自己データと * 合計データの両方にカウントされます */ bar[x * 2] = x * ; bar[(x * 2) - 1] = (x - 1.0) *

内容 インテル Advisor ベクトル化アドバイザー入門ガイド Version インテル Advisor の利用 ワークフロー... 3 STEP1. 必要条件の設定... 4 STEP2. インテル Advisor の起動... 5 STEP3. プロジェクトの作成

Using VectorCAST/C++ with Test Driven Development

Intel MPI Library Linux

Total View Debugger 利用の手引 東京工業大学学術国際情報センター version 1.0

ピクセル同期を利用した順不同半透明描画 (更新)

並列計算導入.pptx

PowerPoint プレゼンテーション

Microsoft PowerPoint - Intel Parallel Studio XE 2019 for Live

Microsoft PowerPoint - KHPCSS pptx

VXPRO R1400® ご提案資料

Microsoft Word - appli_SMASH_tutorial_2.docx

Microsoft PowerPoint - 講義:コミュニケータ.pptx

Microsoft PowerPoint - 講義:片方向通信.pptx

Jackson Marusarz 開発製品部門

インテル® Parallel Studio XE 2013 Linux* 版インストール・ガイドおよびリリースノート

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

アプリケーション・パフォーマンス・スナップショット (APS) ユーザーガイド Linux* 版

演習準備

Microsoft Word - Getting_Started.doc

MPI コミュニケータ操作

PowerPoint Presentation

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

コードのチューニング

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

TopSE並行システム はじめに

SoftBank 403ZT ユーザーガイド

目次 1 はじめに 製品に含まれるコンポーネント 動作環境... 4 オペレーティング システム... 4 Microsoft Visual Studio* 製品 製品のダウンロード 製品版をインストールする場合 評価版を

目次 LS-DYNA 利用の手引き 1 1. はじめに 利用できるバージョン 概要 1 2. TSUBAME での利用方法 使用可能な LS-DYNA の実行 4 (1) TSUBAMEにログイン 4 (2) バージョンの切り替え 4 (3) インタラ

Microsoft* Windows* 10 における新しい命令セットの利用

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18

IBM Cloud Social Visual Guidelines

スライド 1

インテル® Fortran Studio XE 2011 SP1 Windows* 版インストール・ガイドおよびリリースノート

インテル® Parallel Studio XE 2013 Windows* 版インストール・ガイドおよびリリースノート

InfiniDB最小推奨仕様ガイド

インテル® VTune™ Amplifier XE を使用したストレージ向けの パフォーマンス最適化

GeoFEM開発の経験から

クラスタ構築手順書

目次 はじめに プロファイルとモードについて キーボードのバックライトをカスタマイズする サポートに問い合わせる はじめに 1 Corsair ゲーミングのハードウェアとソフトウェアのインストール 2 ファームウェアのアップデート 3 プロファイルとモードについて 4 キーボードの

演習準備 2014 年 3 月 5 日神戸大学大学院システム情報学研究科森下浩二 1 RIKEN AICS HPC Spring School /3/5

appli_HPhi_install

PassSureExam Best Exam Questions & Valid Exam Torrent & Pass for Sure

EnSightのご紹介

McAfee SaaS Protection 統合ガイド Microsoft Office 365 と Exchange Online の保護

はじめる前に

Microsoft PowerPoint - 第10回講義(2015年12月22日)-1 .pptx

インテル® MPI ライブラリー for Windows* ユーザーズガイド

Fujitsu Standard Tool

PowerPoint プレゼンテーション

スレッド化されていないアプリケーションでも大幅なパフォーマンス向上を容易に実現

使用する前に

インテル Parallel Studio XE 2017 Composer Edition for Fortran Windows* インストール ガイド Rev (2017/06/08) エクセルソフト株式会社

Intel Integrated Performance Premitives 4.1 Linux

研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI, MPICH, MVAPICH, MPI.NET プログラミングコストが高いため 生産性が悪い 新しい並

SoftBank 101SI 取扱説明書

Oracle SALTを使用してTuxedoサービスをSOAP Webサービスとして公開する方法

2014 年 11 月 ボリュームライセンスサービスセンターで Online Service をアクティブ化する Open プログラムのお客様は VLSC の新しい [Online Service のアクティブ化 ] セクションのシンプルなプロセスに従って マイクロソフトボリュームライセンスサービス

Microsoft Word ●IntelクアッドコアCPUでのベンチマーク_吉岡_ _更新__ doc

Microsoft PowerPoint _MPI-03.pptx

ことばを覚える

Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

Microsoft Word - A04 - Configuring Launch In Context_jp-ReviewedandCorrected a.doc

NVIDIA Tesla K20/K20X GPU アクセラレータ アプリケーション パフォーマンス テクニカル ブリーフ

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

Microsoft PowerPoint - OpenMP入門.pptx

クラス図とシーケンス図の整合性確保 マニュアル

はじめに

多機種のAndroid(TM)端末でテストシナリオを流用可能に - Androidアプリケーション自動テストツール QCWing for Android Ver.2.7 -

Microsoft PowerPoint _MPI-01.pptx

Microsoft Word - HOKUSAI_system_overview_ja.docx

Microsoft PowerPoint - Skype for business の概要.pptx

Oracle Data Pumpのパラレル機能

Oracle Enterprise Managerシステム監視プラグイン・インストレーション・ガイドfor Juniper Networks NetScreen Firewall, 10gリリース2(10.2)

PowerPoint プレゼンテーション

Microsoft Word - 編集用_Ensemble2010.2HL7MessagingThroughput.docx

インテル® Parallel Studio XE 2015 Composer Edition for Linux* インストール・ガイドおよびリリースノート

2015 年 2 月 ボリュームライセンスサービスセンターで Online Service をアクティブ化する Open プログラムのお客様は VLSC の新しい [Online Service のアクティブ化 ] セクションのシンプルなプロセスに従って マイクロソフトボリュームライセンスサービスセ

この時お使いの端末の.ssh ディレクトリ配下にある known_hosts ファイルから fx.cc.nagoya-u.ac.jp に関する行を削除して再度ログインを行って下さい

はじめに Dell PowerVault DL2000 Powered by Symantec Backup Exec は シンプルで管理しやすいデータ保護機能を提供する 柔軟かつ経済的なバックアップソリューションです 本ホワイトペーパーでは PowerVault DL2000 の バリューシリーズ

Microsoft PowerPoint - FormsUpgrade_Tune.ppt

2 / 8 オンデマンドダウンロード機能 を使用するときに次の制約があります 1. インターネットに接続されていない ( オフライン ) 場合は OneDrive エリアのみにあるファイルを開くことはできない 2.OneDrive エリアからダウンロードが完了するまでいくらか待たされるし ( 特に大

ミーティングへの参加

Microsoft PowerPoint - OS07.pptx

Microsoft PowerPoint - 演習2:MPI初歩.pptx

about MPI

Oracle SQL Developer Data Modeler

設定

XNA Framework

Dell SupportAssist Agent 導入ガイド

Transcription:

1 インテル MPI ライブラリーのマルチ EP によりハイブリッド アプリケーションのパフォーマンスを向上 最小限のコード変更でエクサスケール時代に備える Rama Kishan Malladi インテルコーポレーショングラフィックス パフォーマンス モデリング エンジニア Dr. Amarpal Singh Kapoor インテルコーポレーションテクニカル コンサルティング エンジニア 1990 年代半ば以降 MPI は分散メモリー型ハイパフォーマンス コンピューティング (HPC) アプリケーションにおけるメッセージパッシングの業界標準となっています 高並列マルチコア プロセッサーの出現により MPI は共有メモリーシステム内のメッセージパッシングにも利用されています MPI ライブラリーの呼び出しにはオーバーヘッドが伴うため マルチコアシステムで実行する純粋な MPI アプリケーションでは必要以上のオーバーヘッドが発生します この回避策として (Pthreads や OpenMP* などを使用して ) MPI アプリケーションをマルチスレッド化して ノードごとの MPI ランク数を減らすハイブリッド並列処理が採用されました

2 ハイブリッド並列処理をサポートするため MPI バージョン 2.1 でユーザー指定のスレッド サポート レベルでスレッド環境を初期化する MPI_INIT_THREAD 関数が追加されました 次の 4 レベルのスレッドサポートを利用できます MPI_THREAD_SINGLE MPI_THREAD_FUNNELED MPI_THREAD_SERIALIZED MPI_THREAD_MULTIPLE 最初の 3 つのレベルには制約があり スレッドが同時に MPI を呼び出すことを許可していません MPI_ THREAD_MULTIPLE サポートレベルには制約がありませんが スレッド間の内部同期によりパフォーマンスが低下するため あまり使用されていません インテル MPI ライブラリー 2019 で強化された機能の 1 つは スケーラブル エンドポイントとマルチエンドポイント ( マルチ EP) です この機能は MPI_THREAD_MULTIPLE サポートレベルで一部の機能制限はありますが ハイブリッド アプリケーションで優れたパフォーマンスを実現します 1 マルチ EP の斬新な点は MPI ランタイムで追加の同期を必要とせずに複数のスレッドを同時にアクティブにできることです これにより 1 つの MPI ランクで複数のスレッドを使用してネットワーク帯域幅を飽和させることができ ノードごとに複数のランクが不要になります この記事では マルチ EP について説明し インテル MPI ライブラリーでマルチ EP 機能を使用する方法を紹介し シンプルなベンチマークと実際のアプリケーションを使用して潜在的なパフォーマンス ゲインを示します 複数のエンドポイント MPI エンドポイントは MPI 通信の独立した実行をサポートするリソースのセットです 2 エンドポイントは MPI コミュニケーターのランクに対応します ハイブリッド設定では エンドポイントに複数のスレッドをアタッチすることが可能で スレッドは対応するエンドポイントのリソースを使用して通信できます これにより 通信用の複数のデータストリームが生成され 独立したハードウェア コンテキストと並列に通信媒体を介して送信できます その結果 アプリケーション レイヤーからスレッド MPI OFI およびハードウェア レイヤーへロックなしでデータを送信できます ( 図 1) インテル MPI ライブラリー 2019 でマルチ EP を使用する方法 マルチ EP を使用するために必要なコードと環境について考えてみましょう ここでは スレッド対応の MPI コードがすでに存在すると仮定します マルチ EP は標準の MPI 機能ではないため 環境変数を設定して有効にする必要があります $ export I_MPI_THREAD_SPLIT=1

3 1 アプリケーションからインターコネクト ハードウェアへのロックなしメッセージ送信 マルチ EP は インテル MPI ライブラリーの release_mt 構成と debug_mt 構成でのみサポートされ これらの構成にはグローバルロックはありません 次のいずれかの方法で正しい構成を選択します $ source <installdir>/intel64/bin/mpivars.sh release_mt または $ export I_MPI_LIBRARY_KIND=release_mt PSM2 ライブラリー内でマルチ EP サポートを有効にします ( デフォルトは無効 ) また 使用するスレッドランタイムを指定します (OpenMP* ランタイムはマルチ EP をサポートしていますが ほかのスレッドランタイムを使用することもできます ) 次のコマンドを実行します $ export PSM2_MULTI_EP=1 $ export I_MPI_THREAD_RUNTIME=openmp ユーザーコード内で MPI_INIT_THREAD を介して MPI_THREAD_MULTIPLE サポートレベルを要求します MPI_COMM_WORLD コミュニケーターをランクごとのスレッド数と同じ数だけ複製します このステップは ロックなしメッセージ送信を確実にします 以降の MPI 関数呼び出しで新しいコミュニケーターを使用します 次の環境変数は MPI ランクごとの最大同時スレッド数を制御します $ export I_MPI_THREAD_MAX=n

4 OpenMP* ランタイムでは I_MPI_THREAD_MAX の代わりに OMP_NUM_THREADS 環境変数を使用します ランクで処理するデータを切り分けて そのランクから発生した各スレッドが ( そのランクが所有する ) 特定のデータサブセットに対する所有権を持ち そのデータのみ操作 ( 入力と出力 ) するようにします その結果 MPI 関数呼び出しの数は増加しますが 各関数呼び出しで送信されるデータ量は ランクごとのスレッド数に比例して減少します MPI_THREAD_MULTIPLE サポートレベルで許可されているものと比較すると マルチ EP を使用する際にはいくつかの制限があります ( 詳細は オンライン ドキュメント ( 英語 ) を参照してください ) ベンチマーク アプリケーション ここでは MPI_ALLREDUCE ブロッキング集合関数を使用し 純粋な MPI アプローチとハイブリッド アプローチを使用して 複数のノードにわたる 2,097,152 個の整数の配列をレデュース ( 合計 ) します ( 図 2 と 3) ハイブリッド アプローチでは OpenMP* が使用されます ノイズフリーの時間予測を得るため リダクション操作は 100 回繰り返します アプリケーションは Fortran で記述されており バージョン 2019.0 のインテル Fortran コンパイラーとインテル MPI ライブラリーでコンパイルされています 2 純粋な MPI の MPI_ALLREDUCE

5 3 マルチ EP の MPI_ALLREDUCE 図 3 は マルチ EP の MPI_ALLREDUCE を使用した場合の違いを示します 前述のとおり MPI_COMM_ WORLD は必要に応じて何度でも複製され リダクション呼び出しは mydata と myre の明確なスレッドベースの所有権を持つ並列領域内で実行されます オフセットは すべてのスレッドの開始と終了所有権インデックスを含む行列変数です また MPI_ALLREDUCE 呼び出しの数は 純粋な MPI では (niter MPI ランク数 ) であるのに対し マルチ EP では (niter MPI ランク数 ランクごとのスレッド数 ) です MPI 環境は前述のステップのとおりで アプリケーションは次のコマンドで起動されます $ mpiexec.hydra n ppn 1 f hostfile prepend-rank genv OMP_NUM_THREADS NT./multiEP ここでは インテル Trace Analyzer & Collector を使用してアプリケーションをプロファイルし ランクとスレッド分割を確認します ( 詳細は オンライン ドキュメントを参照してください )

6 図 4 と 5 のプロファイルでは 4 ノード ノードごとに 1 ランク ランクごとに 2 スレッドを使用しています ま た 静止画像でプロファイルを確認しやすいように 繰り返し回数を 1 に設定しています 4 4 ノード ノードごとに 1 ランク ランクごとに 2 スレッドを使用した場合のロードバランス 5 すべてのランクでの関数呼び出しとそのスレッドを時間に応じて表示されたイベント タイムライン

7 図 4 は 要求どおりすべてのランクが 2 つのスレッド (T0 と T1) をスポーンしたことを示しています ここで実行した小さな問題では シリアル時間 ( 青色で表示 ) が多いことが分かります また 同じランクのスレッド間のロードバランスがあまりよくありません ただし 各ランクの最初のスレッドによって実行されたワーク量は比較的バランスが取れています 各ランクの 2 つ目のスレッドでも同じことが言えます 図 5 の水平方向はタイムライン 垂直方向はランク ( とスレッド ) を示します アプリケーションは スレッドごとにコミュニケーターを複製する前に すべてのランクでシリアル コード セクションの実行から開始し 最後にすべてのランクとそのスレッドで MPI_ALLREDUCE を呼び出します そして各ランクは 並列領域外で MPI_FINALIZE を呼び出して終了します 図 6 は 16 ノード ノードごとに 1 ランクで分散実行した場合の スレッド数に応じた MPI_ALLREDUCE のスピードアップを示します ピーク パフォーマンスは 16 スレッドで達成されており このテストシステム ( インテル Omni-Path インターコネクトを介して接続されたインテル Xeon Phi 7250F プロセッサーのクラスター ) ではこれが最適なスレッド数であることを示しています 6 マルチ EP によるスレッドのスケーリング

8 量子色力学 (QCD) コードでのマルチ EP の使用 実際のアプリケーションでマルチ EP を使用するのは非常に簡単です 図 7 は ノード ( ランク ) 間のデータ境界のハロー交換を行う QCD アプリケーションの例です QCD コードの通信パターン (CG ソルバーの Wilson-Dslash オペレーター ) は X Y Z および T 方向の最近傍ポイントツーポイント (send-recv) 交換です 図は MPI ランクごとに 2 スレッドを使用するマルチ EP 実装の Y 方向のメッセージ交換を示しています 格子は 4 ランク ( ランク 0 ~ 3) に分割され ランク間の通信は 境界データのハロー交換の送信は青色 受信は赤色で示されています ( 図 8) 8 スレッドを使用するマルチ EP バージョンのコードは 図 9 に示します 図 7 では ランクごとに 2 スレッドを使用するマルチ EP の MPI メッセージパッシングを表しています T0 と T1 として示されているスレッドは MPI の送信と受信を分割し この通信を並列に実行して ネットワーク帯域幅の利用率を向上します 7 マルチ EP を使用した場合としない場合の 16*8*Z*T QCD 格子上での Y 方向の通信 8 8 スレッドを使用したマルチ EP なしの Y 方向 ( 上下 ) の通信

9 9 8 スレッドを使用したマルチ EP ありの Y 方向 ( 上下 ) の通信 10 異なるスレッド数とノード数でマルチ EP を使用した場合の相対パフォーマンスの向上 異なるスレッド数とノード数でマルチ EP を使用した場合のパフォーマンス ゲインを図 10 に示します 格子サイズ 64*64*64*16 ノード数 2 ~ 16 スレッド数 1 ~ 8 で マルチ EP を使用した場合のパフォーマンス ゲインを調査しました テストには インテル Omni-Path インターコネクトを介して接続されたインテル Xeon Phi 7250F プロセッサー ベースのノードで構成されるクラスターを使用しています

10 ハイブリッド アプリケーションのパフォーマンスが向上 インテル MPI ライブラリー 2019 のマルチ EP を使用した最適化により ハイブリッド アプリケーションのパフォーマンスが向上しました この新しい機能を使用するには コード変更と環境関連の設定が必要ですが ここで説明したとおり 変更は最小限で済み プログラム全体の構造は変更されません エクサスケール時代に進むにつれて ハイブリッド アーキテクチャーで最高のパフォーマンスを達成するには マルチ EP のような機能が必要になるでしょう 関連情報 製品情報 インテル MPI ライブラリーのダウンロード 参考資料 1. インテル MPI ライブラリー for Linux* デベロッパー ガイド https://software.intel.com/en-us/mpideveloper-guide-linux-multiple-endpoints-support ( 英語 ) 2. Enabling MPI Interoperability Through Flexible Communication Endpoints. James Dinan, Pavan Balaji, David Goodell, Douglas Miller, Marc Snir, and Rajeev Thakur. EuroMPI 2013. 3. インテル Trace Analyzer & Collector https://www.isus.jp/itatc/ 4. Intel Omni-Path Architecture Multiple Endpoints. James Erwin, Edward Mascarenhas, and Kevin Pine - Intel. IXPUG September 2018. https://www.ixpug.org/resources/download/intel-omnipath-architecture-multiple-endpoints ( 英語 ) 5. Multiple Endpoints for Improved MPI Performance on a Lattice QCD Code - Larry Meadows, Ken- Ichi Ishikawa, Taisuke Boku, Masashi Horikoshi. HPC Asia 2018 WS, January 31, 2018, Chiyoda, Tokyo, Japan. インテル MPI ライブラリー 柔軟で 効率良い スケーラブルなクラスター メッセージング 無料ダウンロード