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

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) 停止→起動