SlideShare a Scribd company logo
1 of 22
Download to read offline
Copyright © 2018 OCAEL All rights reserved. 1
今野 雅
(株式会社OCAEL・東京大学情報基盤センター客員研究員)
Xeon Phi KNLプロセッサを搭載した
スーパーコンピュータOakforest-PACSにおける
OpenFOAMの高速化
2018年12月7日@川崎市産業振興会館
オープンCAEシンポジウム2018講演会
Copyright © 2018 OCAEL All rights reserved.
•東京大学情報基盤センターと筑波大学計算科学研究センターが共同運営する
スーパーコンピュータOakforest-PACSのプロセッサは,各コアが512-bit幅
のベクタユニットを2基備えるIntel Xeon Phiであるが,標準のOpenFOAMで
はベクトルユニットを活用できず,性能が発揮できない問題があった.
•本研究では,ベクトル化を促進させる性能改善を施し,オープンCAE学会の
OpenFOAMベンチマークであるチャネル流で性能評価を行なった.
•また,大規模並列解析時には,線型ソルバにおける内積の計算に伴なうMPIの
•集団通信のコストがボトルネックとなるため,通信回数削減型の共役勾配法に
ついても併せて検討を行なった.
2
はじめに
Copyright © 2018 OCAEL All rights reserved.
•OpenFOAMは並列化はフラットMPIであり,スレッド並列を併用したハイブ
リッド並列には対応していない.
•KNLのようなメニーコア型のプロセッサでは,フラットMPIの場合,多ノード
使用時にMPIプロセス数が増加し,プロセス間通信,特に集団通信が高速化の
妨げになるため,OpenFOAMに対しても,ハイブリッド並列化の研究が多数行
われている[内山ら,富岡ら 2017,藤原ら 2018,etc.].
•一方,現状MPIフラット計算で並列化されている処理の大部分をスレッド並列
化しないと,一般にはMPIフラット計算に比べ性能向上しないので,ハイブ
リッド化により大幅な向上を図るには,コードの大部分を変更する必要が生じ
る.また,OpenFOAM本家のソース更新に追随するのは非常に困難となる.
3
本研究での方針(当面)
•まずはフラット並列のまま,ベクトル化によるどの程度高速化するか調べる
•変更を最小限としリリース追随が容易な,対費用効果が高い高速化を目指す
本研究での方針
Copyright © 2018 OCAEL All rights reserved.
•Oakforest-PACSシステム(以下OFP)は計8,208台有する計算ノードを有する
が,メニーコア型のIntel Xeon Phi 7150(開発コード名:Knights Landing,
以下KNL)をプロセッサとして使用している.
4
Oakforest-PACSの概要
•CPU: Intel Xeon Phi 7150(KNL)
•34タイル(1MB L2キャッシュ)
•68コア(2コア毎にL2キャッシュ共有)
•136VPU(512bit幅のベクタユニット)
•各ベクタユニットは1命令で8つの倍精度演算
を行うSIMD拡張命令のAVX-512を実行可能
•コアの動作周波数は通常時1.4GHzと低い
•ベクタユニットを活用しないとKNLの性能が発
揮できない
CPU(KNL)
タイル
図出典:Hotchips 27
Copyright © 2018 OCAEL All rights reserved.
•OpenFOAMは主に有限体積法を用いて,支配方程式の離散化を行うが,格子の
形状としては,任意面数のポリヘドラル(多面体)を用いる事が可能
•多面体格子を簡潔に表現するために,格子間の界面(face)が,界面を保有する
格子(owner cell)と,それに隣接する格子(neighour cell)という2つの格子へのポ
インタを持つという,界面ベースの格子格納形式を採用
5
OpenFOAMの格子格納方式
図式引用元:OpenFOAMプロガラマズ
ガイド和訳 Version 2.1.0
S
d
f
N
P
f
界面(face)
隣接格子(neighour cell)
注)界面が境界上にある場合は無し
界面を所有する格子
(owner cell)
解析空間が重なりのない多面体
格子で構成されている場合,内
部界面は常に2つの格子に接続
される.
また,境界上の界面は常に1つ
の格子に接続される.
Copyright © 2018 OCAEL All rights reserved. 6
OpenFOAMの係数行列
c1 c2 c3 c4
c1 dc1 uf1 uf2
c2 lf1 dc2 uf3
c3 lf2 dc3 uf4
c4 lf3 lf4 dc4
c1
owner neighour
c2
c3 c4
f1
f2 f3
f4
係数行列
φ f = (1-α)φP +αφN
φP
φ f
φN φNN
∑
V
∇ϕdV ≃
∑
f
ϕf Sf
•OpenFOAMは,空間的に高々2次精度の離散化スキームを使用
•界面でのフラックスを離散化した結果生じる係数行列の非零成分が,上対角成
分Uと下対角成分Lにひとつずつ組で存在
格子でのガウス積分
界面値の補間(スキーム)
有限体積法
∑
V
支配方程式=0 界面フラックス離散化
(格子 c ,界面 f)
上対角
成分U
下対角
成分L
対角
成分
D
Copyright © 2018 OCAEL All rights reserved.
•LとUを界面ベースで格納しており,さらに対角成分Dを格子のアドレッシング
で格納する方式を採用(lduAddressing・lduMatrixクラス)
•D,L,Uを分離して,L,UをCOO(Coordinate)形式とした変形COO形式
•単純に係数行列が生成可能で,対称行列では格納データとメモリアクセスを減
少させることが可能である利点を有する(対称行列用前処理DICなど)
7
OpenFOAMの係数行列格納方式
diag=[dc1, dc2, .., dc4]:対角成分Dの値	
lower=[lf1, lf2, .., lf4]:下対角成分Lの値	
upper=[uc1, uc2, .., uf4]:上対角成分Uの値	
lowerAddr=[c1, c1, c2, c3]:下対角の列番
号=上対角の行番号(界面でのペア)	
upperAddr=[c2, c3, c4, c4]:上対角の列番
号=下対角の行番号(界面でのペア)
c1 c2 c3 c4
c1 dc1 uf1 uf2
c2 lf1 dc2 uf3
c3 lf2 dc3 uf4
c4 lf3 lf4 dc4
上対角
成分U
下対角
成分L
行番号
列番号
対角成
分D
Copyright © 2018 OCAEL All rights reserved.
•下対角成分Lと上対角成分Uとベクトルの積では,行列成分の参照アドレス
(upperAddr[face],lowerAddr)が界面ループ内で重複するので,このままで
は,ベクトル化ができない.
•2重の間接参照であり,メモリアクセスがランダム,高いメモリバンド幅が必要
といった欠点を有する.
8
OpenFOAMのベクトル化阻害要因
for	(label	cell=0;	cell<nCells;	cell++)	
{	
		Ax[cell]	=	diag[cell]*x[cell];	
}	
for	(label	face=0;	face<nFaces;	face++)	
{	
		Ax[upperAddr[face]]	+=	lower[face]*x[lowerAddr[face]];	
		Ax[lowerAddr[face]]	+=	upper[face]*x[upperAddr[face]];	
}
OpenFOAMでの疎行列ベクトル積SpMVのコード概要 (変数名等一部改変)
対角成分Dとベクトルxの積
このままベクトル化できる
非対角成分と
ベクトルの積
ベクトル化で
きない
Copyright © 2018 OCAEL All rights reserved.
•AVX-512用の最適化オプションをコンパイル時に指定しても,線型ソルバなど
で多用されるベクトル内積のsumProdなど,高速化されない実装が多く存在
9
OpenFOAMのベクトル化阻害要因
#define	List_FOR_ALL(f,	i)								
		const	label	_n##i	=	(f).size();	
		for	(label	i=0;	i<_n##i;	i++)			
		{	
(略)	
#define	TFOR_ALL_S_OP_F_OP_F(typeS,	s,	OP1,	typeF1,	f1,	OP2,	typeF2,	f2)	
(略)	
			List_FOR_ALL(f1,	i)																																																			
								(s)	OP1	List_ELEM(f1,	f1P,	i)	OP2	List_ELEM(f2,	f2P,	i);									
(略)	
template<class	Type>	
scalar	sumProd(const	UList<Type>&	f1,	const	UList<Type>&	f2)	
{	
			scalar	SumProd	=	0;	
			TFOR_ALL_S_OP_F_OP_F(scalar,	SumProd,	+=,	Type,	f1,	&&,	Type,	f2)	
			return	SumProd;	
}
KNLオプション時のループの実際のコード
コンパイラにAVX-512化最適化オプションを
付けてもベクトル化できない
ベクトル内積
テンプレート
ループの
マクロ
src/OpenFOAM/fields/Fields/scalarField/scalarField.C
Copyright © 2018 OCAEL All rights reserved.
•WM_COMPILER=IccKNLの設定でコンパイルする手法.
•コンパイラのオプションに-xmic-avx512 -DvectorMachine等が加わる.
10
検討した高速化手法 - KNL
#ifdef	vectorMachine	
//	Element	access	looping	using	[]	for	vector	machines	
#define	List_FOR_ALL(f,	i)														
								const	label	_n##i	=	(f).size();	
								for	(label	i=0;	i<_n##i;	i++)			
								{	
(略)	
#else	
//	Pointer	looping	for	scalar	machines	
#define	List_FOR_ALL(f,	i)														
								label	i	=	(f).size();											
								while	(i--)																					
								{																															
(略)
src/OpenFOAM/containers/Lists/List/ListLoopM.H
vectorMachine定義に有効
(IccKNLやGccKNL)
ベクトル化用のループ
(forループ)
スカラマシン用のループ
(whileループ)
Copyright © 2018 OCAEL All rights reserved.
GitHubで公開されているOpenFOAM-Intelのベクトル化改良パッチを適用
11
検討した高速化手法 - VEC
#ifdef	vectorMachine	
//	Element	access	looping	using	[]	for	vector	machines	
#define	List_FOR_ALL(f,	i)													
							const	label	_n##i	=	(f).size();	
										_Pragma("simd")														
								for	(label	i=0;	i<_n##i;	i++)	
src/OpenFOAM/containers/Lists/List/ListLoopM.H
simdプラグマやivdepプラグマ
を用いて,コンパイラにSIMD化
を指示し,ベクトル化を促進
Copyright © 2018 OCAEL All rights reserved.
OpenFOAMの標準Preconditioned CG (PCG)
1: r0 := b-Ax0; u0 := M-1 r0; p0 := u0
2: for i = 0, … do
3: s := A pi
4: α := (ri , ui ) / (s , pi )
5: xi+1 := xi + α pi
6: ri+1 := ri - α s
7: ui+1 := M-1 ri+1
8: β := (ri+1 , ui+1) / (ri , ui )
9: pi+1 := ui+1 + β pi
12
検討した高速化手法 - CG
• 並列計算では,内積はMPIプロセス全体の集合通信が必要で,MPIプロセス数が大きく
なると,集団通信の完了待ち時間が大きくなる
• Chronopoulos/Gearアルゴリズムでは内積を1箇所にまとめられているので,多並列
MPI計算で大きな比重を占めるMPI集団通信のコストを下げることが可能
疎行列ベクトル積(SpMV)
内積(Dot Products)
内積(Dot Products)
前処理(Precondition)
他はベクトル定数倍加減算(DAXPY)
圧力方程式に対してChronopoulos/Gearアルゴリズムによる共役勾配法を使用
Copyright © 2018 OCAEL All rights reserved. 13
検討しなかった高速化手法 - Pipelined CG
Preconditioned pipelined CG
1: r0 := b-Ax0 ; u0 := M-1 r0 ; w0 := Au0
2: for i = 0, … do
3: γi := (ri , ui )
4: δ := (wi , ui )
5: mi := M-1 wi
6: ni := A mi
7: βi := γi / γi-1 (i=0→βi: = 0)
8: αi := γi / (δ - βi γi / αi-1 ) (i=0→αi:= γi / δ)
9: zi := ni + βi zi-1
10: qi := mi + βi qi-1
11: si := wi + βi si-1
12: pi := ui + βi pi-1
13: xi+1 := xi + αi pi
14: ri+1 := ri - αi si
15: ui+1 := ui - αi qi
16: wi+1 := wi - αi zi
内積(Dot Products)
内積(Dot Products)
前処理(Precondition)
疎行列ベクトル積(SpMV)
内積の演算と,その結果を使用す
る演算の間に高コストな前処理や
SpMVが挟まれている
他はベクトル定数倍加減算
(DAXPY)
MPI集団通信について,MPI-3で採用された非同期集団通
信(MPI_Iallreduce)を使用し,パイプライン型などの共役
勾配法を用れば,超大規模MPI並列では集団通信コストを
隠蔽・回避することも可能だが[今野 2017],本検討では
MPIプロセス数が高々1,024と小さいので検討しなかった.
Copyright © 2018 OCAEL All rights reserved.
初期に係数行列の参照アドレスをCRS(Compressed Row Storage)形式に変換
しておき,線型ソルバにおけるSpMVをCRS形式で計算,ベクトル化する.
14
検討した高速化手法 - SpMV
crsA=[dc1, uf1 , lf1, dc2, uf3 , lf2, dc3, uf4 , lf3, lf4, dc4]:行列成分を羅列
crsAddr=[c1, c2, c3, c1, c2, c4, c1, c3, c4, c2, c3, c4]:列番号	
crsStart=[0, 3, 6, 9, 12]:行方向の開始番号オフセット(圧縮データ)
c1 c2 c3 c4
c1 dc1 uf1 uf2
c2 lf1 dc2 uf3
c3 lf2 dc3 uf4
c4 lf3 lf4 dc4
行番号
列番号
for	(label	cell=0;	cell<nCells;	cell++)	
{	
		double	val=0.0;	
		for	(label	face=crsStart[cell];	
face<crsStart[cell+1];	face++)	
		{	
				val	+=	crsA[face]*psiPtr[crsAddr[face]];	
		}	
		ApsiPtr[cell]	=	val;	
}
CRS形式でのSpMVコード(ベクトル化される)
Copyright © 2018 OCAEL All rights reserved. 15
格子生成 (blockMesh)
Hardware
Name Oakforest-PACS (JCAHPC)
CPU Intel Xeon Phi 7150(KNL, 1.4GHz, 68cores)
Memory
96 GB(DDR4, 115.2GB/sec)
16 GB(MCDRAM, 490GB/sec)
Memory mode Flat (numactl -p 1:出来るだけMCDRAMを用いる)
Interconnect Intel Omni-Path (100 Gbps), Full-bisection Fat Tree
Solver (OpenFOAM ver.) pimpleFoam (OpenFOAM v1612+)
Problem channel flow (OpenFOAM benchmark of OpenCAE Soc.)
Number of MPI processes 64 per node (Decompose method: scotch)
Number of mesh
240×130×96=2,995,200 (3M)
480×260×192=23,961,600 (24M)
Compiler・MPI Intel Compiler 2018.3.222, Intel MPI 2018.3.222
Linear solver for pressure
equation
Preconditioned Conjugate Gradient(PCG)
Precondition: Incomplete Cholesky decompostion(DIC)
計算条件
Copyright © 2018 OCAEL All rights reserved.
問題:チャネル流(学会標準ベンチマーク)
16
Lx × Ly × Lz = 5π × 2 × 2π
Reτ = uτ δ/ μ = 110 [-]
ここで
Lx , Ly , Lz : 各方向のチャネル幅 [m]
uτ : 壁面摩擦速度 [m/s]
δ : チャネル半幅 [m] ( =Ly / 2 )
μ : 動粘性係数 [m2/s2]
主流方向(x): 一定の圧力勾配
主流方向(x), スパン方向(z): 周期境界
ソルバ: pimpleFoam
乱流モデル: 無し(laminar)
速度線型ソルバ: BiCG (前処理DILU)
圧力線型ソルバ: PCG (前処理DIC)
領域分割手法:scotch(周期境界面は同領域)
解析条件
チャネル流れ (Reτ = 110)
•2〜51ステップのCPU時間(Execution time)から1時間あたりのステップ数を算出
✓メッシュ生成に時間を要しない
✓構造格子のため,格子数変更が容易
✓圧力と速度のみ解くので,「圧力線
形ソルバの解析時間が支配的」という
非圧縮性流体解析の特性を素直に示す
Copyright © 2018 OCAEL All rights reserved.
64 128 256 512
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
256 512 1024
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
KNL-PCGケースの高速化率とホットスポット
17
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
0
20
40
60
80
100
120
140
160
180
CPU
time
[s]
064MPI
2.3s
2.2s
(2.1%)
2s
(11%)
2.1s
(11%)
2s
(13%)
2s
(13%)
128
1.8s
• 高速化率: 3M格子 1-2%, 24M格子 2-4%. 僅か
• 主要ホットスポットのCPU時間のも減少も僅か
24M mesh
3M mesh
Speedup
ratio
relative
to
baseline
3M mesh, 64MPI
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
0
20
40
60
80
100
120
140
160
180
CPU
time
[s]
064MPI
2.3s
2.2s
(2.1%)
2s
(11%)
2.1s
(11%)
2s
(13%)
2s
(13%)
128MPI
1.8s
1.8s
(2.3%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
256MPI
0.89s
0.87s
(1.8%)
0.82s
(8.5%)
0.8s
(11%)
0.82s
(8%)
0.8s
(11%)
512MPI
0.46s
0.46s
(0.63%)
0.43s
(6.4%)
0.41s
(11%)
0.44s
(4.5%)
0.42s
(10%)
Precondition
SpMV
MPI Allreduce
Inner Product
Other
KNL(-xmic-avx512 -DvectorMachineでコンパイル)
圧力方程式の線形ソルバ:PCG
baseline(標準のOpenFOAM)と比較
Copyright © 2018 OCAEL All rights reserved.
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
0
20
40
60
80
100
120
140
160
180
CPU
time
[s]
064MPI
2.3s
2.2s
(2.1%)
2s
(11%)
2.1s
(11%)
2s
(13%)
2s
(13%)
128
1.8s
256 512 1024
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
64 128 256 512
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
VEC-PCGケースの高速化率とホットスポット
18
64 128 256 512
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
• 高速化率: 3M格子 6-11%, 24M格子 11-13%. 改善
• MPI数の増加に伴ない高速化率が減少
256 512 1024
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
24M mesh
3M mesh
Speedup
ratio
relative
to
baseline
3M mesh, 64MPI
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
0
20
40
60
80
100
120
140
160
180
CPU
time
[s]
064MPI
2.3s
2.2s
(2.1%)
2s
(11%)
2.1s
(11%)
2s
(13%)
2s
(13%)
128MPI
1.8s
1.8s
(2.3%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
256MPI
0.89s
0.87s
(1.8%)
0.82s
(8.5%)
0.8s
(11%)
0.82s
(8%)
0.8s
(11%)
512MPI
0.46s
0.46s
(0.63%)
0.43s
(6.4%)
0.41s
(11%)
0.44s
(4.5%)
0.42s
(10%)
Precondition
SpMV
MPI Allreduce
Inner Product
Other
内積等でのループをsimdとivdepプラグマでベクトル化す
るIntelのベクトル化改善パッチを適用
Copyright © 2018 OCAEL All rights reserved.
• 高速化率: 3M 格子 11%, 24M 格子 5-10%.改善
• VEC-PCGケースに比べ,Allreduceの時間が減少
• MPI通信の重みが大きい3M格子では,MPI数が増えても高速化率が減少しない
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
128MPI 256MPI
0.89s
0.87s
(1.8
0.82s
(8.5
0.8s
(11%
0.82s
(8%
0.8s
(11% 512MPI
0.46s
0.46s
(0.63%)
0.43s
(6.4%)
0.41s
(11%)
0.44s
(4.5%)
0.42s
(10%)
256 512 1024
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
64 128 256 512
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
VEC-CGケースの高速化率とホットスポット
19
64 128 256 512
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
256 512 1024
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
24M mesh
3M mesh
Speedup
ratio
relative
to
baseline
3M mesh, 512MPI
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
0
20
40
60
80
100
120
140
160
180
CPU
time
[s]
064MPI
2.3s
2.2s
(2.1%)
2s
(11%)
2.1s
(11%)
2s
(13%)
2s
(13%)
128MPI
1.8s
1.8s
(2.3%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
256MPI
0.89s
0.87s
(1.8%)
0.82s
(8.5%)
0.8s
(11%)
0.82s
(8%)
0.8s
(11%)
512MPI
0.46s
0.46s
(0.63%)
0.43s
(6.4%)
0.41s
(11%)
0.44s
(4.5%)
0.42s
(10%)
Precondition
SpMV
MPI Allreduce
Inner Product
Other
Chronopoulos/Gearアルゴリズム共役勾配法
Copyright © 2018 OCAEL All rights reserved.
256 512 1024
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
64 128 256 512
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
VEC-PCG-SpMVケースの高速化率とホットスポット
20
64 128 256 512
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
256 512 1024
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
24M mesh
3M mesh
Speedup
ratio
relative
to
baseline
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
0
20
40
60
80
100
120
140
160
180
CPU
time
[s]
064MPI
2.3s
2.2s
(2.1%)
2s
(11%)
2.1s
(11%)
2s
(13%)
2s
(13%)
128
1.8s
3M mesh, 64MPI
• 増加率: 3M格子 5-13%, 24M格子 11-20%.増加率最大
• VEC-PCGケースに比べ,SpMVの時間が減少
• MPI数の増加に伴ない,増加率が大幅に減少
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
0
20
40
60
80
100
120
140
160
180
CPU
time
[s]
064MPI
2.3s
2.2s
(2.1%)
2s
(11%)
2.1s
(11%)
2s
(13%)
2s
(13%)
128MPI
1.8s
1.8s
(2.3%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
256MPI
0.89s
0.87s
(1.8%)
0.82s
(8.5%)
0.8s
(11%)
0.82s
(8%)
0.8s
(11%)
512MPI
0.46s
0.46s
(0.63%)
0.43s
(6.4%)
0.41s
(11%)
0.44s
(4.5%)
0.42s
(10%)
Precondition
SpMV
MPI Allreduce
Inner Product
Other
行列ベクトル積SpMVをベクトル化.圧力ソルバはPCG
Copyright © 2018 OCAEL All rights reserved.
256 512 1024
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
64 128 256 512
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
VEC-CG-SpMVケースの高速化率とホットスポット
21
64 128 256 512
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
256 512 1024
Number of MPI processes
0
10
20
30
Speedup
ratio
relativeto
baseline
[%]
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
24M mesh
3M mesh
Speedup
ratio
relative
to
baseline
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
0
20
40
60
80
100
120
140
160
180
CPU
time
[s]
064MPI
2.3s
2.2s
(2.1%)
2s
(11%)
2.1s
(11%)
2s
(13%)
2s
(13%)
128
1.8s
3M mesh, 64MPI
• 増加率: 3M格子 10-13%, 24M格子 10-15%. 概ね高い
• MPI数に依存せず,概ね良好な増加率が得られた
• 小並列数の場合,VEC-PCG-SpMVを併用すると良い
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
Baseline
KNL-PCG
VEC-PCG
VEC-CG
VEC-PCG-SpMV
VEC-CG-SpMV
0
20
40
60
80
100
120
140
160
180
CPU
time
[s]
064MPI
2.3s
2.2s
(2.1%)
2s
(11%)
2.1s
(11%)
2s
(13%)
2s
(13%)
128MPI
1.8s
1.8s
(2.3%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
1.6s
(11%)
256MPI
0.89s
0.87s
(1.8%)
0.82s
(8.5%)
0.8s
(11%)
0.82s
(8%)
0.8s
(11%)
512MPI
0.46s
0.46s
(0.63%)
0.43s
(6.4%)
0.41s
(11%)
0.44s
(4.5%)
0.42s
(10%)
Precondition
SpMV
MPI Allreduce
Inner Product
Other
行列ベクトル積SpMVをベクトル化.圧力ソルバがC/G
Copyright © 2018 OCAEL All rights reserved. 22
まとめ
•OpenFOAMのベクトル化を促進させる性能改善パッチを適用した上で,係
数行列格納方式のCRS形式変換によるSpMVのベクトル化を行い,圧力方程
式の線型ソルバとしてChronopoulos/Gearアルゴリズムによる共役勾配法
CGを用いるなど,各種高速化手法の組み合わせを検討した.
•メニーコア型のXeon Phi KNLプロセッサで構成されるOakforest-PACSに
おいて,チャネル流を対象に性能評価を行なったところ,標準の
OpenFOAMに比べ,最大で約20%の高速化率が得られた.
•また,ベクトル化とCGを組み合わることで,並列数にあまり依存せず,約
10〜15%の安定した高速化率が得られた.
•ELL,JAgged DiagonalなどCRS以外の格納方式の検討.自動選択(AT).
•メモリアライメントによるベクトル化向上
•メニーコアプロセッサに適した前処理 (DICを並列化?,弱い前処理?)
•Skylakeでの検討,オープンCAE学会HPC小委員会(未設置)でのソース公開
今後の課題

More Related Content

Recently uploaded

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

• Xeon Phi KNLプロセッサを搭載したスーパーコンピュータOakforest-PACSにおけるOpenFOAMの高速化

  • 1. Copyright © 2018 OCAEL All rights reserved. 1 今野 雅 (株式会社OCAEL・東京大学情報基盤センター客員研究員) Xeon Phi KNLプロセッサを搭載した スーパーコンピュータOakforest-PACSにおける OpenFOAMの高速化 2018年12月7日@川崎市産業振興会館 オープンCAEシンポジウム2018講演会
  • 2. Copyright © 2018 OCAEL All rights reserved. •東京大学情報基盤センターと筑波大学計算科学研究センターが共同運営する スーパーコンピュータOakforest-PACSのプロセッサは,各コアが512-bit幅 のベクタユニットを2基備えるIntel Xeon Phiであるが,標準のOpenFOAMで はベクトルユニットを活用できず,性能が発揮できない問題があった. •本研究では,ベクトル化を促進させる性能改善を施し,オープンCAE学会の OpenFOAMベンチマークであるチャネル流で性能評価を行なった. •また,大規模並列解析時には,線型ソルバにおける内積の計算に伴なうMPIの •集団通信のコストがボトルネックとなるため,通信回数削減型の共役勾配法に ついても併せて検討を行なった. 2 はじめに
  • 3. Copyright © 2018 OCAEL All rights reserved. •OpenFOAMは並列化はフラットMPIであり,スレッド並列を併用したハイブ リッド並列には対応していない. •KNLのようなメニーコア型のプロセッサでは,フラットMPIの場合,多ノード 使用時にMPIプロセス数が増加し,プロセス間通信,特に集団通信が高速化の 妨げになるため,OpenFOAMに対しても,ハイブリッド並列化の研究が多数行 われている[内山ら,富岡ら 2017,藤原ら 2018,etc.]. •一方,現状MPIフラット計算で並列化されている処理の大部分をスレッド並列 化しないと,一般にはMPIフラット計算に比べ性能向上しないので,ハイブ リッド化により大幅な向上を図るには,コードの大部分を変更する必要が生じ る.また,OpenFOAM本家のソース更新に追随するのは非常に困難となる. 3 本研究での方針(当面) •まずはフラット並列のまま,ベクトル化によるどの程度高速化するか調べる •変更を最小限としリリース追随が容易な,対費用効果が高い高速化を目指す 本研究での方針
  • 4. Copyright © 2018 OCAEL All rights reserved. •Oakforest-PACSシステム(以下OFP)は計8,208台有する計算ノードを有する が,メニーコア型のIntel Xeon Phi 7150(開発コード名:Knights Landing, 以下KNL)をプロセッサとして使用している. 4 Oakforest-PACSの概要 •CPU: Intel Xeon Phi 7150(KNL) •34タイル(1MB L2キャッシュ) •68コア(2コア毎にL2キャッシュ共有) •136VPU(512bit幅のベクタユニット) •各ベクタユニットは1命令で8つの倍精度演算 を行うSIMD拡張命令のAVX-512を実行可能 •コアの動作周波数は通常時1.4GHzと低い •ベクタユニットを活用しないとKNLの性能が発 揮できない CPU(KNL) タイル 図出典:Hotchips 27
  • 5. Copyright © 2018 OCAEL All rights reserved. •OpenFOAMは主に有限体積法を用いて,支配方程式の離散化を行うが,格子の 形状としては,任意面数のポリヘドラル(多面体)を用いる事が可能 •多面体格子を簡潔に表現するために,格子間の界面(face)が,界面を保有する 格子(owner cell)と,それに隣接する格子(neighour cell)という2つの格子へのポ インタを持つという,界面ベースの格子格納形式を採用 5 OpenFOAMの格子格納方式 図式引用元:OpenFOAMプロガラマズ ガイド和訳 Version 2.1.0 S d f N P f 界面(face) 隣接格子(neighour cell) 注)界面が境界上にある場合は無し 界面を所有する格子 (owner cell) 解析空間が重なりのない多面体 格子で構成されている場合,内 部界面は常に2つの格子に接続 される. また,境界上の界面は常に1つ の格子に接続される.
  • 6. Copyright © 2018 OCAEL All rights reserved. 6 OpenFOAMの係数行列 c1 c2 c3 c4 c1 dc1 uf1 uf2 c2 lf1 dc2 uf3 c3 lf2 dc3 uf4 c4 lf3 lf4 dc4 c1 owner neighour c2 c3 c4 f1 f2 f3 f4 係数行列 φ f = (1-α)φP +αφN φP φ f φN φNN ∑ V ∇ϕdV ≃ ∑ f ϕf Sf •OpenFOAMは,空間的に高々2次精度の離散化スキームを使用 •界面でのフラックスを離散化した結果生じる係数行列の非零成分が,上対角成 分Uと下対角成分Lにひとつずつ組で存在 格子でのガウス積分 界面値の補間(スキーム) 有限体積法 ∑ V 支配方程式=0 界面フラックス離散化 (格子 c ,界面 f) 上対角 成分U 下対角 成分L 対角 成分 D
  • 7. Copyright © 2018 OCAEL All rights reserved. •LとUを界面ベースで格納しており,さらに対角成分Dを格子のアドレッシング で格納する方式を採用(lduAddressing・lduMatrixクラス) •D,L,Uを分離して,L,UをCOO(Coordinate)形式とした変形COO形式 •単純に係数行列が生成可能で,対称行列では格納データとメモリアクセスを減 少させることが可能である利点を有する(対称行列用前処理DICなど) 7 OpenFOAMの係数行列格納方式 diag=[dc1, dc2, .., dc4]:対角成分Dの値 lower=[lf1, lf2, .., lf4]:下対角成分Lの値 upper=[uc1, uc2, .., uf4]:上対角成分Uの値 lowerAddr=[c1, c1, c2, c3]:下対角の列番 号=上対角の行番号(界面でのペア) upperAddr=[c2, c3, c4, c4]:上対角の列番 号=下対角の行番号(界面でのペア) c1 c2 c3 c4 c1 dc1 uf1 uf2 c2 lf1 dc2 uf3 c3 lf2 dc3 uf4 c4 lf3 lf4 dc4 上対角 成分U 下対角 成分L 行番号 列番号 対角成 分D
  • 8. Copyright © 2018 OCAEL All rights reserved. •下対角成分Lと上対角成分Uとベクトルの積では,行列成分の参照アドレス (upperAddr[face],lowerAddr)が界面ループ内で重複するので,このままで は,ベクトル化ができない. •2重の間接参照であり,メモリアクセスがランダム,高いメモリバンド幅が必要 といった欠点を有する. 8 OpenFOAMのベクトル化阻害要因 for (label cell=0; cell<nCells; cell++) { Ax[cell] = diag[cell]*x[cell]; } for (label face=0; face<nFaces; face++) { Ax[upperAddr[face]] += lower[face]*x[lowerAddr[face]]; Ax[lowerAddr[face]] += upper[face]*x[upperAddr[face]]; } OpenFOAMでの疎行列ベクトル積SpMVのコード概要 (変数名等一部改変) 対角成分Dとベクトルxの積 このままベクトル化できる 非対角成分と ベクトルの積 ベクトル化で きない
  • 9. Copyright © 2018 OCAEL All rights reserved. •AVX-512用の最適化オプションをコンパイル時に指定しても,線型ソルバなど で多用されるベクトル内積のsumProdなど,高速化されない実装が多く存在 9 OpenFOAMのベクトル化阻害要因 #define List_FOR_ALL(f, i) const label _n##i = (f).size(); for (label i=0; i<_n##i; i++) { (略) #define TFOR_ALL_S_OP_F_OP_F(typeS, s, OP1, typeF1, f1, OP2, typeF2, f2) (略) List_FOR_ALL(f1, i) (s) OP1 List_ELEM(f1, f1P, i) OP2 List_ELEM(f2, f2P, i); (略) template<class Type> scalar sumProd(const UList<Type>& f1, const UList<Type>& f2) { scalar SumProd = 0; TFOR_ALL_S_OP_F_OP_F(scalar, SumProd, +=, Type, f1, &&, Type, f2) return SumProd; } KNLオプション時のループの実際のコード コンパイラにAVX-512化最適化オプションを 付けてもベクトル化できない ベクトル内積 テンプレート ループの マクロ src/OpenFOAM/fields/Fields/scalarField/scalarField.C
  • 10. Copyright © 2018 OCAEL All rights reserved. •WM_COMPILER=IccKNLの設定でコンパイルする手法. •コンパイラのオプションに-xmic-avx512 -DvectorMachine等が加わる. 10 検討した高速化手法 - KNL #ifdef vectorMachine // Element access looping using [] for vector machines #define List_FOR_ALL(f, i) const label _n##i = (f).size(); for (label i=0; i<_n##i; i++) { (略) #else // Pointer looping for scalar machines #define List_FOR_ALL(f, i) label i = (f).size(); while (i--) { (略) src/OpenFOAM/containers/Lists/List/ListLoopM.H vectorMachine定義に有効 (IccKNLやGccKNL) ベクトル化用のループ (forループ) スカラマシン用のループ (whileループ)
  • 11. Copyright © 2018 OCAEL All rights reserved. GitHubで公開されているOpenFOAM-Intelのベクトル化改良パッチを適用 11 検討した高速化手法 - VEC #ifdef vectorMachine // Element access looping using [] for vector machines #define List_FOR_ALL(f, i) const label _n##i = (f).size(); _Pragma("simd") for (label i=0; i<_n##i; i++) src/OpenFOAM/containers/Lists/List/ListLoopM.H simdプラグマやivdepプラグマ を用いて,コンパイラにSIMD化 を指示し,ベクトル化を促進
  • 12. Copyright © 2018 OCAEL All rights reserved. OpenFOAMの標準Preconditioned CG (PCG) 1: r0 := b-Ax0; u0 := M-1 r0; p0 := u0 2: for i = 0, … do 3: s := A pi 4: α := (ri , ui ) / (s , pi ) 5: xi+1 := xi + α pi 6: ri+1 := ri - α s 7: ui+1 := M-1 ri+1 8: β := (ri+1 , ui+1) / (ri , ui ) 9: pi+1 := ui+1 + β pi 12 検討した高速化手法 - CG • 並列計算では,内積はMPIプロセス全体の集合通信が必要で,MPIプロセス数が大きく なると,集団通信の完了待ち時間が大きくなる • Chronopoulos/Gearアルゴリズムでは内積を1箇所にまとめられているので,多並列 MPI計算で大きな比重を占めるMPI集団通信のコストを下げることが可能 疎行列ベクトル積(SpMV) 内積(Dot Products) 内積(Dot Products) 前処理(Precondition) 他はベクトル定数倍加減算(DAXPY) 圧力方程式に対してChronopoulos/Gearアルゴリズムによる共役勾配法を使用
  • 13. Copyright © 2018 OCAEL All rights reserved. 13 検討しなかった高速化手法 - Pipelined CG Preconditioned pipelined CG 1: r0 := b-Ax0 ; u0 := M-1 r0 ; w0 := Au0 2: for i = 0, … do 3: γi := (ri , ui ) 4: δ := (wi , ui ) 5: mi := M-1 wi 6: ni := A mi 7: βi := γi / γi-1 (i=0→βi: = 0) 8: αi := γi / (δ - βi γi / αi-1 ) (i=0→αi:= γi / δ) 9: zi := ni + βi zi-1 10: qi := mi + βi qi-1 11: si := wi + βi si-1 12: pi := ui + βi pi-1 13: xi+1 := xi + αi pi 14: ri+1 := ri - αi si 15: ui+1 := ui - αi qi 16: wi+1 := wi - αi zi 内積(Dot Products) 内積(Dot Products) 前処理(Precondition) 疎行列ベクトル積(SpMV) 内積の演算と,その結果を使用す る演算の間に高コストな前処理や SpMVが挟まれている 他はベクトル定数倍加減算 (DAXPY) MPI集団通信について,MPI-3で採用された非同期集団通 信(MPI_Iallreduce)を使用し,パイプライン型などの共役 勾配法を用れば,超大規模MPI並列では集団通信コストを 隠蔽・回避することも可能だが[今野 2017],本検討では MPIプロセス数が高々1,024と小さいので検討しなかった.
  • 14. Copyright © 2018 OCAEL All rights reserved. 初期に係数行列の参照アドレスをCRS(Compressed Row Storage)形式に変換 しておき,線型ソルバにおけるSpMVをCRS形式で計算,ベクトル化する. 14 検討した高速化手法 - SpMV crsA=[dc1, uf1 , lf1, dc2, uf3 , lf2, dc3, uf4 , lf3, lf4, dc4]:行列成分を羅列 crsAddr=[c1, c2, c3, c1, c2, c4, c1, c3, c4, c2, c3, c4]:列番号 crsStart=[0, 3, 6, 9, 12]:行方向の開始番号オフセット(圧縮データ) c1 c2 c3 c4 c1 dc1 uf1 uf2 c2 lf1 dc2 uf3 c3 lf2 dc3 uf4 c4 lf3 lf4 dc4 行番号 列番号 for (label cell=0; cell<nCells; cell++) { double val=0.0; for (label face=crsStart[cell]; face<crsStart[cell+1]; face++) { val += crsA[face]*psiPtr[crsAddr[face]]; } ApsiPtr[cell] = val; } CRS形式でのSpMVコード(ベクトル化される)
  • 15. Copyright © 2018 OCAEL All rights reserved. 15 格子生成 (blockMesh) Hardware Name Oakforest-PACS (JCAHPC) CPU Intel Xeon Phi 7150(KNL, 1.4GHz, 68cores) Memory 96 GB(DDR4, 115.2GB/sec) 16 GB(MCDRAM, 490GB/sec) Memory mode Flat (numactl -p 1:出来るだけMCDRAMを用いる) Interconnect Intel Omni-Path (100 Gbps), Full-bisection Fat Tree Solver (OpenFOAM ver.) pimpleFoam (OpenFOAM v1612+) Problem channel flow (OpenFOAM benchmark of OpenCAE Soc.) Number of MPI processes 64 per node (Decompose method: scotch) Number of mesh 240×130×96=2,995,200 (3M) 480×260×192=23,961,600 (24M) Compiler・MPI Intel Compiler 2018.3.222, Intel MPI 2018.3.222 Linear solver for pressure equation Preconditioned Conjugate Gradient(PCG) Precondition: Incomplete Cholesky decompostion(DIC) 計算条件
  • 16. Copyright © 2018 OCAEL All rights reserved. 問題:チャネル流(学会標準ベンチマーク) 16 Lx × Ly × Lz = 5π × 2 × 2π Reτ = uτ δ/ μ = 110 [-] ここで Lx , Ly , Lz : 各方向のチャネル幅 [m] uτ : 壁面摩擦速度 [m/s] δ : チャネル半幅 [m] ( =Ly / 2 ) μ : 動粘性係数 [m2/s2] 主流方向(x): 一定の圧力勾配 主流方向(x), スパン方向(z): 周期境界 ソルバ: pimpleFoam 乱流モデル: 無し(laminar) 速度線型ソルバ: BiCG (前処理DILU) 圧力線型ソルバ: PCG (前処理DIC) 領域分割手法:scotch(周期境界面は同領域) 解析条件 チャネル流れ (Reτ = 110) •2〜51ステップのCPU時間(Execution time)から1時間あたりのステップ数を算出 ✓メッシュ生成に時間を要しない ✓構造格子のため,格子数変更が容易 ✓圧力と速度のみ解くので,「圧力線 形ソルバの解析時間が支配的」という 非圧縮性流体解析の特性を素直に示す
  • 17. Copyright © 2018 OCAEL All rights reserved. 64 128 256 512 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 256 512 1024 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV KNL-PCGケースの高速化率とホットスポット 17 Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline 0 20 40 60 80 100 120 140 160 180 CPU time [s] 064MPI 2.3s 2.2s (2.1%) 2s (11%) 2.1s (11%) 2s (13%) 2s (13%) 128 1.8s • 高速化率: 3M格子 1-2%, 24M格子 2-4%. 僅か • 主要ホットスポットのCPU時間のも減少も僅か 24M mesh 3M mesh Speedup ratio relative to baseline 3M mesh, 64MPI Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 0 20 40 60 80 100 120 140 160 180 CPU time [s] 064MPI 2.3s 2.2s (2.1%) 2s (11%) 2.1s (11%) 2s (13%) 2s (13%) 128MPI 1.8s 1.8s (2.3%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 256MPI 0.89s 0.87s (1.8%) 0.82s (8.5%) 0.8s (11%) 0.82s (8%) 0.8s (11%) 512MPI 0.46s 0.46s (0.63%) 0.43s (6.4%) 0.41s (11%) 0.44s (4.5%) 0.42s (10%) Precondition SpMV MPI Allreduce Inner Product Other KNL(-xmic-avx512 -DvectorMachineでコンパイル) 圧力方程式の線形ソルバ:PCG baseline(標準のOpenFOAM)と比較
  • 18. Copyright © 2018 OCAEL All rights reserved. Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline 0 20 40 60 80 100 120 140 160 180 CPU time [s] 064MPI 2.3s 2.2s (2.1%) 2s (11%) 2.1s (11%) 2s (13%) 2s (13%) 128 1.8s 256 512 1024 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 64 128 256 512 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV VEC-PCGケースの高速化率とホットスポット 18 64 128 256 512 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV • 高速化率: 3M格子 6-11%, 24M格子 11-13%. 改善 • MPI数の増加に伴ない高速化率が減少 256 512 1024 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 24M mesh 3M mesh Speedup ratio relative to baseline 3M mesh, 64MPI Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 0 20 40 60 80 100 120 140 160 180 CPU time [s] 064MPI 2.3s 2.2s (2.1%) 2s (11%) 2.1s (11%) 2s (13%) 2s (13%) 128MPI 1.8s 1.8s (2.3%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 256MPI 0.89s 0.87s (1.8%) 0.82s (8.5%) 0.8s (11%) 0.82s (8%) 0.8s (11%) 512MPI 0.46s 0.46s (0.63%) 0.43s (6.4%) 0.41s (11%) 0.44s (4.5%) 0.42s (10%) Precondition SpMV MPI Allreduce Inner Product Other 内積等でのループをsimdとivdepプラグマでベクトル化す るIntelのベクトル化改善パッチを適用
  • 19. Copyright © 2018 OCAEL All rights reserved. • 高速化率: 3M 格子 11%, 24M 格子 5-10%.改善 • VEC-PCGケースに比べ,Allreduceの時間が減少 • MPI通信の重みが大きい3M格子では,MPI数が増えても高速化率が減少しない VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 128MPI 256MPI 0.89s 0.87s (1.8 0.82s (8.5 0.8s (11% 0.82s (8% 0.8s (11% 512MPI 0.46s 0.46s (0.63%) 0.43s (6.4%) 0.41s (11%) 0.44s (4.5%) 0.42s (10%) 256 512 1024 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 64 128 256 512 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV VEC-CGケースの高速化率とホットスポット 19 64 128 256 512 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 256 512 1024 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 24M mesh 3M mesh Speedup ratio relative to baseline 3M mesh, 512MPI Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 0 20 40 60 80 100 120 140 160 180 CPU time [s] 064MPI 2.3s 2.2s (2.1%) 2s (11%) 2.1s (11%) 2s (13%) 2s (13%) 128MPI 1.8s 1.8s (2.3%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 256MPI 0.89s 0.87s (1.8%) 0.82s (8.5%) 0.8s (11%) 0.82s (8%) 0.8s (11%) 512MPI 0.46s 0.46s (0.63%) 0.43s (6.4%) 0.41s (11%) 0.44s (4.5%) 0.42s (10%) Precondition SpMV MPI Allreduce Inner Product Other Chronopoulos/Gearアルゴリズム共役勾配法
  • 20. Copyright © 2018 OCAEL All rights reserved. 256 512 1024 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 64 128 256 512 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV VEC-PCG-SpMVケースの高速化率とホットスポット 20 64 128 256 512 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 256 512 1024 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 24M mesh 3M mesh Speedup ratio relative to baseline Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline 0 20 40 60 80 100 120 140 160 180 CPU time [s] 064MPI 2.3s 2.2s (2.1%) 2s (11%) 2.1s (11%) 2s (13%) 2s (13%) 128 1.8s 3M mesh, 64MPI • 増加率: 3M格子 5-13%, 24M格子 11-20%.増加率最大 • VEC-PCGケースに比べ,SpMVの時間が減少 • MPI数の増加に伴ない,増加率が大幅に減少 Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 0 20 40 60 80 100 120 140 160 180 CPU time [s] 064MPI 2.3s 2.2s (2.1%) 2s (11%) 2.1s (11%) 2s (13%) 2s (13%) 128MPI 1.8s 1.8s (2.3%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 256MPI 0.89s 0.87s (1.8%) 0.82s (8.5%) 0.8s (11%) 0.82s (8%) 0.8s (11%) 512MPI 0.46s 0.46s (0.63%) 0.43s (6.4%) 0.41s (11%) 0.44s (4.5%) 0.42s (10%) Precondition SpMV MPI Allreduce Inner Product Other 行列ベクトル積SpMVをベクトル化.圧力ソルバはPCG
  • 21. Copyright © 2018 OCAEL All rights reserved. 256 512 1024 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 64 128 256 512 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV VEC-CG-SpMVケースの高速化率とホットスポット 21 64 128 256 512 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 256 512 1024 Number of MPI processes 0 10 20 30 Speedup ratio relativeto baseline [%] KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 24M mesh 3M mesh Speedup ratio relative to baseline Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline 0 20 40 60 80 100 120 140 160 180 CPU time [s] 064MPI 2.3s 2.2s (2.1%) 2s (11%) 2.1s (11%) 2s (13%) 2s (13%) 128 1.8s 3M mesh, 64MPI • 増加率: 3M格子 10-13%, 24M格子 10-15%. 概ね高い • MPI数に依存せず,概ね良好な増加率が得られた • 小並列数の場合,VEC-PCG-SpMVを併用すると良い Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV Baseline KNL-PCG VEC-PCG VEC-CG VEC-PCG-SpMV VEC-CG-SpMV 0 20 40 60 80 100 120 140 160 180 CPU time [s] 064MPI 2.3s 2.2s (2.1%) 2s (11%) 2.1s (11%) 2s (13%) 2s (13%) 128MPI 1.8s 1.8s (2.3%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 1.6s (11%) 256MPI 0.89s 0.87s (1.8%) 0.82s (8.5%) 0.8s (11%) 0.82s (8%) 0.8s (11%) 512MPI 0.46s 0.46s (0.63%) 0.43s (6.4%) 0.41s (11%) 0.44s (4.5%) 0.42s (10%) Precondition SpMV MPI Allreduce Inner Product Other 行列ベクトル積SpMVをベクトル化.圧力ソルバがC/G
  • 22. Copyright © 2018 OCAEL All rights reserved. 22 まとめ •OpenFOAMのベクトル化を促進させる性能改善パッチを適用した上で,係 数行列格納方式のCRS形式変換によるSpMVのベクトル化を行い,圧力方程 式の線型ソルバとしてChronopoulos/Gearアルゴリズムによる共役勾配法 CGを用いるなど,各種高速化手法の組み合わせを検討した. •メニーコア型のXeon Phi KNLプロセッサで構成されるOakforest-PACSに おいて,チャネル流を対象に性能評価を行なったところ,標準の OpenFOAMに比べ,最大で約20%の高速化率が得られた. •また,ベクトル化とCGを組み合わることで,並列数にあまり依存せず,約 10〜15%の安定した高速化率が得られた. •ELL,JAgged DiagonalなどCRS以外の格納方式の検討.自動選択(AT). •メモリアライメントによるベクトル化向上 •メニーコアプロセッサに適した前処理 (DICを並列化?,弱い前処理?) •Skylakeでの検討,オープンCAE学会HPC小委員会(未設置)でのソース公開 今後の課題