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

圧縮性流体の数値解析(工学)

N/A
N/A
Protected

Academic year: 2021

シェア "圧縮性流体の数値解析(工学)"

Copied!
17
0
0

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

全文

(1)

メニーコアCPUによ る高性能計算

高木 亮治

宇宙航空研究開発機構

宇宙科学研究所

(2)

圧縮性流体の数値解析(工学)

偏微分方程式の離散化

空間:計算格子

時間:ステップ

多数の繰り返し計算

実機解析

複雑物理、複雑形状

大規模・高性能計算

イプシロンロケット射場の音響解析(堤他)

(3)

より複雑な現象をより正確に解析

大規模解析の必要性

提供:神戸大坪倉教授

(4)

ロケットエンジン燃焼器の解析

インジェクタの本数:1本→本当は800~1,000本

火炎の計算:モデル(数ナノの厚さ)→詳細反応

格子点:8億点(~10

9

計算性能:80TFLOPS(Tela=10

12

、1兆)

計算時間:2週間→もっと速く(パラスタしたい)

大規模解析の必要性

最少格子幅:50-100ミクロン(LES), 数ナノ(火炎構造の解像)

Core i7 (Broadwell):0.5~1TFLOPS

https://www.quora.com/How-would-you-combine- liquid-hydrogen-and-oxygen-to-form-rocket-propellant

(5)

CPUの速度は10年で約100倍(20年で1万倍)

並列数の増加:ノード、コア、SIMD、…

メニーコアCPUのコア数

富士通PRIMEHPC FX100(SPARC64

TM

XIfx):32コア

Intel Xeon Phi(KNL;KNight

Landing):64~72コア

NVIDIA Tesla P100:3,584コア

並列処理:仕事をみんなで分担して高速化

分担できるものと分担できないもの

-

分担できないものは高速化できない

数人で分担できても、数十、数百、…、数百万人で分担で きるか?

-

「京」では8万ノード(64万コア)で分担

並列プログラムの作成

-

MPI, OpenMP, pthread, cuda, OpenACC, …

H/Wのトレンド:メニーコア

(6)

H/Wのトレンド:B/Fの低下

性能のバランス:演算、メモリ、ネットワーク

H/WとS/Wの相性にも依存

CPUのByte/FLOPは長期減少傾向

流体解析は高B/Fを要求

アプリ側での対応も必要

-

アプリのB/Fを下げる

-

CPUのメモリバンド幅を最大限活用する

B/F of CPU 4 1 0.5 0.1

B/F of program

1 100% 100% 50% 10%

4 100% 25% 12.5% 2.5%

24 16.7% 4.2% 2.1% 0.42%

Systems Vector computers FX1 K-computer FX100 (L1$) (L2$)

a = b + c → B/F=24

・データ:(2+1)×8=24 [Bytes]

・演算:1

技術トレンド

(7)

目的

データ処理(流体解析)の高速化を実現したい が、近年のCPUは簡単には性能が出せない。

流体解析を事例として、CPUの性能(メモリバ ンド幅)を最大限活用するための方策としてCP U特性の把握とそれを活用する手法について検 討を行った。

単なるプログラムの高速化チューニングとは逆

最新のメニーコアCPUのメモリ特性を紹介

SPARC64

TM

XIfx@PRIMEHPC FX100

Intel Xeon Phi (KNL)

(8)

STREAM TRIAD とその拡張

do n=1,nmax

a(n) = b(n) + S * c(n)

enddo

(9)

STREAM TRIAD

0 200 400 600 800 1000 1200 1400

0.001 0.01 0.1 1 10 100 1000 10000

Memory Performance [GB/s]

Memory size [GB]

t64 t64(wo) p2t32 p4t16 p32t2 p64t1 p64t1(wo) L2$ (32MB) 434 GB/s

専用オプションでメモリ性能は向上するがL2$性能が低下

XFILL@FX100, opt-streaming-stores@KNL

HMC (Hybrid Memory Cube)の特性を改善

FX100 KNL

オプションの効果

オプションの効果 オプション

オプション の副作用

の副作用

(10)

実アプリのデータ・ループ構造へ

マルチブロック(構造体)、多次元配列、多重ループ、袖(Alignment)

MB-TRIAD:構造体

MB-TRIAD3D:構造体、多次元配列、多重ループ、袖

MB-TRIAD MB-TRIAD3D

type blkDataType

real(8), dimension(:), allocatable :: a,b,c end type blkDataType

type blkDataType

real(8), dimension(:,:,:), allocatable :: a,b,c end type blkDataType

type(blkDataType), dimension(:), allocatable :: blk do nb=1,nbmax

call kernel(blk(nb)%a,blk(nb)%b,blk(nb)%c,…) enddo

subroutine kernel(a,b,c,…) real(8), dimension(:) :: a,b,c do n

a(n) = b(n) + scalar*c(n) enddo

subroutine kernel(a,b,c,…) real(8), dimension(:,:,:) :: a,b,c do k; do j; do i;

a(i,j,k) = b(i,j,k) + scalar*c(i,j,k) enddo; enddo; enddo

←構造体ではなく配列渡し

(コンパイラの問題)

(11)

MB-TRIAD, MB-TRIAD3D

0 20 40 60 80 100 120 140 160

0 50 100 150 200 250 300

Memory Performance [GB/s]

grid_size for 3D / loop_length1/3 for TRIAD MB-TRIAD3D (ovlp=0) MB-TRIAD3D (ovlp=2) MB-TRIAD

FX100の結果

構造体はOK

キャッシュの影響を排除

性能劣化

ループ長が短い:XFILLが効

かない 多次元配列

袖の影響もあり

0 50 100 150 200 250 300 350 400

100 1000 10000 100000 1x106 1x107 1x108 0.0024 0.024 0.24 2.4 24 240 2400

Memory Performance [GB/s]

loop size memory size [MB]

Static Allocatable

Pointer L2-cache

メモリ性能

通常のTRIAD

MB-TRIAD

MB-TRIAD3D

do k=1,100 do j=1,100 do i=1,100

a(i,j,k) = b(i,j,k)+…

enddo; enddo; enddo do l=1,100*100*100

a(l) = b(l)+ … enddo

(12)

1D化(ループ長の増大)

program array

main do nb=1,nbmax

call kernel(blk(nb)%a,blk(nb)%b,blk(nb)%c,…) enddd

MB-TRIAD

subroutine kernel(a,b,c,…) real(8), dimension(:) :: a,b,c do n a(n) = b(n) + scalar*c(n) enddo

1次元配列 blk%a(:)

MB-TRIAD3D

subroutine kernel(a,b,c,…) real(8), dimension(:,:,:) :: a,b,c do k; do j; do i;

a(i,j,k) = b(i,j,k) + scalar*c(i,j,k)

enddo; enddo; enddo 多次元配列

blk%a(:,:,:) MB-TRIAD1D

subroutine kernel(a,b,c,…) real(8), dimension(*) :: a,b,c do l a(l) = b(l) + scalar*c(l)

enddo

(13)

MB-TRIAD3D/1D

0 50 100 150 200 250 300 350

0 50 100 150 200 250 300 350 400 450 500

Memory Performance [GB/s]

loop size

MB-TRIAD1D MB-TRIAD3D 315 GB/s (FX100)

0 50 100 150 200 250 300 350 400 450

0 50 100 150 200 250 300 350 400 450 500

Memory Performance [GB/s]

loop size

MB-TRIAD1D MB-TRIAD3D 434 GB/s (KNL)

1D化により高速化(FX100、KNLとも)

KNLの立ち上がりが悪い(実際は短ループを利用)

FX100

MB-TRIAD3D

1D化効果

1D化効果

MB-TRIAD1D

MB-TRIAD1D

MB-TRIAD3D

KNL

(14)

1D化によりループ長を確保(256以上)

ループが長くないとXFILLが効かない

-

L2$へのプリフェッチのため

HMCの特性:Read/Writeが独立(240[GB/s]×2)

Readだけ、Writeだけ:ピーク性能が半分

Read/Write=1の時最大ピーク性能

XFILLにより余分なReadを削減

Read/Writeを改善

H/Wのピーク性能を低下させない

以上の複合効果で高性能を発揮

1D化が有効な理由@FX100

a = b + c

XFILL あり なし

Read

2

3

Write 1 1

ピーク性 能[GB/s] 360 240

(15)

XFILL とは?( 1/2

データをメモリからロードすることなく書き込み時に書き込み用の キャッシュライン(中身は不定値)を確保する機能。

メモリからのキャッシュラインの読み込みを削減

書き込み配列の読み込みがないこと

do i=1,imax

a(i) = b(i) + c(i)

enddo

b c a

b c a

b c b + c → a

a b c

b c a

b c b + c → a

a

xfill

XFILLなし 4回 XFILLあり 3回

時間方向

レジスタ キャッシュ メモリ

(16)

XFILL とは?( 2/2[HMC の特性も含む ]

演算式 XFILL 理論メモリバンド幅(1CPU=2CMGs)

a = a あり/なし LD:240GB/s+ST:240GB/s=480GB/s a = b

(a = (a) b) あり LD:240GB/s+ST:240GB/s=480GB/s A

なし

LD:240GB/s×1/2+ST:240GB/s×1/2=240GB/s B a = a +b あり/なし LD:240GB/s+ST:240GB/s×1/2=360GB/s

a = b+c

(a = (a) b+c) あり LD:240GB/s+ST:240GB/s×1/2=360GB/s C

なし

LD:240GB/s×2/3+ST:240GB/s×1/3=240GB/s D a = a +b+c あり/なし LD:240GB/s+ST:240GB/s×1/3=320GB/s

a = b+c+d

(a = (a) b+c+d) あり LD:240GB/s+ST:240GB/s×1/3=320GB/s E

なし

LD:240GB/s×3/4+ST:240GB/s×1/4=240GB/s F

XFILL ST LD

0 1 2 3 4 5 6 7

あり 0 - 240 240 240 240 240 240 240

1 240 480(A) 360 (C) 320 (E) 300 288 280 274

なし 0 - 240 240 240 240 240 240 240

(17)

最新のメニーコアCPUのメモリ特性を紹介

SPARC64

TM

XIfx@PRIMEHPC FX100

Intel Xeon Phi (KNight Landing)

それぞれのメニーコアCPUで配列・ループの 1D化による効果を確認

基礎的ベンチマーク:TRIADの拡張版

実アプリのカーネルでも確認

実アプリケーションの開発に適用中。

FX100のメモリ性能予測モデルを構築

HMC特性、XFILLの効果、L2$の効果を考慮

最適化が進んだプログラムでは良く一致

高速化チューニングの指標として利用

まとめ

参照

関連したドキュメント

研究開発活動の状況につきましては、新型コロナウイルス感染症に対する治療薬、ワクチンの研究開発を最優先で

振動流中および一様 流中に没水 した小口径の直立 円柱周辺の3次 元流体場 に関する数値解析 を行った.円 柱高 さの違いに よる流況および底面せん断力

The followings were obtained : the compression has three characteristic stages , in the first and third of which linear approximations are valid, and in the second of which

The main purpose of this talk is to prove the unique existence of global in time solutions to (1) for the initial data in scaling critical spaces, and study the asymptotics of

Koike, Refined pointwise estimates for the solutions to the one-dimensional barotropic compressible Navier–Stokes equations: An application to the analysis of the long-time behavior

Research Institute for Mathematical Sciences, Kyoto University...

電気の流れ 水の流れ 水の流れ(高圧) 蒸気の流れ P ポンプ 弁(開) 弁(閉).

高機能材料特論 システム安全工学 セメント工学 ハ バイオテクノロジー 高機能材料プロセス特論 焼結固体反応論 セラミック科学 バイオプロセス工学.