• 検索結果がありません。

PowerPoint Presentation

N/A
N/A
Protected

Academic year: 2021

シェア "PowerPoint Presentation"

Copied!
36
0
0

読み込み中.... (全文を見る)

全文

(1)

OpenFOAMを用いた

超大規模計算モデル作成とその性能の評価

清水建設 株式会社

PHAM VAN PHUC

(2)

「京」での

OpenFOAMに関する取組み

1回 OpenFOAMワークショップ (2013)

コード移植、

10億格子計算の壁・解決策

(プリ・ポスト)

第2回

OpenFOAMワークショップ(2014)

1万並列計算の壁・解決策

(MPIプラットフォーム)

第3回

OpenFOAMワークショップ (2015)

超並列・超大規模解析

(10万並列、 1千億格子)

第4回

OpenFOAMワークショップ(2016)

超大規模ポスト処理

(1千億格子)

コードの

課題・

改良策

改良コード

の超大規模

解析・ポスト処理

超大規模プリ処理

+最新改良・性能分析

2回CAEワークショップ(本日)

超大規模計算モデル作成とその性能の評価

(3)

内容

超大規模のプリ処理

(フック)

メッシュの作り方

コードの最新改良と性能評価

(内山)

OpenFOAMのthread 並列化

3

(4)

超大規模のプリ処理

(5)

プリ・ポスト処理

シリアル処理の限界

データの分割・結合には時間・手間は非常にかかる

数億格子規模でほぼ限界

モデル作成(プリ処理)

シミュレーション

出力・可視化

Computational domain in a single processor

Computational domain, results in a single processor

×

10億格子データ

1TBメモリの利用

京のプリ・

ポスト処理

PC: 1TB

初期化

領域分割

データ結合

ポスト処理

×

(6)

プリ・ポスト処理

分散処理の重要性

モデルの作成(プリ)

シミュレーション

データ出力・可視化

初期化・領域分割(分散)

・ロードバランス

ポスト処理

画像処理

データ処理等

1回 OpenFOAM

ワークショップ

(2013)

本日、紹介

第4回

OpenFOAM

ワークショップ(

2016)

(7)

大規模プリ処理手法の分類

1.細分化の手法

表面の比較的大きいモデル

(粗い格子で計算格子を作成できる)

2.分散処理の手法

独立性のあるモデル(小規模の複数ケースの計算)

3.マルチカラー処理の手法

少ない計算リソースのある場合

7

(8)

1.細分化の手法

手法のコンセプト

1)数千万の粗い格子で

のメッシュの作成

(blockMesh/SnappyHexMesh

/市販メッシュ作成ソフト)

2)領域分割

decomposePar)

3)計算格子の細分化

(refineHexMesh/refineMesh)

対象計算モデル

processor0

processor1

processorN

細分化

細分化

細分化

細分化

・ロードバランス

大規模計算モデル

(数十~数百億格子)

(9)
(10)

1) 1千万格子の作成 (市販メッシャー)

1.細分化の手法

4)64億格子の計算モデル

3)計算格子の細分化

(refineHexMesh/refineMesh)

風洞丸ごとの再現計算事例

(イメージ図)

2)領域分割

(decomposePar: ロードバランス)

(11)

1.細分化の手法

大規模計算(

64億格子)

(12)

1.細分化の手法

格子 A: 1.4億格子

格子 B: 11億格子

Δ=0.5mm=D/170

Δ=0.25mm=D/340

D

D

3)計算格子の細分化

30m

2.

5m

Target Building

Roughness Blocks

Spires

U=15m/s

No-slip wall

Outlet

boundary

複雑形状建物の計算事例

1) SnappyHexMeshで

のメッシュ作成

2) 領域分割(6144領域:ロードバランス)

(13)

1.細分化の手法

30m

2.5m

Spires

Roughness Blocks

Target Building

U=15m/s

No-slip wall

Outlet

boundary

風圧

速度テンソルの第2不変量 の等値面

(Q=300,000)

複雑形状建物の計算事例

(14)

2.分散処理の手法

手法のコンセプト

(独立性のある)対象計算モデル

(15)

ターンテーブル

(16)

2.分散処理の手法

総格子数 : 1.4億 x 36風向 ~ 50億格子

「京」コンピュータ

並列実行

(27,648CPUの利用)

θ=0°

θ=10°

θ=20°

θ=30°

θ=40°

θ=50°

θ=60°

θ=70°

θ=80°

θ=90°

θ=100°

θ=110°

θ=120°

θ=130°

θ=140°

θ=150°

θ=160°

θ=170°

θ=180°

θ=190°

θ=200°

θ=210°

θ=220°

θ=230°

θ=240°

θ=250°

θ=260°

θ=270°

θ=280°

θ=290°

θ=300°

θ=310°

θ=320°

θ=330°

θ=340°

θ=350°

36風向ケースの計算格子

36風向の風洞実験の再現

独立性のある計算モデル

(17)

2.分散処理の手法

36風向ケースの並列実行

θ=0°

θ=80°

θ=90°

θ=170°

θ=180°

θ=260°

θ=270°

θ=350°

「京」コンピュータ

「京」コンピュータ

並列実行

(27,648CPUの利用)

36風向の風洞実験の再現

独立性のある計算モデル

(18)

2.分散処理の手法

風圧分布の算出

θ=0° θ=10° θ=20° θ=30° θ=40° θ=50° θ=60° θ=70° θ=80° θ=90° θ=100° θ=110° θ=120° θ=130° θ=140° θ=150° θ=160° θ=170° θ=180° θ=190° θ=200° θ=210° θ=220° θ=230° θ=240° θ=250° θ=260° θ=270° θ=280° θ=290° θ=300° θ=310° θ=320° θ=330° θ=340° θ=350°

「京」コンピュータ

「京」コンピュータ

36風向ケースの並列実行

36風向の風洞実験の再現

独立性のある計算モデル

並列実行

(27,648CPUの利用)

(19)

2.分散処理の手法

負側ピーク外圧係数

正側ピーク外圧係数

Cal.

Exp.

実験結果と同等な精度を確認

全風向における

ピーク外圧係数

「京」コンピュータ

「京」コンピュータ

並列実行

(27,648CPUの利用)

36風向の風洞実験の再現

独立性のある計算モデル

(20)

3.マルチカラー処理の手法

9並列処理、Red-Blackの2色処理法

少ない計算リソースのある場合の対応

(既存ツールの改良)

(21)

3.マルチカラー処理の手法

8×8=64領域

4色で色付け(

4ステップで、順次に処理

独立で

メッシュを作成

空いている

少ない計算リソースの利用

全領域のメッシュ作成完了

少ない計算リソースのある場合の対応

(既存ツールの改良)

手法のコンセプト

(22)

3.マルチカラー処理の手法

22

1km

1km

(23)

30km

2km

AIJ(Ⅰ)の乱れの無い

勾配流 (

U

10

=36m/s)

3.マルチカラー処理の手法

Slip

Slip

計算事例

(24)

3.マルチカラー処理の手法

24

垂直+回転運動

計算格子の作成

Tacoma

Narrows

Bridge

(25)

3.マルチカラー処理の手法

25

(26)

内容

超大規模のプリ処理

(フック)

メッシュの作り方

コードの最新改良と性能評価

(内山)

OpenFOAMのthread 並列化

26

Xeon-phi上での非構造格子のthread 並列化

(27)

OpenFOAM本体の高速化とスレッド並列化

入り組んだ

C++コードの展開とチューニング(2倍高速化)

連立方程式解法の変更,改良

・流速:

BiCG → Additive Schwartzに変更(演算量1/2)

・圧力:

AMG-CG → CG法のアルゴリズム改変(安定化)

・独自の

block multicolorでILU smootherをスレッド並列化

連立方程式以外の部分も細部まで並列化

loopタイプは数種類しかない ⇒ 数種類の方法を考えれば良い

・行列イメージで,バンド幅の狭い問題と広い問題で手法を開発

・各境界領域内も再帰参照しないようにリオーダリング

27

本報告では

thread並列化まで

⇒ストロングスケールで

40倍以上の性能(64スレッド)

対象コード:OpenFOAM-1606+ (pisoFoam)

使用する計算機:

Oakforest-PACS(東大・筑波)

(28)

格子のオーダリング(連立方程式解法)

28

例:グループ数:(32, 4, 2)

格子の99%以上がlevel=0, 1に含まれる

係数行列の非零項の分布イメージ

連成項

AMG法のCoarse Grid

にも適用

連成項

METISでグラフ分割

連成項を後ろに回す

対角ブロック内と連成

項は独立した番号付け

連立方程式解法前後で

並び替えを行う

(29)

良く現れるループの並列化

良く現れるループの形:faceの数で回るループ

29

バンド幅が狭い場合

for(label fi=0; fi<nFaces; fi++) {

label i=owner[fi], j=neighbor[fi];

scalar tmp = (some computation);

a[

i

] += tmp;

a[

j

] += tmp;

}

バンド幅が広い場合

行列イメージだと,

非対角項に関する計算を行って,

非対角項の位置

iと jに対応する2つの項に加算

level0

level1

level2

work[ ]

a[ ]

(30)

良く現れるループの並列化

境界領域

30

for(label ipt=0; ipt<nPatches; ipt++) {

const LabelUList& faceCells = boundary[ipt].faceCells(); for(label fi=0; fi<patchSizes[ipt]; fi++) {

label i=faceCells[ipt][fi]; scalar tmp = (some computation); a[i] += tmp;

} }

for(label ipt=0; ipt<nPatches; ipt++) {

const LabelUList& faceCells = boundary[ipt].faceCells(); const label fi1 = cp1[ipt].fi1;

const label * __restrict__ old1 = cp1[ipt].old1; #pragma omp for

#pragma ivdep

for (label ffi=0; ffi<fi1; ffi++) { label fi = old1[ffi];

label i = faceCells[fi]; scalar tmp = (some computation); a[i] += tmp;

}

#pragma omp single

for (label ffi=fi1; ffi<patchSizes[ipt]; ffi++) { label fi = old1[ffi];

label i = faceCells[fi]; scalar tmp = (some computation); a[i] += tmp; } }

再帰参照しない

前loopの残り

並び替えて,

再帰参照されるものを後ろに回せば良い

再帰参照される

境界の数

faceの数

(31)

計算例:高層ビル:バンド幅狭い

圧力の修正回数=3

31

風速36m/s

t=5.0-6.0 s, Δt=0.001 s

1

(32)

計算例:高層ビル:バンド幅狭い

32

計算時間(5 s – 6 s)

高速化率

others(連立方程式解法以外)が

40%程度

0 1 104 2 104 3 104 4 104 5 104 6 104 7 104 8 104 1 2 4 6 8 12 16 24 32 48 64 AdditiveSchwartz GAMG_CG others elapsed time (s) threads 0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70 ideal all AdditiveSchwartz GAMG_CG others 高速化率 threads

45倍

連立方程式解法だけ並列化や高速化をしても駄目

1.6 s/step

Xeon-phi 7250 @ 1.4GHz

MCDRAM 16GBをcacheとして使用

バンド幅が狭い場合:436ブロック(最少ブロックサイズ=3000)

(33)

計算例:

motorBike:バンド幅広い

.

33

風速20m/s

t=0.2-0.25 s, Δt=0.00005 s

(34)

計算例:

motorBike :バンド幅広い

34

移植直後の高速化率

改良後の高速化率

others(連立方程式解法以外)が

40%程度

連立方程式解法だけ並列化や高速化しても駄目

0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70 ideal all AdditiveSchwartz GAMG_CG others 高速化率 threads

40倍

0.8 s/step

Xeon-phi 7250 @ 1.4GHz

MCDRAM 16GBをcacheとして使用

0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70 ideal all AdditiveSchwartz GAMG_CG others 高速化率 threads

変化無し

バンド幅が狭い場合の方法:117ブロックしかない

バンド幅が広い場合の方法:各256グループ(level=0,1)

(35)

Xeon(Broadwell)で計算してみたが…

35

高速化率:高層建物

高速化率:motorBike

Xeon E5-2687W v4 @ 3.00GHz

2 CPU, 12 core/CPU, 30MB Cache

0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16 ideal all AdditiveSchwartz GAMG_CG others 高速化率 threads

4.9倍

スレッドを増やしても性能が上がりにくい

・メモリー帯域が足りない?

・cache memoryが競合?

0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16 ideal all AdditiveSchwartz GAMG_CG others 高速化率 threads

5.3倍

(36)

結語

Oakforest-PACS上でpisoFoamのthread並列化を行った

■連立方程式解法以外の部分も細部に渡って

thread並列化

■細部まで並列化し,ストロングスケールで

40倍以上の性能

課題

SIMD化

36

参照

関連したドキュメント

粗大・不燃・資源化施設の整備状況 施設整備状況は、表−4の「多摩地域の粗大・不燃・資源化施設の現状」の

固体廃棄物の処理・処分方策とその安全性に関する技術的な見通し.. ©Nuclear Damage Compensation and Decommissioning Facilitation

  他人か ら産業廃棄物 の処理 (収集運搬、処 分)の 委託を 受けて 、その

原子炉建屋から採取された試料は、解体廃棄物の汚染状態の把握、発生量(体 積、質量)や放射能量の推定、インベントリの評価を行う上で重要である。 今回、 1

り分けることを通して,訴訟事件を計画的に処理し,訴訟の迅速化および低

処理処分の流れ図(図 1-1 及び図 1-2)の各項目の処理量は、産業廃棄物・特別管理産業廃 棄物処理計画実施状況報告書(平成

分別 保管 収集 運搬 再生 処分 排出事業者

機器名称 状態の変化 操作場所 操作方法 非常用ガス処理系湿分除去装置(A) 停止→起動 中央制御室 スイッチ操作 非常用ガス処理系湿分除去装置(B) 停止→起動