SGI UV for SAP HANA: Scalable Single

W H I T E
P A P E R
Characterizing LS-DYNA Performance
on SGI Systems Using SGI MPInside
MPI Profiling Tool
®
®
Authors
Dr. Olivier Schreiber*, Tony DeVarco**, Scott Shaw***
Abstract
SGIは、統合計算、
ストレージ、遠隔可視化ソリューションを製造業のお客様に提供し、複数のコンピュータアーキテクチ
ャ、
すなわちマルチノード分散メモリプロセッサ・クラスタと共有メモリプロセッサシステムを有効に活用し、
システム全体
の管理工数と費用を削減します。LS-DYNAは単一コードベースに複数のソルバが統合されています。
この文書では、次の方法でLS-DYNAの陽解法ソルバのプロファイルを取得します。MPI分析ツールにはSGI MPInside
を使用しました。SGI MPInsideは、通常の通信プロファイリングの特徴を分析して
「オンザフライ」
モデリングを行い、最
新のインテル® Xeon®プロセッサ、
インターコネクトファブリックとミドルウェア、SGI MPIライブラリ、
およびLS-DYNA
ソースコードで利用できる様々なアップグレードの潜在的な性能向上を予測します。また、
プロファイルに基づくSGI
MPIのMPIplaceコンポーネントの使い方を説明し、SGIシステム上でのランク間転送時間を最小化して、TopCrunchの
「Car2car」標準ベンチマークにおいて最大10%、
シミュレーション実行時間を削減できることを示します。
* Senior Applications Engineer
** Director Manufacturing Solutions
*** Principal Applications Engineer
W H I T E PA P E R
INDEX
1.0 SGIシステムについて
1
1.1 SGI Rackable スタンダードデプス・クラスタ
1
1.2 SG ICE XA システム
2
1.3 SG UV 3000
3
1.4 SGI パフォーマンスツール
3
1.5 SGI システム管理ツール
4
1.6 リソースおよびワークロードのスケジューリング
4
1.7 SGI VizServer (NICE DCV)
4
®
I®
®
™
I®
™
®
®
2.0 LS-DYNA
6
2.1 使用バージョン
6
2.2 LS-DYNAの並列処理機能
6
2.2.1 基本的なハードウェアとソフトウェアの概念
6
2.2.2 並列処理の背景
6
2.2.3 分散メモリ並列計算の実装
7
2.2.4 並列処理のメトリックス
7
2.3 並列実行制御
8
2.3.1 実行手順
8
2.3.2 ノードとコア全体のMPIタスクとOpenMPスレッドアロケーションの実行コマンド
9
2.4 チューニング
9
2.4.1 入出力とメモリ
9
2.4.2 高密度プロセッサ上で利用可能なコアの一部を使用
10
2.4.3 インテル Hyper-threading
10
2.4.4 インテル ターボブースト
10
2.4.5 SGI Performance Suite MPI と SGI PerfBoost
11
2.4.6 SGI Accelerate LibFFiO
11
®
®
3.0 ベンチマークの説明
11
3.1 Car2car
11
3.2 Car2carのチューニング
12
4.0 MPInside
12
4.1 MPInside 概要
12
4.2 MPInside 技術
12
4.3 MPInside の使い方
13
4.3.1 MPInside コマンド
13
4.3.2 MPInside の出力
13
4.3.2.1 Timing Table
13
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool
W H I T E PA P E R
4.3.2.2 Bytes Sent Table
13
4.3.2.3 Number of “Send” Calls Table
14
4.3.2.4 Bytes Received Table
14
4.3.2.5 Number of “Recv” Calls Table
14
4.3.2.6 その他の出力
14
4.3.2.6.1 Number of requests distribution
14
4.3.2.6.2 Times Distribution
15
4.3.2.7 転送行列
4.4 MPInsideが取り扱う情報
15
15
4.4.1 一般事項
15
4.4.2 MPIファンクションの略称
16
4.4.3 更に進んだ機能
16
4.5 MPInsideでの推定
17
4.6 ロードバランス対策
18
4.7 Car2car Topcrunch ベンチマークのケーススタディ
18
4.7.1 基本プロファイリング
18
4.7.2 一括持ちプロファイリング
19
4.7.3 送信遅延時間プロファイリング
20
4.7.4 完璧なインターコネクトプロファイリング
21
4.8 SGI MPIplace プロファイルに基づいたMPI用配置ツール
21
4.8.1 概要
22
4.8.2 Car2Car Topcrunch ベンチマークのケーススタディ
23
5.0 まとめ
24
6.0 参考文献
24
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool
W H I T E PA P E R
1.0
SGIシステムについて
この文書に記載したベンチマークを実行するために、SGI®Rackable™スタンダードデプス・クラスタ、SGI®ICE™ X
統合ブレードクラスタ、SGI®UV™ 2000共有メモリシステム等のSGIシステムを使用しました。
これらは世界で最も難
しい計算課題を解決するために使用されているサーバと同じものです。
これらの各サーバプラットフォームは、共有メモ
リ並列(SMP)
モードと分散メモリ並列(DMP)
モードのLSTC LS-DYNAをサポートしています[1]。
1.1
SGI® Rackable™スタンダードデプス・クラスタ
SGI® Rackable™スタンダードデプス、
ラックマウントC2112-4GP3 2Uエンクロージャは、
4ノードと64スロット
(サー
バ当たり16スロット)で最大4TBのメモリをサポートしています。
また、2Uにつき最大144コアをサポートし、FDR
®
®
InfiniBand、
14コアインテル Xeon プロセッサE5-2600 v3シリーズと2133 MHz DDR4メモリを搭載して、
TCO削
減のためにSUSE® Linux® Enterprise ServerまたはRed Hat® Enterprise Linuxで動作します
(図1)
。
図 1: Overhead View of SGI Rackable Server with the Top Cover Removed
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 1
W H I T E PA P E R
1.2
SGI® ICE™ XA システム
SGI® ICE™ XAは、世界最速の商用分散メモリ型スーパーコンピュータのひとつです。
この性能のリーダーシップは、
研究所や顧客サイトで証明されており、
その中には世界最大かつ最速の純粋なInfiniBand計算クラスタを採用してい
®
®
るサイトもあります。
インテル Xeon プロセッサE5-2600 v3シリーズ単独での計算ノード、
またはインテル® Xeon®
プロセッサおよびインテル® Xeon Phi™コプロセッサとNvidia®Compute GPUから成る計算ノードを構成できま
す。SUSE® Linux® Enterprise ServerとRed Hat®Enterprise Linux上で稼働するSGI ICE XAは、
ラック当たり
191テラフロップスを超える性能を発揮でき、36ノードから数万ノードまでの構成が可能です。
SGI ICE XAは、
システムのオーバーヘッドと通信のボトルネックが最小になるよう設計されており、
例えば、
LS-DYNA
topcrunch.orgのベンチマークでは2,000コアを超えるスケーラビリティを提供し、
6年間連続で最高の地位を確保して
います。SGI ICE Xは、
スイッチとシングルプレインあるいはデュアルプレインのFDRインフィニバンドインターコネクトを
選択することにより、
さまざまなトポロジーで構成できます。統合されたブレード設計により、
ラックレベルでの冗長電源
と、
空冷
(現在ICE Xには空冷ラックがありますがICE XAにはありません)
、
もしくは冷水か温水による水冷が選択可能
で、
ストレージや可視化機能を追加することも可能です
(図2にICE Xのラックとブレードのエンクロージャを示します)
。
この文書では次のSGI ICE XAの構成を使用しました。
•
576ノード
(13,824コア)
• インテル® Xeon® 12コア 2.6Ghz E5-2690 v3
•
ypercubeインターコネクトで統合したMellanox® Technologies ConnectX®業界標準インフィニバ
H
ンドFDR
• コア当たり128GBのRAM、
メモリ速度2133MHz
•
Altair® PBS Professional
•
SLESまたはRHEL, SGI Performance Suite
図 2: SGI ICE X Cluster with Blade Enclosure
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 2
W H I T E PA P E R
1.3
SGI® UV™ 3000
SGI UV 3000サーバは最大256ソケット
(4,096コア)
で構成されます。
シングル・システム・イメージで64TBのグローバ
ル共有メモリをサポートしているので、
インメモリ・データベースから多様なデータ集約型アプリケーションや、
数値計算
HPCアプリケーションに対して、
SGI UVの能力を最大限引き出せます。
しかも、
なじみのあるLinux OS [2]でプログラミン
グでき、
複雑な通信アルゴリズムを搭載するためにソフトウェアを書き換える必要はありません。
TCOは、
ひとつのシステム
を管理するだけなので低くなります。
ワークフローと全体の時間は、
データを移動させることなくひとつのシステム上でプリ
プロセッシングやポストプロセシング、
ソルバ、
可視化を稼働させることで高速化できます
(図3)
。
ジョブのメモリは、
マルチユーザーに対する異機種混合のワークロード環境での柔軟性を最大限にするために、
コアの配
置とは独立にアロケートされます。
一方クラスタ上では問題を分解しなければならず、
多数のノードを利用する必要があり
ます。
SGI UVは、
多くのメモリを必要とする問題を利用可能なアプリケーションライセンスを用いてあらゆる数のコアで実
行することができ、
しかもメモリリソース不足によるジョブの中断をあまり気にする必要がありません。
1.4
図 3: SGI UV CAE workflow running LSTC applications
SGI パフォーマンスツール
最新のMPI準拠ライブラリと標準Linuxディストリビューションを活用して、SGI® Performance Suite
(図4)
は、HPC
アプリケーションの飛躍的な高速化と規模の拡大を加速させます。機能豊富なツール群はアプリケーションの配置を
最適化し、再コンパイルせずにランタイムでアプリケーションのチューニングを可能にし、最大70%まで性能を高めるこ
とができます。細粒度の指標がMPI分析を容易にします。
チェックポイントリスタート機能が生産性を高めます。
さらに
標準Linuxディストリビューション上の特別なカーネルを使わずに、
ハード・リアルタイム・パフォーマンスが実現できま
す。世界に誇るアプリケーションの専門知識と相まって、SGIはLinuxを次のレベルに引き上げます。詳細は、
http://www.sgi.com/products/software/ をご覧ください。
図 4: SGI Performance Suite Components
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 3
W H I T E PA P E R
1.5
SGI システム管理ツール
ベアメタル・プロビジョニングとメモリ障害回避、365日24時間のシステムモニタリング、
タスク自動化、革新的な電力最
適化などを通して、
SGI® Management Suiteは、
生産性の最大化と高い投資対効果の実現を支援します。
アドミニス
トレータは、
ずば抜けた速度でのシステム導入とアップグレード、積極的なシステムの健全性とエネルギー消費の管
理、高いサービスレベルの常時提供ができるので、
ユーザーは間断なく短い時間により多くのジョブを走らせることが
可能になります。詳細は、http://www.sgi.com/products/software/smc.html をご覧ください。
1.6
リソースおよびワークロードのスケジューリング
リソースとワークロードのスケジューリングにより、大規模で複雑なアプリケーション、
ダイナミックで予測できない
ワークロードを管理し、限られた計算リソースを最適化することができます。SGIは、複数のソリューションを提供し、
お
客様のニーズに的確にお応えします。
Altair Engineering PBS Professional®は、SGIのあらゆるクラスタとサーバに対して技術計算のスケーリングを行
うSGI推奨ワークロード管理ツールです。
特長
• ポ
リシー主導型のワークロード管理。生産性を向上し、
サービスレベルを満たし、ハードウェアとソフトウェ
アのコストを最小限に抑えます。
• ワ
ークロード主導自動ダイナミックプロビジョニング等の機能について、SGI Management Centerとの
統合業務
•
ltair PBS Professional Power Awarenessは、SGI Management Center 3とジョブレベルの電力
A
管理を統合します。
Adaptive Computing Moab® HPCスイート・ベーシックエディション
Adaptive Computing Moab® HPCスイートは、
スケーラブルなシステム上でのワークロードに対するインテリジェン
ト予測スケジューリングを可能にします。
• クラスタワークロードのスケジューリング、管理、モニタリング、報告を統合するポリシーに基づいたHPC
ワークロードマネージャ
•
1.7
TORQUEリソースマネージャ同梱
SGI® VizServer®(NICE DCV)
SGI VizServer (NICE DCV)は、
Webベースのポータルを介して技術ユーザーにリモート3Dモデリングツールを提供
し、GPUとリソースの共有および安全なデータの保存を可能にします。
(図5)
図 5: SGI VizServer workflow
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 4
W H I T E PA P E R
企業のサーバにインストールされたSGI VizServer (NICE DCV)は、企業のプライベートネットワークに組み込まれ
たSaaSとして、LS-PrePostのリモート可視化機能を提供できます。LS-PrePostソフトウェアを、使いやすいWebイン
ターフェースでアクセスできるので、
エンドユーザーが容易に利用できます。
このソリューションは、直感的なヘルプとガ
イダンスを提供しており、経験の少ないユーザーが複雑なITプロセスに邪魔されることなく生産性を最大にできます。
SGI VizServer
(NICE DCV):
•
技術者に優しいセルフサービスポータル : 技術者は、
セルフサービスポータルを使って、LS-PrePostアプリ
ケーションとWebブラウザで設定したデータにアクセスできます。
ユーザーの企業データ漏洩防止とITマ
ネージャの使用履歴管理を保証するセキュリティ、
モニタリング、管理も提供します。技術者は、
自分のローカ
ルクライアントに個別のLS-PrePostソフトウェアをインストールする必要はなく、WebブラウザからLSPrePostアプリケーションとデータに直接アクセスします。
• リソース制御と抽象レイヤ : リソース制御と抽象レイヤは、
ポータル内部に隠されており、
エンドユーザー
からは見えません。
ユーザーの使い心地を損なうことなく、
ジョブのスケジューリング、遠隔可視化、
リソー
スプロビジョニング、相互ワークロード、分散データ管理を処理します。
このレイヤは、
ブラウザからのユー
ザーの要求を翻訳し、可視化やHPCタスクを遂行するために必要なリソースの割り当てを支援します。
こ
のレイヤは、
マルチサイトWANでの実装だけでなく、単一SGI RackableクラスタやSGI UVサーバ上で稼
働するスケーラブルなアーキテクチャーを持っています。
•
計算とストレージリソース : SGI VizServer (NICE DCV)は、企業が既に持っている、
または新規購入し
たSGI業界標準リソースを活用します。対象リソースには、
ホスト・アプリケーション・バイナリ、
モデル、
中間
結果に必要なストレージだけでなく、
サーバ、HPCスケジューラ、
メモリ、
グラフィックス・プロセッシング・ユ
ニット
(GPU)、可視化サーバなどがあります。
これらは全てリソース制御と抽象レイヤを介してWebベース
のポータルでアクセスし、
エンドユーザーの必要に応じてミドルソフトウェアにより提供されます。
NICE DCVとEnginFrameソフトウェアは、
共通技術標準に従って構築されています。
このソフトウェアは、
ネットワーク
を大幅にアップグレードすることなく、企業独自のセキュアなエンジニアリングクラウドを作成できるように、
ネットワーク
インフラに順応できます。
また、
このソフトウェアでは、技術アプリケーションとデータの両方がプライベートクラウドまた
はデータセンタに留まるので、
データの安全が確保され、
データを転送する必要性を排除し、
ワークステーション上で閲
覧できます。
これらのソリューションは、
シンプル、
セルフサービス、
ダイナミック、
スケーラブルというクラウド・コンピュー
ティングの一番の特長を備えています。
その上、
ユーザーがどこにいても、
エンドユーザーへHPC機能を提供するだけで
なく、
3D可視化もできるほど強力です。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 5
W H I T E PA P E R
2.0
2.1
LS-DYNA
使用バージョン
LS-DYNA/MPP ls971 R3.2.1以降。R4.2.1では、現象を短い時間間隔でシミュレートする場合、座標の配列が倍
精度でコード化されるため、25%(neon)
から35%
(car2car)
の性能劣化を招きます。
コンパイラ: Fortran: EM64Tベースのアプリケーションに対してインテル® Fortranコンパイラ 11.1。
MPI: IBM Platform MPI、
インテルMPI、
Open MPIおよびSGI MPI。
2.2
LS-DYNAの並列処理機能
2.2.1
基本的なハードウェアとソフトウェアの概念
システムのハ ードウェアコンポーネントとそれらを用いて行う実 際 の 演 算とを識 別することが 大 切 です。
以下にハードウェア側の概念を示します。
1. コア: 算術演算を行う中央演算装置(CPU)
2. プロセッサ: ソケットで取り付けられ、4個、6個、8個、
またはそれ以上のコアを持つ半導体素子
3. ノード: ひとつのネットワークインターフェースとアドレスに関連付けられたホスト
現在の技術では、
ノードはエンクロージャにラックマウントされたシャーシやブレード内のボード上に実装されていま
す。
ボードは2つまたはそれ以上のソケットを備えています。
以下にソフトウェア側の概念を示します。
1. プロセス: 自分自身のアドレス空間を持つ実行ストリーム
2. スレッド: 他のスレッドとアドレス空間を共有する実行ストリーム
従って、
システムで解を計算するために生成されたプロセスとスレッドが、
プロセッサとコアのハードウェア階層に応じ
て、
ノード上に異なる方法で配置されるので注意が必要です。
2.2.2
並列処理の背景
科学技術計算分野での並列計算には、2つのパラダイムが存在し、個別に実装されるか、場合によりハイブリッドコー
ドとして組み合わされます。共有メモリ並列計算(SMP)
は、1980年代に出現し、
同時に
「DOループ」
やメモリ共有ス
レッドによるサブルーチン生成といった技法の開発をもたらしました。
このパラダイムでは、並列化効率は、
「DOループ
の粒度」
と呼ばれるデータアクセスに対する算術演算の相対的重要性に影響されます。1990年代の後半に、分散メモ
リ並列計算(DMP)処理が導入され、
より粗い粒度の並列計算設計により、性能向上に対して極めて適切であること
が実証されました。
その後、DMPはMPIアプリケーション・プログラミング・インタフェースに統合されました。
また、
その
間に、共有メモリ並列計算によるOpenMP™(オープンマルチプロセシング)
とPthread標準APIを介した効率の良い
実装により、並列化済みの数値演算ライブラリが追加されました。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 6
W H I T E PA P E R
DMPプログラムとSMPプログラムは、制約がありますが、
いずれも共通に利用できる2種類のハードウェアシステム上
で実行できます。
•
単一のメモリアドレス空間とオペレーティングシステムの単一インスタンスを共有する複数のコアを持つ共
有メモリシステムあるいはシングルノード
•
独立したローカルメモリアドレス空間とオペレーティングシステムのノード別専用インスタンスを有するノー
ドで構成される、分散メモリシステム
(クラスタとしても知られる)
注:単一メモリ空間であるため、SMPプログラムはクラスタを跨って実行することはできません。逆に、DMPプログラム
は、共有メモリシステムで完全かつ適切に実行することができます。SMPに比べてDMPはより粗い粒度を有するため、
共有メモリシステムでは、一見した名前の示唆するものがどのようなものであっても、SMPではなくDMPを実行するこ
とが望まれます。
また、SMPとDMPの処理は一体化でき、
その処理モードは
「ハイブリッドモード」
と呼ばれます。
2.2.3
分散メモリ並列計算の実装
分散メモリ並列計算は、取り組む問題に対して領域分割を使って実装されます。
それぞれの業界が関わる物理的現象
に応じて、領域とは、形状、有限要素、行列、
周波数、荷重条件、
または陰解法の右辺などとして現れます。通信コストに
よる並列処理の非効率性は、
パーティション分割によって作られた境界の影響を受けます。
ロードバランシングも、全て
のMPIプロセスが解法中に同じ計算量をこなし、
同時に終了するために重要です。計算リソース全体にわたるMPIプロ
セスの配置は、
「ランク」
または
「ラウンドロビン」
アロケーションを使って、各アーキテクチャーに適応させることができ
ます。
2.2.4
並列処理のメトリックス
「プログラムの並列プロセス数を増やすことで実現できる高速化は、逐次処理部分の逆数に制約される」
というアム
ダールの法則は、以下の公式で表わされます
(この公式においてPは並列化できるプログラムの割合、1-Pは逐次処理
部分の割合で、Nは計算で用いるプロセス数です)。
アムダールスピードアップ = 1/[(1-P)+P/N]
導出メトリックス: 効率 = アムダールスピードアップ/N
アプリケーションの並列化可能部分はCPU速度への依存度が高く、
オーバヘッドタスクから構成される逐次処理部
分は、RAM速度やI/O帯域幅への依存度が高いという経験的事実から、傾向が推測できます。従って、
より高速な
CPUのシステムで実行されるアプリケーションは、1-Pの逐次処理部分が大きいほど、
そしてPの並列処理部分が小さ
いほど、
アムダールスピードアップが低下します。
このことは、
この事例で示すようにシステムBがシステムAより高速な
CPUを有するといった、
ハードウェア構成の相違に誤った評価を生みます。
N
System a elapsed seconds
System B elapsed seconds
1
1000
810
10
100
90
Speedup
10
9
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 7
W H I T E PA P E R
システムAとシステムBは、
たとえシステムBが全体にわたってより高速な基本性能を有する場合でも、
それぞれの並列
スピードアップは10と9で表わされます。
この問題は、
システムの最も遅い逐次処理時間によってスピードアップを正規
化することで解決できます。
10
Speedup
11.11
特定データセットの数値計算において、
プロセッサ数の増加につれて経過実行時間が減少する場合、
ストロングス
ケーリングを示すと言います。
データセットのサイズを増加させながら数値計算をする場合、
プロセッサ数も増加させ
ると経過実行時間が一定の範囲内になる場合、
ウィークスケーリングを示すと言います。
最終的には、特にひとつのシステムで複数のジョブを同時に実行する場合、
スループットのメトリックスが適しています。
ジョブ数/時間/システム= 3600/(ジョブ経過時間)
ここで、
システムとは、
全体でひとつのユニットとしてセットアップされた、
シャーシ、
ラック、
ブレード、
あるいは任意のハー
ドウェアです。
2.3
並列実行制御
2.3.1
実行手順
実行手順において以下が保証されなければなりません。
1. ノードやノード内のソケット間で実行するプロセスやスレッドを設定します。
2. ノード容量内に収まるようにプロセスメモリをアロケートします。
3. ノードやネットワークそれぞれで適切なスクラッチファイルを使用します。
バッチスケジューラやリソースマネージャは、1つまたは複数の計算ノードで実行されるようにフロントエンドのログイン
ノードからジョブをディスパッチします。
以下はジョブ登録スクリプトの概要です。
1. ディレクトリをバッチスケジューラでアロケートされた最初の計算ノード上のローカル・スクラッチ・ディレクトリ
に変更します。
2. 全ての入力ファイルをこのディレクトリに上書きします。
3. バッチスケジューラでアロケートされた他の計算ノード上に、並列ローカル・スクラッチ・ディレクトリを作成し
ます。
4. 最初の計算ノード上のアプリケーションを起動します。実行ファイル自体は、主解析実行の最初と最後で、起
動ノードと他のノード間の伝播やさまざまなファイルの収集を実行できます。
開始スクリプトでは、
d3plot*のよ
うな出力ファイルを非同期に消去し、
スクラッチ・ディレクトリを開放することもできます。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 8
W H I T E PA P E R
2.3.2
ノードとコア全体のMPIタスクとOpenMPスレッドアロケーションの実行コマンド
LS-DYNAでは、
プロセス、
スレッド、
および関連するメモリの配置は、実行コマンド内の次に示すキーワードで行います
[1]。
•
-np: 分散メモリ並列計算ジョブで使用するMPIプロセスの総数
•
ncpu=: SMP OpenMPスレッド数
•
memory, memory2: MPIプロセス用にアロケートするメモリサイズ
(ワード単位)
(ワードは実行ファイルが単精度では4バイト、
倍精度では8バイトです。
)
1. ピュアMPIモード : 全部または一部のコアを使用
mpirun -np #MPIprocesses HybridExec inputFile ncpu=1
#MPIprocesses=#nodes x #CoresPerNode
2. ハイブリッドモード : MPIプロセスとスレッドの混合
mpirun -np #MPIprocesses HybridExec inputFile ncpu=#ThreadsPerProcess
#MPIprocesses x ncpu = total#Threads = #nodes x #CoresPerNode
3. SMPモード
(スレッドのみ):
mpirun -np 1 HybridExec inputFile ncpu=#CoresOn1Node
4. SMPのみで実行可能なSMPモード
(スレッドのみ):
SMPexec inputFile ncpu=#CoresOn1Node
2.4 チューニング
2.4.1 入出力とメモリ
バッチ環境で最良の実行時間を達成するには、入出力ファイルのディスクアクセスを計算ノードに最も近い高性能ファ
イルシステムで行う必要があります。高性能ファイルシステムとして、
インメモリ・ファイルシステム
(/dev/shm)、
ダイレク
ト・アタッチ・ストレージ
(DAS)
ファイルシステム、
またはネットワーク・アタッチ・ストレージ
(NAS)
ファイルシステムの何
れかを用いることができます。
ディスクレス計算環境では、
インメモリ・ファイルシステムとネットワーク・アタッチ・ストレー
ジ・ファイルシステムのみが選択可能です。
ネットワーク・アタッチ・ストレージ
(NAS)
ファイルシステムを有するクラスタ
計算環境では、
アプリケーションMPI通信とNFSトラフィックの分離により、
スクラッチファイルに対する最適なNFS I/O
スループットを実現できます。
図7にファイルシステム体系を示します。
図 6: Example filesystems for Scratch Space
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 9
W H I T E PA P E R
コア当たりのシステムメモリを増やせば増やすほど、I/O効率改善用のLinuxカーネル・バッファキャッシュだけでなく
解析計算にもメモリを割り当てることができ、
システムの性能向上が図れます。SGIのフレキシブルファイルI/O(FFIO)
は、SGI Accelerateにバンドルされたリンクレスライブラリ
(アプリケーションへのリンクを必要としないライブラリ)
で
す。
このFFIOは、
ユーザー定義のI/Oバッファキャッシュを実装することで、I/Oが集中した複数のジョブやプロセスの
実行時に、
オペレーティングシステムのスラッシングを回避します。
これは、DASやNASストレージサブシステムを用いる
共有メモリ並列システムやクラスタ計算環境で有効です。FFIOは、
ユーザーページキャッシュを独立させるので、
ジョ
ブやプロセスはLinuxカーネル・ページキャッシュと競合しません。
つまり、
ディスクへの同期コールは最小にすべきで
すが、FFIOは、
ディスクとストレージサブシステム間の同期コール数を反映したeie_closeの同期値や非同期値により
エコーバックされる、
システムコール数とI/O操作数を最小にし、大型ジョブやI/O集中ジョブに対する性能を向上させ
ます
(参考資料[2]:第7章フレキシブルファイルI/O)
。
2.4.2 高密度プロセッサ上で利用可能なコアの一部を使用
計算システムの見方には2つあります。
1つは、
調達費用を決めるノードで見る方法、
もう1つは、
スループットの決定要因
であるコアで見る方法です。
プロセッサは価格、
クロックレート、
コア数およびメモリ帯域幅が異なるので、
ターンアラウン
ドタイムやスループットの最適化基準を選択する場合は、利用可能なすべてのコアで実行しているか、一部のコアで実
行しているかに依存します。
ライセンス料は、
システムに実存する物理コア数ではなく、
同時に実行するスレッドやプロセ
スの数に応じて算出されるため、利用可能なコアを一部しか使用していない場合には、
ライセンスコストの削減にはつ
ながりませんが、性能向上を実現できる可能性があります。部分的に使用しているノード間でのスレッドやプロセスの
配置は、
コア間の共有リソースの存在を考慮して行う必要があります。
2.4.3 インテル® Hyper-threading
インテルHyper-threading(HT)
は、
マルチスレッドやマルチプロセスのアプリケーションで、性能向上を図れるインテ
ル® Xeon®プロセッサファミリの機能です。
この機能を活用することで、
ユーザーはノード毎で利用可能な物理コア数
の2倍のOpenMPスレッドやMPIプロセスを実行することができます
(オーバサブスクリプション)
。
LS-DYNAでは、2ノードを超える場合、2倍に増えたMPIプロセス間通信による損失で、Hyper-threadingによる効果
が相殺されてしまいます。
2.4.4 インテル® Turbo Boost
インテル®ターボブーストは、
インテル® Xeon®プロセッサファミリの機能で、
プロセッサの熱設計枠により制約され
る制御限界内で、
コアの動作周波数を引き上げて性能を向上させます。起動モードは、MPIプロセス、OpenMPスレッ
ドまたはPthreadの実行中のある時点で動作しているコア数の関数になります。
ターボブーストは、定格動作周波数に
対する最大動作周波数の比率まで、少数のコアの性能を改善できます。
ターボブーストは、多くのコアが使われると、動
作中のコアが少ない場合とは異なり、全てのコアの動作周波数を高めることはできません。例えば、3.0GHzが定格動
作周波数の場合、1つか2つのコアが動作中であれば、
コアの動作周波数は3.3GHzに上昇しますが、3つか4つのコア
が動作中であれば、
その動作周波数は最大でも3.2GHzまでしか上昇しません。
計算タスクに関しては、
ターボブースト
を使用すると実行時間が改善されることが多いので、
プロセッサ以外の他の性能ボトルネックが原因ですべての利点
が失われるとしても、
ターボブーストを有効にしておくことが最善です。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 10
W H I T E PA P E R
2.4.5 SGI Performance Suite MPIとSGI PerfBoost
MPIランクをプロセッサコアに結合する機能は、
利用可能な複数のノード、
ソケットまたはコア環境で性能を制御する上
で重要です。参考資料[3] には
「3.1.2 CPUアフィニティとコア設定の計算費用対効果、
・・・HP-MPIは現時点では
CPUアフィニティとコア設定の機能を提供して、MPIランクの発行元であるプロセッサのコアにMPIランクを結合してい
る。SMPスレッドを含む子スレッドも同様に同一プロセッサのコアに結合することができるが、異なるプロセッサには結
合できない。
さらに、SMPスレッドに対するコア設定は、
システムデフォルトで行われるが、
ユーザーはそれを明示的に
制御することはできない。
・
・
・」
と記載されています。
対照的に、SGI MPIは、
「omplace」
オプションで、各ノード内のハイブリッドMPIプロセス、OpenMPスレッドおよび
Pthreadを正確に配置できます。SGI MPIにバンドルされたPerfBoost機能は、IBM Platform MPI、
インテルMPI、
OpenMPIの各コールを、
リンクレスでSGI MPIコールに変換します。
2.4.6 SGI Accelerate LibFFIO
LS-DYNA/MPP/Explicitの場合、
I/Oは集中せず、
また設定がSGI MPIで行えるため、
libFFIOが必要とされないこと
も珍しくありません。
しかし、LS-DYNA/MPP/Implicitの場合、大きなI/Oを含むため、libFFIOはNASや低速ファイル
システムでの帯域幅の競合を相殺することができます。
3.0 ベンチマークの説明
ベンチマークには、
ジョージワシントン大学のNational Crash Analysis Center(NCAC)
で作成され、TopCrunch
(http:www.topcrunch.org)
で公開されている3つのデータセットを使用しました。TopCrunchプロジェクトは、高性
能コンピュータシステムと技術計算ソフトウェアの集約した性能動向を追跡するために開始されました。人工的なベン
チマークを使用するのではなく、
実際の工学計算ソフトウェアアプリケーションであるLS-DYNA/Explicitを実データと
共に使用しました。2008年から、SGIはこの3つのデータセットで最高性能の地位を確保しています。測定基準は最小
経過時間で、
各プロセッサの全てのコアを使用しなければならないというルールです。
LS-DYNA/Implicit [4]、
[5]も参考資料[8][9]に掲載されています。
3.1 Car2car
車両2台の傾斜正面衝突
(図7)
。
車両モデルは、
250万要素のNCACミニバンモデルに基づいています。
シミュレーショ
ンでは、最初から最後までのステップで、201,854,976バイトのd3plotファイルと101,996,544バイトの
d3plot[01-25]ファイルを26回
(2,624MB)
書き込みました。
図 7: Car2car
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 11
W H I T E PA P E R
3.2 4.0 4.1 4.2 Car2car チューニング
倍精度を単精度にすると性能に影響します。
選択したLS-DYNAのバージョンもまたR3.2.1まで戻すと結果に影響しま
す。
その後、
その他の点は自動分解で結果を改善できます。
インテル®ターボブーストとデュアルレールでさらに性能が
改善します。最終結果は単精度、R3.2.1、
ユーザー指定の分解、
ターボブーストモードおよびデュアルレールをすべて
使用したものです。
MPInside
MPInside概要
MPInsideは、高性能MPI環境であるSGI MPIで、mpiplaceと共に利用できるMPIプロファイリングツールです[10]。
MPInsideは、例えば、MPIの送受信が対として同期実行されていない場所を見つけ出して情報を提供でき、MPIアプ
リケーション開発者にとって自分のアプリケーションの最適化に役立ちます。
MPInside Terminology
MPI通信は、
同期する必要がない送受信で構成されています。
「送信遅延時間」
(Send Late Time、
SLT)
とは、
ひとつ
のプロセスのMPI_Recvコールから、
メッセージが来る予定のプロセスのMPI_Sendコールまでの遅延と定義します。
データの実転送にかかる時間は、転送時間(Transfer Time、Tt)
と呼ばれます。SLTとTtの合計をファンクション時間
(Function time、
FT)
と定義します。
「受信遅延時間」
(Receive Late Time)
とは、
ブロックされたMPI_sendコールか
ら、
最終的な遠隔受信プロセスのMPI_Recvコールまでの遅延と定義します。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 12
W H I T E PA P E R
上記の例では、MPI_Recvがブロックされたファンクションなので、
ファンクション待ち時間FWTはFT時間と等しくなり
ます。
しかし、MPI_Irecvのようなブロックされないファンクションの場合には、FWTは、
このファンクションに対応する
(MPIの意味で)
要求を
「終了」
するMPI_Waitファンクションの時間になります。
ブロックされない受信(MPI_Irecv、MPI_Recv_init)
は、
アプリケーションに通信と計算の重複実行を可能にします。
通常、
通信時間は転送時間と見なされますが、
実際にはMPI_Irecvを使うと、
アプリケーションは送信遅延時間中にも
有用な計算を行うことが可能です。
この送信遅延時間は、
アプリケーションがMPI_Wait、MPI_Test等を使ってブロッ
クされない受信を完了させようと試行する間、継続する可能性があります。
この場合、計算と重複した送信遅延時間は
カウントされません。
WaitやTestでブロックされた要求、
または遅れてしまった要求を終了させるのに要した時間として、
アプリケーションから明白な送信遅延時間だけがカウントされます。
4.3 MPInside の使い方
4.3.1 MPInside コマンド
MPInsideのコマンドは、
アプリケーションの変更や再リンクの必要がまったくなく、
mpirunコマンドでターゲットアプリ
ケーション実行ファイルの前に引数として挿入するだけです。
4.3.2 MPInside の出力
実行終了時、略記形式のラベルで表したMPIファンクションを複数の列とし、各ランクにつき一行で記載した5つの表
を、
ASCIIファイルに出力します。
4.3.2.1 Timing Table
>>>> Communication time totals (s) 0 1<<<<
CPU
Compute
MPI_Init
w_MPI_Recv
Recv
w_MPI_Waitall Waitall
0
868.484133
0.000232
0
322.801183
0
0
2
645.987836
0.000189
0
337.04429
0
0.270488
1
3
4
5
4.3.2.2 654.365446
634.765585
648.41097
657.331095
0.000213
0.000189
0.000214
0.000185
0
0
0
0
326.385665
339.249457
333.377204
322.48984
0
0
0
0
0.348279
0
0
0
Bytes Sent Table:
>>>> Bytes sent <<<<
CPU
Compute
MPI_Init
w_MPI_Recv
Recv
w_MPI_Waitall Waitall
0
------
0
0
0
0
0
2
------
0
0
0
0
0
1
3
4
------
------
------
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 13
W H I T E PA P E R
4.3.2.3 Number of “Send” Calls Table:
>>>> Calls sending data <<<<
CPU
Compute
MPI_Init
w_MPI_Recv
Recv
w_MPI_Waitall Waitall
0
------
1
0
0
0
0
2
------
1
0
0
0
239981
1
3
4
4.3.2.4 ------
1
1
0
0
0
0
0
0
0
0
0
239981
0
0
Bytes Received Table:
CPU
Compute
MPI_Init
w_MPI_Recv
Recv
w_MPI_Waitall Waitall
0
------
0
0
28953401700
0
0
2
------
0
0
20038927680
0
0
3
4
------
------
------
0
0
0
0
0
0
28939575772
19903973196
13668688376
0
0
0
0
0
0
Number of “Recv” Calls Table:
>>>> Calls receiving data <<<<
CPU
Compute
MPI_Init
w_MPI_Recv
Recv
w_MPI_Waitall Waitall
0
------
0
0
14208346
0
0
2
------
0
0
14222841
0
239981
1
3
4
4.3.2.6 ------
1
>>>> Bytes received <<<<
1
4.3.2.5 ------
------
------
------
0
0
0
0
0
0
13966079
17384042
15638825
0
0
0
239981
239981
239981
その他の出力
ファンクション呼び出しをメッセージサイズの区分にて、
次の数量に応じてヒストグラム表示したものを出力します。
4.3.2.6.1 Number of requests distribution:
>>> Rank 0 Sizes distribution <<<
Sizes
RecvSendIsendIrecv
65536
0106048558469
32768
03800
16384
02243560
[...]
12848934411999472484941199934
6412088051679905245879719961
324872187200682531239989
0361683339273636521
0
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 14
W H I T E PA P E R
4.3.2.6.2 Times Distribution:
>>> Rank 0 Size distribution times<<<
Sizes
RecvSendIsendIrecv
655360 0.357941 0 30.856745
327680 0.001294 0 0
163840 0.0007130.0024280
8192 16.060919
1.9454680.0058680
4.3.2.7 転送行列
各ランクを行と列とした、
次の3つの値も生成します。
•
TIME(i,j): ランク
「i」
がランク
「j」
からデータを受信するのに要した合計時間
•
SIZE(i,j): ランク
「i」
からランク
「j」へのデータ転送量
•
REQUEST(i,j): 上記の転送に使ったコール数
4.4 MPInside が取り扱う情報
4.4.1 一般事項
MPInsideは、
受信側で規定したサイズではなく、
物理的に転送されたバイト数を報告します。
MPI_BcastやMPI_Alltoallのような一括操作については、
転送はブロードキャスト元に対して送信を割り当て、
操作に
関わる他のランクについては受信として割り当てます。
報告されるサイズは、
バッファサイズに該当ファンクションに関わったランクの数を乗じて計算されます。
MPInsideで測定する
「Compute(計算)」時間は、
そのランクが費やした時間で、
プロファイリングされたMPIコールに
寄与しない時間です。
時間にはI/O時間を含みますが、
MPINSIDE_SHOW_READ_WRITEが設定されている場合は
別々に測定されます。
その場合、
libc I/Oファンクション、
すなわちread()、
write、
open、
およびMPI_File_read_at()のよ
うなMPI_File_xxxの読み込みまたは書き込みMPI I/Oファンクションの、文字数と直接コールの回数はひとつの表で
報告されます。
I/O待ちやシステム待ちのような通信に関係しない時間も、
オープンソースのperfツールとoprofileツール、
またはオープ
ンソースではないインテル® VTune™プロファイリングツールを組み合わせて使用することにより補足可能で、計算時
間をさらに掘り下げることができます。
先に述べたように、
あるランクは、
他のランクが追いつくのを待つために、
MPIコールでブロックされる場合があります。
こ
れは、MPI_Allreduceのような一括操作の場合で、
このようなMPI一括ファンクションのほんの少しの時間が、最後の
ランクの完了時点への到着待ちに費やされます。
このようなタイミング調整不良のコストを評価するために、全ランクを
同期する各MPI一括ファンクションの前にMPI_Barrierコールを挿入すると、
その経過時間を記録し、
これにより一括
操作の待ち時間だけを計測できます。
それに続くMPI一括ファンクションで表示されるのは、
データの物理的転送時間
とその処理時間です。
この報告機能は、
MPINSIDE_EVAL_COLLECTIVE_WAITで起動します。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 15
W H I T E PA P E R
データの表とヒストグラムでは、
「b_xxx」
の列が「xxx」MPI一括ファンクションに対応するMPI_barrier時間を示し、
「xxx」
の列が残りの時間を示しています。
一括以外の操作については、
MPINSIDE_EVAL_SLTを設定すると、
MPInsideは、
Recv-Waitイベントに関連した遅延
(SLT)
である、全ての送信コールに対する時間を計測します。
そのような時間は、表内でw_xxxと示され、xxxはMPI_
WaitまたはMPI_Recvとなります。xxxはMPI_Irecvにはなりません。
なぜなら、最後のファンクションに対する送信遅
延時間は、
存在してもMPI_Waitのようなファンクションで考慮されているからです。
どちらのプロファイリングモードも有効になっていない場合
(ベーシックモード)
、
対応するMPIコールで費やした時間と
して表示されます。
一括待ち
(Collective Wait)
モードとSLTモードが有効な場合、
MPIコールで費やした時間は、
さらに転送時間
(Tt)
と
待ち時間に分割されます。
待ち時間は、
計算負荷の不均衡またはOS関係の外乱によるものです。
MPI_SendまたはMPI_IsendとMPI_Waitの対では、受信遅延時間は
「遅れた」
受信が主原因です。十分なバッファを
確保すれば、
その影響は最小にできます。
一方、
MPI_RecvまたはMPI_IrecvとMPI_Waitの対での待ち時間は、
対応する送信者が遅れている場合、
ゼロにはな
りません
(送信遅延時間、SLT)。
この待ち時間は、
どんなバッファを準備しても避けることができません。従ってモニタリ
ングではより重要になります。
要約すると、w_MPI_Recv、b_Bcastおよびb_Allreduce列での時間は全て待ち時間で、Recv、Bcastおよび
Allreduce列での時間は全て物理的転送時間です。合計経過時間は、
「Compute」列と全てのMPI列を合計したもの
です。
4.4.2 MPIファンクションの略称
b_<Collective_function>: MPINSIDE_EVAL_COLLECTIVE_WAITを設定している場合、
<Collective_function>の
前にMPI_Barrierを意図的に挿入したことを示します。一括ファンクション
(Collective_function)
の合計時間は
b_<Collective_function> + <Collective_function>となります。
w_<receive_or_wait_func>: 対応するMPI_RecvまたはMPI_Waitに対して、
送信が遅れたことによる時間を考慮する
意図的な待ちファンクションを示します。
4.4.3 さらに進んだ機能
測定する代わりに、MPInsideは、
「完璧なインターコネクト」
を仮定した通信モデルを使って報告することもできます。
こ
の漸近値で、
特定のアプリケーションと実行事例について、
通信ハードウェアやライブラリを強化することに意味がある
かどうかを判断できます。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 16
W H I T E PA P E R
「完璧な」
プロファイルとは、RecvとBcastの時間を消し去ることはなく、残りは、MPIコール引数の引き渡し、
スタックの
プッシュとポップ動作、
メモリの配置と開放のためのlibmpiでのオーバーヘッドです。
さらに重要なのは、RecvやBcast
の相手の、
ひとつもしくは複数のランクが追いつくことを待っている時間です。
これらの時間は、
SLTや一括待ち時間とほ
ぼ同等ですが、
転送時間なしだとランクが同期しやすくなるので短くなることもあります。
4.5 MPInside での推定
MPInside表のw_MPI_Recv列での大きな時間は、
Recvにおける送信遅延時間
(SLT)
に相当しています。
MPInside表のb_Bcast列での大きな時間は、
Bcastが実際に開始される前の同期待ち時間に相当しています。
完璧なインターコネクトモードでのRecvとBcastの0でない時間は、送信遅延時間(SLT)
や一括待ち時間で示したの
と同様に、RecvやBcastの相手のひとつもしくは複数のランクが追いつくのを待っている時間とほぼ同等ですが、計算
区間ごとに転送時間なしだとランク同士が同期しやすくなるので短くなることもあります。
上記3つの症状は、計算時間でも同様の異常が見られた場合、
ロードバランスの不均衡に起因していると推定されま
す。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 17
W H I T E PA P E R
4.6 ロードバランス対策
MPInsideのデータをもとに、領域分割を分析またはLSTCで対策して、
ロードバランスの不均衡を低減できます。改善
できない場合、MPI_Ibcast(MPT 2.10以降)
またはMPI_Irecvを使って計算と通信を重複させたり、
より多くのデー
タがないと作業を実行できなくなるまでブロックを遅らせたりすることが役立ちます。IbcastやIrecvからの要求に対す
る周期的なMPI_Test*で、
さらに重複させることができます。
SGI MPIには、
要求があると一回進む独立した進捗スレッ
ドがあります。
MPI_Testは進捗エンジンを
「キック」
して完了を再度確認させます。
4.7 Car2car Topcrunchベンチマークのケーススタディ
4.7.1 基本プロファイリング
SGI MPInsideを実行し、
基本プロファイリングを取得して、
計算時間とMPIコールに関係する1,992個のMPIプロセス
全体にわたって、
積層図を作成しました。
図8のY軸は、
ランク0から1,991の全範囲に対する経過時間を表しています。
薄紫、青、濃紺の帯は、全てのランクにわたって、実行時間の約半分弱が計算時間であり、通信時間の大部分がRecv
コールとBcastコールに費やされることを示しています。
図 8: mpinside_basic_f2501_stats.xls
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 18
W H I T E PA P E R
4.7.2 一括持ちプロファイリング
図9は、一括待ちモードを有効にすることで、前のグラフのBcastコールが、実際にはランク同期のためにbarrierのよう
な時間で構成されることを示しており、
Bcasts自身はその時間の1%です。
図 9: mpinside_collectivewait_f2501_stats.xls
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 19
W H I T E PA P E R
4.7.3 送信遅延時間プロファイリング
図10は、送信遅延時間モードを有効にしても、Recv時間に影響がなく、w_MPI_Recv部分を大きく減少させないこと
を示しており、
送信遅延時間の遅延が大きくないことを示したものです。
図 10: mpinside_slt_f2501_stats.xls
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 20
W H I T E PA P E R
4.7.4 完璧なインターコネクトプロファイリング
図11は、
同期待ち時間で構成されるb_Bcastが、
完璧なインターコネクトでもなくならないことを示しており、
Bcastを黄
色で示しています。
対照的に、
完璧なインターコネクトのモデルではRecv時間はゼロになって消えています。
図 11: mpinside_perfect_f2501_stats.xls
4.8 SGI MPIplace プロファイルに基づいたMPI用配置ツール
SGI MPIplaceは、
ノード間とスイッチ間の転送コストを最小限に抑えるために、MPInsideで得られた通信シグネチャ
のランク対ランクのマトリックスに基づいて、
ランクをノードの異なるシーケンスにマッピングすることにより、
実行速度を
向上させることができます。
ノードリストに対するランクの並べ替えを定義したファイルが生成され、以降のアプリケー
ション実行で使用できます。MPIplaceは、
ランク対ランクのメトリックスで表されたシステムのInfiniBandトポロジー情
報とデータを、Scotchが解釈できる形式に変換します。Scotchは、真の最適解が計算で求め難い場合(NP完全)、疎
に関係した問題のクラスに発見的方法を適用できるライブラリで、
静的マッピング、
グラフ分割、
およびメッシュの詳細化
から、最適に近いマップ、
パーティションまたはメッシュを取得できます。
その後、MPIplaceは、Scotchに実装された再
帰的2分割アルゴリズムを使用して、
観測した転送パターンの観点で、
最適に近いランク対ノードのマッピングを見つけ
出します。
[11]
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 21
W H I T E PA P E R
4.8.1 概要
A. 性能ベースラインに対してMPT有りでアプリケーションを実行します。
送メトリックスを生成するためにMPINSIDE_MATRICES=PLA:-B:Sと指定し、MPTとMPInside有り
B. 転
でアプリケーションを実行します。
C. ス
テップBのメトリックスとノードリストを使用してMPIplaceを実行し、
ノードリストと共にランクの並べ換えを
生成します。例えば、
ノードリストがn001、n002、n003で、24コアの多重度の場合、以下のように記録されま
す。
n003
n002
n002
n002
n002
n002
n002
n002
n003
n003
n003
n003
[...]
D. D. MPTとランクの並べ替え有りで再度アプリケーションを実行し、性能を向上させます。従って、
mpirunコマンドでは、並べ替えられたノードリストを使用することになります。
mpirun -v n003 1, n002 1, n002 1, n002 1,
n002 1, n002 1, n002 1, n002 1, n003 1, n003 1, n003 1, n003 1, n003 1, n003 1,
n003 1, n003 1, n003 1, n003 1, n003 1, n003 1, n003 1, n003 1, n003 1, n003 1,
n001 1, n001 1, n001 1, n001 1, n001 1, n001 1, n001 1, n001 1, n001 1, n002 1,
n002 1, n002 1, n002 1, n002 1, n002 1, n002 1, n002 1, n003 1, n003 1, n003 1,
n003 1, n003 1, n003 1, n003 1, n001 1, n001 1, n001 1, n001 1, n001 1, n001 1,
n001 1, n001 1, n001 1, n001 1, n001 1, n001 1, n001 1, n001 1, n001 1, n002 1,
n002 1, n002 1, n002 1, n002 1, n002 1, n002 1, n002 1, n002 1
omplace -vv -c 0-23
mpp971_s_R3.2.1_Intel_linux86-64_sgimpt i=neon.refined.rev01.k ncpu=1 memory=40m p=pfile
memory2=4m
修正されたノードに対するランクのマッピングが表示されます。
wrank grank lrank pinning
node name
cpuid
0
0
0
yes
n003
0
9
2
2
yes
n003
2
8
1
10
11
12
13
14
15
16
17
3
4
5
6
7
8
9
10
1
3
4
5
6
7
8
9
10
yes
yes
yes
yes
yes
yes
yes
yes
yes
n003
n003
n003
n003
n003
n003
n003
n003
n003
1
3
4
5
6
7
8
9
10
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 22
W H I T E PA P E R
あるいは、
分かりやすくするために並べ替えると以下のようになります。
wrank grank lrank pinning
node name
cpuid
0
0
0
yes
n003
0
2
25
1
yes
n002
1
1
24
3
26
4
27
5
28
6
29
7
30
8
1
9
4.8.2 2
0
2
3
4
5
6
1
2
yes
yes
yes
yes
yes
yes
yes
yes
n002
n002
n002
n002
n002
n002
n003
n003
0
2
3
4
5
6
1
2
Car2Car Topcrunch ベンチマークのケーススタディ
24コア 83ノードにおいて1,992ランクを使用し、
モデルを下記の条件で実行しました。
A. 性能ベースラインに対してMPT 2.12ベータ版で実行されたLS-DYNA経過時間: 3,222秒(0時間53分
42秒)。239,981サイクル
B. メトリックス生成用、MPT 2.12ベータ版、MPInside3.6.6ベータ版で実行されたLS-DYNA経過時間:
3,492秒(0時間58分12秒)。239,981サイクル
C. 並べ替えファイル生成のためのmpiplace
$ head mpiplace_perm
936
937
1560
1561
1562
1563
1564
1565
1566
1567
[...]
Elapsed: 56.18 sec.
D. mpiplace_permとmpirun有りでMPT 2.12ベータ版で実行された、MPInside無しのLS-DYNA経過
時間: 2,992秒(0時間49分52秒)。239,981サイクル
これは7%の向上です。
この7%の性能改善は、領域分割によるロードバランスのチューニングを加味したものになります。
ベースラインの
実行に領域分割を使用しない場合は、MPInsideとmpiplaceを用いた性能向上は、7%に対して10%に上昇しま
す。
5.0 まとめ
陽解法ソルバをMPI分析ツールSGI MPInsideを使って調査し、通常の通信プロファイリングの特徴を分析して
「オン
ザフライ」
モデリングを行い、
最新のインテル® Xeon® CPU、
インターコネクトとミドルウェア、
MPIライブラリ、
および実
装したLS-DYNAソースコードで利用できる様々なアップグレードの潜在的な性能向上を予測しました。
ランク間転送
時間を最小化するために、
プロファイルに基づくmpiplaceコンポーネントを実行して、
この分野での利点がさっそくもた
らされていることを示し、
今後さらなる取り組みが期待されます。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 23
W H I T E PA P E R
6.0 参考文献
1. LS-DYNA®, KEYWORD USER’S MANUAL, VOLUME I, Appendix O, August 2012, Version
971 R6.1.0.
2. SGI. Linux Application Tuning Guide. Silicon Graphics International, California, 2009.
3. Yih-Yih Lin and Jason Wang. “Performance of the Hybrid LS-DYNA on Crash Simulation
with the Multicore Architecture”. In 7th European LS-DYNA Conference, 2009.
4. Dr. C. Cleve Ashcraft, Roger G. Grimes, and Dr. Robert F. Lucas. “A Study of LS-DYNA
Implicit Performance in MPP”. In Proceedings of 7th European LS-DYNA Conference,
Austria, 2009.
5. Dr. C. Cleve Ashcraft, Roger G. Grimes, and Dr. Robert F. Lucas. “A Study of LS-DYNA
Implicit Performance in MPP (Update)”, 2009.
6. Olivier Schreiber, Michael Raymond, Srinivas Kodiyalam, LS-DYNA ® Performance
Improvements with Multi-Rail MPI on SGI ® Altix ® ICE cluster, 10th International LSDYNA® Users Conference, June 2008.
7. Olivier Schreiber, Scott Shaw, Brian Thatch, and Bill Tang. “LS-DYNA Implicit Hybrid
Technology on Advanced SGI Architectures”. July 2010.
8. Olivier Schreiber, Tony DeVarco, Scott Shaw and Suri Bala, ‘Matching LS-DYNA Explicit,
Implicit, Hybrid technologies with SGI architectures’ In 12th International LS-DYNA
Conference, May 2012.
9. Leveraging LS-DYNA Explicit, Implicit, Hybrid technologies with SGI hardware, Cyclone
Cloud Bursting and d3VIEW, Olivier Schreiber*, Tony DeVarco*, Scott Shaw* and Suri
Bala† *SGI, †LSTC, 9th European Users Conference, 3-4th June 2013-Manchester, UK.
10. Daniel Thomas, Jean-Pierre Panziera, John Baron: MPInside: a performance analysis and
diagnostic tool for MPI applications. WOSP/SIPEW 2010: 79-86, ACM, (2010) http://www.sgi.
com/products/software/sps.html http://techpubs.sgi.com/library/manuals/5000/007-5780-002/
pdf/007-5780-002.pdf.
11. Experimental Analysis of the Dual Recursive Bipartitioning Algorithm for Static Mapping.
Research report RR-1138-96, LaBRI, September 1996. F. Pellegrini and J. Roman. http://
www.labri.fr/perso/pelegrin/scotch.
〒150-6031
東京都渋谷区恵比寿4-20-3 恵比寿ガーデンプレイスタワー31階
http://www.sgi.co.jp
本
西 日 本 支
中
部
支
つ く ば 営 業
東 北 営 業
広 島 営 業
社
社
社
所
所
所
TEL
TEL
TEL
TEL
TEL
TEL
:
:
:
:
:
:
03-5488-1811(大代表)FAX:03-5420-7201
06-6479-3918( 代表 ) FAX : 06-6479-3919
0565-35-2561( 代表 ) FAX : 0565-35-2189
029-858-1551( 代表 ) FAX : 029-858-1071
022-221-2301( 代表 ) FAX : 022-221-2304
082-258-5037( 代表 ) FAX : 082-258-5038
©2015 SGI Japan, Ltd. All Rights Reserved. 仕様は予告なしに変更される場合があります。
SGI、ICE、UV、Rackable、NUMAlink、Performance Suite、Accelerate、ProPack、
OpenMP および SGI のロゴは Silicon Graphics International Corp. または、アメリカ合衆国
および / またはその他の国の子 会 社の商 標または登 録 商 標です。LS-DYNA は Livermore
Software Technology Corp. の登録商標です。インテル、Intel、Xeon は、アメリカ合衆国お
よび / またはその他の国における Intel Corporation の登録商標です。その他の会社名、製品名
は、各社の登録商標または商標です。(11/2015)
日本SGIは地球環境に優しい企業へ
このカタログは、環境に配慮した植林木を使用しております。
日本SGIは様々なソリューションの提供を通じてお客様の製品の開発・
設計の過程において発生する紙や燃料等の資源消費量やCO2排出量
の低減を行い、省資源、省エネルギー化に貢献しています。
Characterizing LS-DYNA® Performance on SGI® Systems Using SGI MPInside MPI Profiling Tool 24