Intel KNL を使ってみて: 格子 QCD
での例
Issaku Kanamori (Hiroshima Univ.)
第 2 回 HPC-Phys 勉強会理研和光, 2018 年 12 月 1 日
Ref.: I.K. and H.Matsufuru, arXiv:1710.07226 (Lattice 2017), arXiv:1712.01505 (CANDAR’17),
arXiv:1811.00893 (ICCSA 2018)

本題に入る前に...
今回参加されてまだメーリングリストに加入されていない方、もしよろしければご登録ください。

••

フロントエンド: 金森までご連絡下さい
バックエンド: 松古さん

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

2/26

Outline
1.
2.
3.
4.
5.

Lattice QCD （のボトルネック）: 疎行列の掛け算
Intel Xeon Phi Knights Landing
実装
ベンチマークの結果
まとめ

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

3/26

物理としてのターゲット: クォークとグルーオンの物理
水分子の中を見ていくと...
small

large

http://higgstan.com

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

4/26

物理としてのターゲット: クォークとグルーオンの物理
水分子の中を見ていくと...
small

large

興味の対象
核子の中/核子間

this region

http://higgstan.com

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

4/26

物理としてのターゲット: クォークとグルーオンの物理
水分子の中を見ていくと...
small

large

興味の対象
核子の中/核子間

this region
made of 3 quarks+ gluons
http://higgstan.com

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

4/26

Quantum ChormoDyanamics (QCD)•

クォークとグルーオンの相互作用

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

5/26

Quantum ChormoDyanamics (QCD)••

クォークとグルーオンの相互作用理論は確立: SU(3) gauge theory

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

5/26

Quantum ChormoDyanamics (QCD)•••

クォークとグルーオンの相互作用理論は確立: SU(3) gauge theory
核子、様々なバリオンや中間子の質量を再現 etc.

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

5/26

Quantum ChormoDyanamics (QCD)••••

クォークとグルーオンの相互作用理論は確立: SU(3) gauge theory
核子、様々なバリオンや中間子の質量を再現 etc.
新物理の尻尾を捕まえるには、QCD の寄与の精密な計算が必要

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

5/26

Quantum ChormoDyanamics (QCD)
••
•
•
•

クォークとグルーオンの相互作用理論は確立: SU(3) gauge theory
核子、様々なバリオンや中間子の質量を再現 etc.
新物理の尻尾を捕まえるには、QCD の寄与の精密な計算が必要
理論は分かっても解けない∂µ F µν − igAµ F µν + igF µν Aν = −gψγ ν ψ(i∂µ γµ − igAµ γ µ − m)ψ = 0
Fµν = ∂µ Aν − ∂ν Aµ − ig(Aµ Aν − Aν Aµ )coupling g: 低エネルギーで強結合、非線形

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

5/26

Quantum ChormoDyanamics (QCD)•••••

クォークとグルーオンの相互作用理論は確立: SU(3) gauge theory
核子、様々なバリオンや中間子の質量を再現 etc.
新物理の尻尾を捕まえるには、QCD の寄与の精密な計算が必要
理論は分かっても解けない∂µ F µν − igAµ F µν + igF µν Aν = −gψγ ν ψ(i∂µ γµ − igAµ γ µ − m)ψ = 0Fµν = ∂µ Aν − ∂ν Aµ − ig(Aµ Aν − Aν Aµ )•coupling g: 低エネルギーで強結合、非線形系を（うまく）離散化すれば（=紫外正則化）非摂動的に定義でき
る: Lattice QCD
K.Wilson, Phys.Rev. D10 (1974) 2445-2459

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

5/26

Quantum ChormoDyanamics (QCD)
••
•
•
•

クォークとグルーオンの相互作用理論は確立: SU(3) gauge theory
核子、様々なバリオンや中間子の質量を再現 etc.
新物理の尻尾を捕まえるには、QCD の寄与の精密な計算が必要
理論は分かっても解けない∂µ F µν − igAµ F µν + igF µν Aν = −gψγ ν ψ(i∂µ γµ − igAµ γ µ − m)ψ = 0Fµν = ∂µ Aν − ∂ν Aµ − ig(Aµ Aν − Aν Aµ )••coupling g: 低エネルギーで強結合、非線形系を（うまく）離散化すれば（=紫外正則化）非摂動的に定義できる: Lattice QCD
K.Wilson, Phys.Rev. D10 (1974) 2445-2459
経路積分 ≃ 統計力学系 ≃ モンテカルロでアンサンブル平均!

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

5/26

Quantum ChormoDyanamics (QCD)
••
•
•
•

クォークとグルーオンの相互作用理論は確立: SU(3) gauge theory
核子、様々なバリオンや中間子の質量を再現 etc.
新物理の尻尾を捕まえるには、QCD の寄与の精密な計算が必要
理論は分かっても解けない∂µ F µν − igAµ F µν + igF µν Aν = −gψγ ν ψ(i∂µ γµ − igAµ γ µ − m)ψ = 0Fµν = ∂µ Aν − ∂ν Aµ − ig(Aµ Aν − Aν Aµ )•••coupling g: 低エネルギーで強結合、非線形系を（うまく）離散化すれば（=紫外正則化）非摂動的に定義できる: Lattice QCD
K.Wilson, Phys.Rev. D10 (1974) 2445-2459
経路積分 ≃ 統計力学系 ≃ モンテカルロでアンサンブル平均!
「シミュレーション」といっても...
× 系の時間発展を追う◯ 多数の仮想世界（＝場の配位）を用意して、測定する
cf. （量子力学）何度も実験で測定して期待値を求める

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

5/26

ボトルネック

Dirac 方程式 D|ψi = |bi を解くこと : 線形 solver
RR 4RDADψDψ exp[−Sgauge − d xψDψ] = DA det D[A] exp[−Sgauge ]R• 配位生成: det D = DφDφ exp[−φD−1 φ] の評価が必要: 1 配位の生成に O(10) 回の solver• 測定: hψ(x)ψ(y)i = D−1 (x, y) 配位毎に O(10) 回の solver が必要
京での具体例••

配位生成時間の 60% が solver
測定時間の 80% が solver

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

6/26

Dirac 演算子 D は 1 階微分演算子: γµ (∂µ − iAµ ) − m
疎行列  
f (2) − f (1)−1 1
00 ···f (1)f (3) − f (2)  0 −1 1
f (2)
0 · · ·
 

=
f(4)
−f(3)
cf ∂x f (x) .
 f (3)
..
 00−1f (5) − f (4)
..
..
.
.
..

疎行列に対する solver : Krylov 空間 solver (CG 法など)
D|xi = |bi |xi = c0 |bi + c1 D|bi + c2 D2 |bi + · · · の形で解を探す
D の掛け算が最も重要!

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

7/26

D の詳細D の離散化はいろいろある: symmetry, discretization error, computational cost,...
Wilson type , Clover type , Domainwall type,...

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

8/26

D の詳細D の離散化はいろいろある: symmetry, discretization error, computational cost,...
Wilson type , Clover type , Domainwall type,...
Wilson type: 1368 flop/site, 1.12 byte/flop
DW (x, y) =(m0 + 4)δx,y − 214 P†(1 − γµ )Uµ (x)δx+µ̂,y + (1 + γµ )Uµ (x − µ̂)δx−µ̂,yµ=1

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

8/26

D の詳細D の離散化はいろいろある: symmetry, discretization error, computational cost,...
Wilson type , Clover type , Domainwall type,...
Wilson type: 1368 flop/site, 1.12 byte/flop
DW (x, y) =(m0 + 4)δx,y − 214 P†(1 − γµ )Uµ (x)δx+µ̂,y + (1 + γµ )Uµ (x − µ̂)δx−µ̂,yµ=1

4 次元格子上での 9 点ステンシル計算 (µ = x, y, z, t)ψiα (x): 各格子点に複素 12 成分
i = 1, 2, 3 (カラー)
α = 1, ..., 4 (スピン + クォーク/反クォーク)
Uµ (x)ij : 3 × 3 複素行列 ∈ SU(3) [gluons](γµ )αβ : 4 × 4 成分 permutation 行列
m0 : real number [クォーク質量]

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

8/26

D の詳細D の離散化はいろいろある: symmetry, discretization error, computational cost,...
Wilson type , Clover type , Domainwall type,...
Wilson type: 1368 flop/site, 1.12 byte/flop
DW (x, y) =(m0 + 4)δx,y − 214 P†(1 − γµ )Uµ (x)δx+µ̂,y + (1 + γµ )Uµ (x − µ̂)δx−µ̂,yµ=14 次元格子上での 9 点ステンシル計算 (µ = x, y, z, t)ψiα (x): 各格子点に複素 12 成分
i = 1, 2, 3 (カラー)
α = 1, ..., 4 (スピン + クォーク/反クォーク)
Uµ (x)ij : 3 × 3 複素行列 ∈ SU(3) [gluons](γµ )αβ : 4 × 4 成分 permutation 行列
m0 : real number [クォーク質量]Clover type: 1944 flop/site, 0.94 byte/flop
離散化誤差が Wilson より少ない
Dclov (x, y) = DW + F (x)δx,y ,F (x) =第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作



6 × 6 Hermite00
6 × 6 Hermite

8/26

Intel Xeon Phi KNL

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

9/26

Intel Xeon Phi Knights Landing (KNL)
既に受注終了••••Xeon Phi シリーズ第 2 世代
Many core: 最大 72 コア
4-way hyper-threading
2 コア = 1 タイル
L2 cache を共有••

512-bit long SIMD vector:
AVX-512 instruction set
16GB MCDRAM( > 490 GB/s, B/F∼ 0.2 at OFP)
cache, flat, hybrid•••

SIMD register は 32 個
L1: 32kB + 32kB
L2: 1MB (タイル内で共有)

Ref: J. Jeffers, J. Reinders, A. Sodani, “Intel Xeon Phi Processor High Performance Programming Knights Landing Edition” (Elsevier, 2016)
図は https://software.intel.com/en-us/articles/
intel-xeon-phi-processor-7200-family-memory-management-optimizations から

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

10/26

使った計算機: Oarkforest-PACS•

Host: 最先端共同 HPC 基盤施設 (筑波大＆東大)
http://www.cc.u-tokyo.ac.jp/system/ofp/index-e.html•••

25 PFlops: 3 TFlops [double] × 8208 nodes
14th in Top 500 (2nd in Japan), 2018 年 11 月
PRIMERGY CX1640 M1 by Fujitsu:Intel Xeon Phi 7250 68C 1.4GHz (KNL) + Intel Omni-Path
network topology: Full-bisection Fat Tree2017 年 4 月から本格運用開始

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

http://jcahpc.jp/ofp/ofp intro.html

11/26

実装

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

12/26

実装: メニュー•••••

code framework
data layout
AVX-512 intrinsics
task assignment
prefetch

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

13/26

実装: メニュー•••••

code framework
data layout
AVX-512 intrinsics
task assignment : skip
prefetch : skip

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

13/26

実装

•

code framework
Bridge++ コードセット データ構造拡張版
C++ object oriented, MPI + OpenMP

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

14/26

実装

•

code framework
Bridge++ コードセット データ構造拡張版
C++ object oriented, MPI + OpenMP•

AVX-512 intrinsics
お見せするベンチマークは Simd directory in Grid library からwrapper を借用 (Boyle et al., 2016 https://github.com/paboyle/Grid)（
最新のコードは自前の wrapper で書き換えてます、パフォーマンスは同等です）

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

14/26

実装

•

code framework
Bridge++ コードセット データ構造拡張版
C++ object oriented, MPI + OpenMP•

AVX-512 intrinsics
お見せするベンチマークは Simd directory in Grid library からwrapper を借用 (Boyle et al., 2016 https://github.com/paboyle/Grid)•（最新のコードは自前の wrapper で書き換えてます、パフォーマンスは同等です）
行列積には manual prefetch も適用 (主に L2)

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

14/26

実装: メニュー•••••

code framework
data layout
AVX-512 intrinsics
task assignmentprefetch

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

15/26

実装: メニュー•••••

code framework
data layout
AVX-512 intrinsics
task assignment
prefetch

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

15/26

SIMD
single instruction, multiple data: 一つの演算命令が複数のデータに作用
AVX-512: データは 512bits = 16 実 = 8 複素数変数（単精度の場合）
どの自由度を simd で扱うか？
•••

color : 3
spin: 4 or 2 [フェルミオン場のみ]
格子点: たくさん
これ

データ構造
外側
内側
vec[site outer][spin][color][site inner]|{z} | {z }内部自由度

SIMD 自由度

site idx = (8 or 4) ∗ site outer + site inner（複素数の実部/虚部の自由度が一番内側）

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

16/26

実装: data layout, 2 types

vec[site outer][spin][color][site inner]site 自由度の SIMD 化
512-bit SIMD = 8 （単精度）/4 （倍精度） 個の複素数どう詰める?

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

17/26

実装: data layout, 2 types

vec[site outer][spin][color][site inner]site 自由度の SIMD 化
512-bit SIMD = 8 （単精度）/4 （倍精度） 個の複素数どう詰める?
layout 1

x (=most inner) coordinate
bridge++ w/o SIMD の素朴な拡張(local lattice size)x = 4n or 8n :less flexible
no MPI in x dir.
第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

17/26

実装: data layout, 2 types

vec[site outer][spin][color][site inner]site 自由度の SIMD 化
512-bit SIMD = 8 （単精度）/4 （倍精度） 個の複素数どう詰める?
layout 1
layout 2 SIMD lane = subdomain

x (=most inner) coordinate
bridge++ w/o SIMD の素朴な拡張

subdomains in a local latticecf. Grid library(local lattice size)x = 4n or 8n :less flexible
no MPI in x dir.

内部をいじる必要なし (境界は除く)

隣接格子点へのアクセスが容易 — simd

flexible local lattice size
第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

17/26

ベンチマークの結果KNL• Intel compiler 18.0.1 with -O3 -ipo -no-prec-div -xMIC-AVX512• MCDRAM: cache mode
• KMP AFFINITY=compact (unset if thread/core=1)

Skylake-SP (the same code as KNL)
• Intel compiler 18.0.0 with -ipo -O3 -no-prec-div -fp-mpdel fast=2-xHost• KMP AFFINITY=compact

boundary data copy is enforced even if with single MPI proc.
第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

18/26

データ構造と simd 変数の効果: 1 node
グラフ: I.K. and H.Matsufu ICCSA2018 (doi:10.1007/978-3-319-95168-3 31) より

200

3performance of Wilson mult: 32 x64 latt. [GFlops/node]
1 node, w/o manual prefetch, double prec.

150
layout 1, 1T
2T
4T
baseline, 1T
2T
4T

100

betterSIMD 変数の利用が重要

5001

•
•

432
layout 164

1432
baseline

64

proc.
/node

layout 1: SIMD 変数使用 m512 (w/ wrapper)
baseline: SIMD 変数不使用 (compiler が使ったかも)

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

19/26

データ構造/データプリフェッチ: Wilson-type mult, 1 or 16 nodes
single prec., 323 × 64 latt.
500

グラフ: I.K. and H.Matsufu ICCSA2018 (doi:10.1007/978-3-319-95168-3 31) より

3performance of Wilson mult: 32 x64 latt. [GFlops/node]
w/o manual prefetch
layout 1, 1T
2T
4T
layout 2, 1T
2T
4T

400

300

200

10001432
1 node641432
16 nodes64 proc.
/node

Layout 1 (濃) vs. 2 (淡)Layout 1 の方がいい

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

20/26

データ構造/データプリフェッチ: Wilson-type mult, 1 or 16 nodes
single prec., 323 × 64 latt.
500

グラフ: I.K. and H.Matsufu ICCSA2018 (doi:10.1007/978-3-319-95168-3 31) より

3performance of Wilson mult: 32 x64 latt. [GFlops/node]
w/o manual prefetch
layout 1, 1T
2T
4T
layout 2, 1T
2T
4T

400

300

4504003performance of Wilson mult: 32 x64 latt. [GFlops/node]
w/ and w/o prefetch, layout 1
1T, w/
2T, w/
4T, w/
1T, w/o2T, w/o4T, w/o350
300
250
200

200

150
1001005000
1432
1 node641432
16 nodes64 proc.
/node

Layout 1 (濃) vs. 2 (淡)Layout 1 の方がいい

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

1432
1 node641432
16 nodes64 proc.
/node

w/ (濃) vs. w/o (淡) manualprefetch(layout 1)
10% 以上向上 （16 nodes だと効果は小さい）

20/26

データ構造/データプリフェッチ: Wilson-type mult, 1 or 16 nodes
single prec., 323 × 64 latt.
500

グラフ: I.K. and H.Matsufu ICCSA2018 (doi:10.1007/978-3-319-95168-3 31) より

3

performance of Wilson mult: 32 x64 latt. [GFlops/node]
w/o manual prefetch
layout 1, 1T
2T
4T
layout 2, 1T
2T
4T

400

300

4504003

performance of Wilson mult: 32 x64 latt. [GFlops/node]
w/ and w/o prefetch, layout 1
1T, w/
2T, w/
4T, w/
1T, w/o2T, w/o4T, w/o

350300
250200200

150
10010050
001432
1 node641432
16 nodes64 proc.
/node

Layout 1 (濃) vs. 2 (淡)Layout 1 の方がいい

1432
1 node641432
16 nodes64 proc.
/node

w/ (濃) vs. w/o (淡) manual
prefetch(layout 1)
10% 以上向上 （16 nodes だと効果は小さい）

local volume が小さく (最小: 32 × 43 )、通信を隠蔽しきれていない
第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

20/26

Weak Scaling: D の mult と BiCGStab solve
グラフ: I.K. and H.Matsufu ICCSA2018 (doi:10.1007/978-3-319-95168-3 31) より

323 × 16 latt./node, layout 1, w/ prefetch, single prec.
350

Wilson matrix mult [GFlops/node]

Clover matrix mult [GFlops/node]Mult : GFlops/nodeWilson: & 220
Clover: & 280

300
250
200
150

roofline from MCDRAM BW
Wilson:424/ Clover:506

100
1 proc./node (1T)
4 proc./node (1T)
32 proc./node (2T)
64 proc./node (2T)50
layout 1, w/ prefetch
01250

416

Wislon32
1
number of nodes

416

32

CloverClover matrix BiCGstab [GFlops/node]Wilson matrix BiCGstab [GFlops/node]

Solve : GFlops/nodeWilson: & 110
Clover: & 140

200

150

100

linear algebra
more BW

1 proc./node (1T)
4 proc./node (1T)
32 proc./node (2T)
64 proc./node (2T)50
layout 1, w/ prefetch

requires

0
1

416

32

1416

32

number of nodes

1 mpi rank/core か 1 mpi rank/tile がよい
第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

21/26

（1 ノードで余分な通信を切った場合）
これまでのベンチマーク: ノード分割していない方向にも必ず MPI 通信（ノード内で通信バッファのコピー）を実行
余分なコピーを省いた場合 — 1 node でどこまで速くできるか
600

performance of Clover mult: 323x64 latt. [GFlops/node]
w/ prefetch, layout 1500

roofline
1T2T
4T

400
300
200
1000
14
Wilson

14
Cloverproc.
/node

Wilson mult ∼ 450 GFlops (7.5%)
Clover mult ∼ 500 GFlops (8.3%)
さらに高速化するには、データ再利用の工夫が必要
第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

22/26

参考: Skylake-SP の場合（九大 ITO）
グラフ: I.K. and H.Matsufu ICCSA2018 (doi:10.1007/978-3-319-95168-3 31) より

32 × 16 × 12 × 12 latt./node, layout 1, w/o prefetch, single prec.
700
Wilson matrix mult [GFlops/node]
600
500

Clover matrix mult [GFlops/node]
1 proc./node
2 proc./node
36 proc./node

400
300

roofline from DDR4 BW
Wilson:228/ Clover:273

200
100
layout 1, w/o prefetch
01
WislonClover16
1
416
number of nodes
Clover matrix BiCGstab [GFlops/node]Wilson matrix BiCGstab [GFlops/node]300

4

1 proc./node
2 proc./node
36 proc./node

250
200
150
10050

Mult : GFlops/nodeWilson: & 440
Clover: & 330

Solve : GFlops/nodeWilson: & 180
Clover: & 170
linear algebra
more BWlayout 1, w/o prefetch

requires

01

4

16
1
number of nodes

416•

キャッシュの効果! メモリ BW roofline より速い•

fastest: 1 mpi rank/core

local lattice が大きい時: mult はだいたい roofline 通り

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

23/26

その他の tips•

1 次元 index から 4 次元座標を出す整数演算: 遅い（割り算、余り）( i = x + Nx y + Nx Ny z + Nx Ny Nz t )•••1 次元 index はスレッド並列化で便利
リストベクトルで書き換え中

プロファイラを活用すべし
Intel vtune amplifier でプリフェッチを入れる場所（≃ 実行に時間がかかる命令）を探した

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

24/26

まとめ

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

25/26

まとめ（個人の感想です）

Intel Xeon Phi KNL を使ってみました•••••

SIMD 意識したデータ構造が必須
instrinsic を使えば確実に SIMD 命令を出してくれる（はず）(データ構造 + 適切な # pragma でもある程度行ける場合もある)
SIMD 変数への wapper を使えば、かなり楽をできる
明示的な load/store も省ける
MCDRAM は癖がある — L2 へのプリフェッチが有効、キャッシュ効果によるハイパースケーリングは期待できなさそう
1 core/MPI か 2 core/MPI が速い

第 2 回 HPC-Phys 勉強会＠理研和光 2018/12/01 金森逸作

26/26