ハイパースレッディングの並列化への影響

13
1/13 ハイパースレッディングの 並列化効率への影響 東京大学物性研究所 渡辺宙志

Upload: kaityo256

Post on 04-Jun-2015

3.425 views

Category:

Technology


6 download

DESCRIPTION

8000コア規模の計算実行時に、ハイパースレッディングが並列化効率に与える影響を調べた。

TRANSCRIPT

Page 1: ハイパースレッディングの並列化への影響

1/13

ハイパースレッディングの 並列化効率への影響

東京大学物性研究所 渡辺宙志

Page 2: ハイパースレッディングの並列化への影響

2/13

400万粒子/ノードに固定し、ノード数を増やすウィークスケーリング 1000ステップ計算するのにかかった時間をプロット @物性研 SGI Altix ICE 8400EX

観測事実 (1/2)

オーバーヘッド

Page 3: ハイパースレッディングの並列化への影響

3/13 観測事実 (2/2)

(1) 粒度が疎、つまり計算時間に比して通信時間が相当短いはずなのに、ウィークスケーリングで高並列時に性能が劣化する

(2) 力の計算時間を測定してみると、通信を含まないはずなのにプロセスごとに時間がばらついている

(3) 時間のばらつきはプロセス数を増やすと大きくなり、全体同期により性能劣化を招いている

(4) まったく同じ計算をしても、遅いプロセスは毎回異なる

システムノイズ(OSジッタ)だろうか? しかしOSジッタにしては影響が大きすぎる

Page 4: ハイパースレッディングの並列化への影響

4/13 調べたいこと

(1) プロセスの実行時間の揺らぎを精密に調べる (2) ハイパースレッディング(HT) の並列性能への影響を調べる

Page 5: ハイパースレッディングの並列化への影響

5/13

HTなし HTあり

HTなしでは、物理コアひとつにMPIプロセス一つをバインドする。 HTありでは、物理コアが二つの論理コアになるが、 物理コア一つにMPIプロセスを一つバインド。

計算条件 (1/2)

HTの有無以外の計算条件は変えない

Page 6: ハイパースレッディングの並列化への影響

6/13 計算条件 (2/2)

東京大学物性研究所 システムB SGI Altix ICE 8400EX CPU: Intel Xeon X5570 2.93GHz 4コア/CPU、2CPU/ノード

計算資源:

計算条件: カットオフ2.5σのLennard-Jones粒子系 時間ステップ 0.001、数密度: 0.5 粒子数: 50万粒子/コア、 400万粒子/ノード Flat-MPIによる領域分割 計算コード:http://mdacp.sourceforge.net/ 測定日:2011年6月

※ HT無効の計算は1ノードから1024ノードまで数点を、   HTを有効にした計算は、1024ノード、8192コアの一点のみを計算

Page 7: ハイパースレッディングの並列化への影響

7/13

粒子をメッシュに登録

隣接粒子リストを作成

力の計算

位置と速度を更新

リストはまだ有効か?

No

Yes

領域からはみ出した粒子の処理

粒子の位置情報を更新

MPI_Sendrecv

MPI_Sendrecv

MPI_Allreduce

計算アルゴリズム

※通信は全てブロッキング通信

Page 8: ハイパースレッディングの並列化への影響

8/13

粒子をメッシュに登録

隣接粒子リストを作成

力の計算

位置と速度を更新

リストはまだ有効か?

No

Yes

領域からはみ出した粒子の処理

粒子の位置情報を更新

測定する場所

計算全体: このループを 1000ステップ積算

力の計算: ここだけをステップごと、 プロセスごとに計測

※計算全体は並列化効率の定義のため、力の計算は揺らぎの測定のために調べる

Page 9: ハイパースレッディングの並列化への影響

9/13 Hyper-Threadingの影響

HTを有効にするだけで並列化効率が大きく改善(66%→90%)

Page 10: ハイパースレッディングの並列化への影響

10/13

あるステップにおける、プロセスごとの「力の計算」にかかった時間の累積確率分布

ほとんどのプロセスの揺らぎはガウス分布に従うが、飛び抜けて遅い連中がいる → システムからのノイズ?

計算時間の揺らぎ (1/3)

Page 11: ハイパースレッディングの並列化への影響

11/13

誤差関数でフィットしてみる

特徴的な時間「τ」 ガウス分布の標準偏差に相当

HTなし:平均時間 143.785 [ms] 標準偏差 0.29 [ms] HTあり:平均時間 143.940 [ms] 標準偏差 0.36 [ms]

一番遅かったプロセス: HTなし: 221.543 [ms] HTあり: 164.009 [ms]

平均からのずれが256σ

統計情報からはHTなしの方が優れている(平均も揺らぎも小さい)が・・・

一番遅いプロセスの実行時間がHTにより大きく改善された

計算時間の揺らぎ (2/3)

Page 12: ハイパースレッディングの並列化への影響

12/13 計算時間の揺らぎ (3/3)

各ステップでもっとも計算が遅かったランク番号 (HTあり)

ロードインバランスのせいではない (同じペアリストを使い回す間は粒子ペア数が固定であるにも関わらず、毎ステップ一番遅いプロセスが違うから) 何か構造がありそう。ラウンドロビンで何かやってる?

Page 13: ハイパースレッディングの並列化への影響

13/13 まとめのようなもの

(1) Hyper-Threading Technologyを有効にすることで 並列化効率が大きく向上→HTによるスムーズなスレッドの切り替えが要因?

(2) 揺らぐ時間は80ミリ秒といったオーダー   → OSジッタとしては大きすぎる (3) 通信を含まないはずの領域を測定しているのに、計算時間が大きく揺らぐ

  →通信の後処理が割り込んでいる?