26
1 カーネルベンチマークコードの開発について EigenExaについて EigenExaベンチマークコードについて ベンチマーク結果に基づく性能推定について 2/24/2014 理化学研究所 三上和徳

ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

1

カーネルベンチマークコードの開発について  EigenExaについて  EigenExaベンチマークコードについて  ベンチマーク結果に基づく性能推定について    

2/24/2014  理化学研究所 三上和徳  

Page 2: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

カーネルベンチマークコード

•  開発の目的

– エクサスケール規模のシミュレーションの核となる数値計算アルゴリズムの中で、特に重要なものについて、数値計算ライブラリ等を用いてそのコストを推定するためにカーネルベンチマークを作成し、評価に使用する。

•  対象計算アルゴリズム

– 固有値計算(実数密行列、標準固有値計算)

– 3次元FFT

– 乱数生成器

•  公開計画

– 表

2

カーネル ベンチマークコード

固有値計算(実対称密・標準) 公開中

3次元FFT   4月公開見込み

乱数生成 3月公開見込み

Page 3: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

固有値計算

•  実数対称密行列の標準固有値計算

•  AICSで開発中のEigenExaをもとにベンチマークコードを作成(公開版version  2.1a)  

•  h;p://www.aics.riken.jp/labs/lpnctrt/EigenExa.html  •  10種類のテスト行列(+利用者指定固有値)

•  プロセスグループ形状の指定

•  固有値のみ、固有値+固有ベクトル、など(ただし全モード計算)

3

Page 4: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

3D-FFT

 •  FFTW向けに紹介されている代表的な3DFFTの測定コードを

もとに、各種FFT実装や分割方法による性能を推定する。  •  AICSで開発中のKMATH_FFTからベンチマークを作成中(3

月末完成)。

•  3D-­‐FFTの主要なライブラリ、FFTE,  FFTWをカーネルとして開発中

•  3次元空間の1軸、2軸、3軸分割の選択

4

Page 5: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

乱数生成器

•  メルセンヌツイスター乱数生成器を利用した乱数生成部分の性能評価ベンチマークコード

•  MPIのグループでできるだけ重複のない乱数列を管理し、内部状態管理のI/O処理も含む

•  AICSで開発中のKMATH_RANDOMのベンチマークコードを現在改良し、カーネルベンチ提供用に調整中

5

Page 6: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaについて

6

•  理化学研究所ホームページ2013年12月5日60秒でわかるプレスリリース」より

•  「京」を使い世界最高速の固有値計算に成功  

•  行列の固有値計算では行列を簡単な形式(形状)に変換し、それを中間形式として取り扱います。理研の研究チームは、帯行列(ゼロでない要素が対角線上に帯状に分布する行列)を中間形式に採用することによって、前処理の時間の削減を図った新しい計算アルゴリズムを考案し、それを基にした数学ソフト「EigenExa(アイゲンエクサ)」を開発しました。「京」の全プロセッサを用いて計算した結果、世界最大規模の100万×100万の行列の固有値計算が1時間以内で可能なこと確認しました。これまでの地球シミュレーターの記録(40万×40万の行列で3時間半)を大幅に上回りました。「京」の高い計算能力とEigenExaの利用により、数十万から100万程度の固有値を求める問題は1時間以内にできることが立証されました。今後、シミュレーションの規模を大幅に拡大することが可能になります。なお、EigenExaはオープンソフトウエアとして公開され、理研計算科学研究機構研究部門のホームページからダウンロードできます。  

Page 7: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

固有値計算 - 密行列解法の位置づけ

7

固有値計算 疎行列解法・超大規模問題  ・少数固有モード  ・特定区間モード  ・最小・最大モード

密行列解法・全固有値  ・全固有対  ・全体の数分の1のモード

•  行列の全要素(NxN)をゼロと考えずに扱う

•  直接的解法

•  メモリ使用量O(N^2),演算量O(N^3)

•  ゼロ要素を落とし,大規模問題での使用メモリ量・演算量を削減

•  反復法が基本

•  疎行列ベクトル積(spMV)が性能を左右

疎行列解法の内部解法に

密行列解法を使用

高性能・高品質な密行列向けソルバの必要性

Page 8: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExa - 世界の競争相手

8

Eigen-­‐Exa  •  新1stepスキーム採用 •  京において2^16コアまでの動作確認・通信コストの認識 •  動作&通信モデル構築 •  階層化アルゴリズム、自動チューニングの取り込み •  GPU版も準備へ

ELPA  •  1step vs 2stepの議論:1stepが高速の場合が多い •  三重対角 ⇒ 帯の変換部分は未だよい実装できず ・・・実装レベルでは困難か? •  B/Qでアセンブラチューニングの方向&GPU化へ

ScaLAPACK  ver  2.0.2  •  枠組みに大きな変化なし •  MPIがBLACSの標準に •  ルーチンの強化: ü 非対称行列ソルバー(PDHSEQR) ü 新ルーチンMRRR(PDSYEVR)

DPLASMA  •  PLASMA, MAGMAでの2stepスキーム •  1nodeはスケーラブルに動作 •  DAGタスクスケジューリング

Page 9: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

ScaLAPACK/DPLASMA

9

•  テネシー大学ICL    h;p://icl.cs.utk.edu/dplasma/index.html  •  ScaLAPACK  :   Scalable  Linear  Algebra  PACKage  –  a  library  of  high-­‐performance  linear  algebra  rou^nes  for  parallel  distributed  memory  machines.  ScaLAPACK  solves  dense  and  banded  linear  systems,  least  squares,  eigenvalue,  and  singular  value  problems.  The  key  ideas  includes  •  a  block  cyclic  data  distribu^on  for  dense  matrices  and  a  block  data  distribu^on  for  banded  matrices  •  block-­‐par^^oned  algorithms  to  ensure  high  levels  of  data  reuse  • well-­‐designed  low-­‐level  modular  components  

•  DPLASMA  :  Distributed  Parallel  Linear  Algebra  So`ware  for  Mul^core  Arch.  – DPLASMA    is  the  leading  implementa^on  of  a  dense  linear  algebra  package  for  distributed  heterogeneous  systems.  It  is  designed  to  deliver  sustained  performance  for  distributed  systems  where  each  node  featuring  mul^ple  sockets  of  mul^core  processors,  and  if  available,  accelerators  like  GPUs  or  Intel  Xeon  Phi.  DPLASMA  achieves  this  objec^ve  through  the  state  of  the  art  PaRSEC  run^me,  por^ng  the  Parallel  Linear  Algebra  So`ware  for  Mul^core  Architectures  (PLASMA)  algorithms  to  the  distributed  memory  realm.  

Page 10: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

ELPA

10

•  マックス・プランク研究所  h;p://elpa-­‐lib.di-­‐berlin.mpg.de/wiki  •  ELPA  :  Eigenvalue  soLvers  for  Petaflop  Applica^ons  Library  

–  ELPA  is  a  Fortran-­‐based  high-­‐performance  computa^onal  library  for  the  (massively)  parallel  solu^on  of  symmetric  or  Hermi^an,  standard  or  generalized  eigenvalue  problems.    

–  Once  compiled,  ELPA  library  rou^nes  can  be  linked  to  from  C,  C++,  Fortran  etc.  code  alike.  •  ELPA  works  as  a  "drop-­‐in  enhancement"  for  Scalapack-­‐based  infrastructures  (arguably  the  de  facto  standard  for  high-­‐performance  parallel  linear  algebra).  Thus,  ELPA  is  not  independent  of  this  infrastructure,  but  rather  builds  on  it.  Necessary  prerequisite  libraries  for  ELPA  (o`en  already  provided  by  HPC  vendors)  include:  –  Basic  linear  algebra  subrou^nes  (BLAS)  –  Lapack  –  Basic  linear  algebra  communica^on  subrou^nes  (BLACS)  –  Scalapack  

Page 11: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExa - 国際競争力のある新規計算スキームの採用

11

dense

band

tridiagonal eigenpairs

eigenpairs

eigenpairs

    ScaLAPACK

1step  Scheme

    ELPA

    DPLASMA

2step  Scheme (Byte/Flopが低い)

    Eigen-­‐Exa

新1step  Scheme 高性能実装が困難 全固有ベクトルを求める場合は1stepと大差ないという報告多数

状況によっては逆変換(三重対角 ⇒ 帯)の高性能実装も視野にいれつつ,良好なものを選択

Page 12: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

固有値の計算パターン

12

•  Ax  =  λx  •  行列のサイズが大きい場合  – 方針:Aの固有値は相似変換A  -­‐>  P-­‐1APをしても不変。簡単なP(回転行列

など)で変換を多数回行い対角行列に収束させる

– より簡単な行列形式に中継的に変換して計算時間の短縮をはかる  •  (1)係数行列をより帯域の狭い中間行列に変換して  •  (2)中間行列の固有値を求め  •  (3)本来の係数行列の固有ベクトルを求め直す

–  (1)の中間行列のパターン毎に手法がある  •  EigenExaの標準版、ScaLAPACK  :三重対角行列:Householder(鏡像) •  EigenExaの高速版:帯行列(narrow-­‐band法)    

“Development  of  a  High-­‐Performance  Eigensolver  on  a  Peta-­‐Scale  Next-­‐Genera^on  Supercomputer  System”,  Imamura  etal,  Progress  in  NUCLEAR  SCIENCE  and  TECHNOLOGY,  Vol.  2,  pp.643-­‐650  (2011)  

• 商用ソフトウエアではLanczos法:三重対角がよく利用される  •  行列のサイズが小さい場合:  –  Jacobi法やベキ乗法などの簡便な方法で直接求めても可

Page 13: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExa - Parallel performance: strong scalability

13

N=10K

N=20K

N=50K

N=130K

2013/11/20 13

[sec]

[cores] 2  

20  

200  

2000  

64   128   256   512   1K   2K   4K   8K   16K   32K   64K  

Eigen-­‐K(N=10K)  ELPA2-­‐dev(N=10K)  ScaLAPACK(N=10K)  

Eigen-­‐K  ELPA2-­‐development  ScaLAPACK  2.0.2

Faster

K  computer@RIKEN  AICS      OpenMP+MPI  hybrid  8thread/1proc/1node

Part  of  the  results  is  obtained  by  using  the  K  computer  at  the  RIKEN  Advanced  Ins^tute  for  Computa^onal  Science  (Proposal  number  hp12017).

Page 14: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  Fortranで書かれた主プログラム  – 実行プログラム名 eigenexa_benchmark  

•  京(FX10)・X86  Intel・X86  GNU・BlueGeneQ用のMakefile有り  – make          # libEigenExa.aのみ生成される  – make    eigenexa_benchmark  #  ベンチマークコードを生成  

•  mpirunコマンドなどで起動  – 実行オプションをコマンドライン引数と入力ファイルで指定

– テスト用の係数行列を自動生成  – 複数の行列(タイプ・サイズ)を連続実行可能  – EigenExaの求解ルーチンeigen_sx()又は eigen_s  ()  を呼び出して実行

– 固有値計算に必要な計算資源を出力表示(テキスト)  

14

Page 15: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  実行プログラム名 eigenexa_benchmark  •  実行時のオプション(X86  Linux  Intel環境での例)  

15

$ ./eigenexa_benchmark -help eigenexa_benchmark [options] options: -h displays this help and exit -f input_file uses input_file default is ./IN -g mode sets the process grid as follows R, r MPI_COMM_WORLD row-major mode C, c MPI_COMM_WORLD column-major mode A, a MPI_COMM_SELF (embarrasingly parallel) 1, 2,... 9 splitted MPI_COMM_WORLD with the color=MOD(RANK,{number}) -x dimX dimY sets the cartecian shape (dimX, dimY) dimX <= dimY must be hold.

Page 16: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  行列や求解モードはinput_fileで指定する  •  input_fileのレコードフォーマットは以下  

16

! ! Input file format ! ! N bx by mode matrix solver ! ! N : matrix dimension ! bx : block width for the forward transformation ! by : block width for the backward transformation ! mode : solver mode { 0 : only eigenvalues } ! { 1 : eigenvalues and corresponding eigenvectors} ! { 2 : mode 1 + accuracy improvement for eigenvalues} ! matrix : test matrix { 11 types, 0 ... 10 } ! solver : { 0 : eigen_sx, new algorithm, faster on the K } ! { 1 : eigen_s, conventional algorithm } ! ! if a line starts from '!', the line is treated as a comment ! 1000 48 128 2 0 0 -1

Page 17: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  テスト用の係数行列  •  matrixパラメタ(0-­‐9):行列要素を自動生成。  – 以下の10種類の行列タイプから選択  

•  matrixパラメタ(10):行列要素をユーザが指定。  – 外部ファイルW.datから読み込む

•  ベンチマークはinput_fileで複数の行列(タイプ・サイズ)を指定して連続実行可能

17

Matrix type = 0 (Frank matrix) Matrix type = 1 (Toeplitz matrix) Matrix type = 2 (Random matrix) Matrix type = 3 (Frank matrix 2) Matrix type = 4 (W: 0, 1, ..., n-1) Matrix type = 5 (W: sin(PAI*5*i/(n-1)+EPS 1/4) 3) Matrix type = 6 (W: MOD(i,5)+MOD(i,2)) Matrix type = 7 (W: same as Frank matrix) Matrix type = 8 (W: Uniform Distribution, [0,1)) Matrix type = 9 (W: Gauss Distribution, m=0,s=1) Matrix type = 10 (W: Read from the data file 'W.dat')

Page 18: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  テスト結果出力例(X86  Linux  Intel環境での例)  

18

$ export OMP_NUM_THREADS=8 $ export I_MPI_FABRICS=shm:ofa $ mpirun -np 16 ${bin_path}/EigenExa-2.1/eigenexa_benchmark -x 4 4 INPUT FILE=IN ====================================================== Solver = eigen_sx / via penta-diagonal format Block width = 48 / 128 NUM.OF.PROCESS= 16 ( 4 4 ) NUM.OF.THREADS= 8 Matrix dimension = 20000 Matrix type = 0 (Frank matrix) Internally required memory = 809378576 [Byte] mode 'X' :: mode 'A' + accuracy improvement Elapsed time = 72.6625800132751 [sec] FLOP = 41809663584490.7 Performance = 575.394702154152 [GFLOPS] ----------------------------------------------- 続く

Page 19: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  テスト結果出力例(X86  Linux  Intel環境での例続き)  

19

----------------------------------------------- max|w(i)-w(i).true|/|w.true|= 1.066005805307593E-008 162121999.707086 *** Eigenvalue Relative Error *** : PASSED max|w(i)-w(i).true| = 1.72822991013527 162121999.707086 *** Eigenvalue Absolute Error *** : FAILED Do not mind it. Relative error is small enough. ----------------------------------------------- |A|_{1}= 200010000.000000 epsilon= 2.220446049250313E-016 max|Ax-wx|_{1}/Ne|A|_{1}= 3.267477534449350E-002 50 *** Residual Error Test *** : PASSED |ZZ-I|_{F}= 1.498340806171751E-012 *** Orthogonality Test *** : PASSED

Page 20: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  テスト結果出力例(X86  Linux  Intel環境プロセスpinステートも表示)  

20

$ export I_MPI_DEBUG=5 $ export I_MPI_FABRICS=shm:ofa $ mpirun -np 16 ${bin_path}/EigenExa-2.1/eigenexa_benchmark -x 4 4 [0] MPI startup(): Rank Pid Node name Pin cpu [0] MPI startup(): 0 16562 vsp25 {0,1,2,3,4,5,6,7} [0] MPI startup(): 1 16563 vsp25 {8,9,10,11,12,13,14,15} [0] MPI startup(): 2 9634 vsp27 {0,1,2,3,4,5,6,7} [0] MPI startup(): 3 9635 vsp27 {8,9,10,11,12,13,14,15} [0] MPI startup(): 4 10120 vsp29 {0,1,2,3,4,5,6,7} [0] MPI startup(): 5 10121 vsp29 {8,9,10,11,12,13,14,15} [0] MPI startup(): 6 16952 vsp10 {0,1,2,3,4,5,6,7} [0] MPI startup(): 7 16953 vsp10 {8,9,10,11,12,13,14,15} [0] MPI startup(): 8 18491 vsp11 {0,1,2,3,4,5,6,7} [0] MPI startup(): 9 18492 vsp11 {8,9,10,11,12,13,14,15} [0] MPI startup(): 10 19442 vsp12 {0,1,2,3,4,5,6,7} [0] MPI startup(): 11 19443 vsp12 {8,9,10,11,12,13,14,15} [0] MPI startup(): 12 19454 vsp16 {0,1,2,3,4,5,6,7} [0] MPI startup(): 13 19455 vsp16 {8,9,10,11,12,13,14,15} [0] MPI startup(): 14 17532 vsp17 {0,1,2,3,4,5,6,7} [0] MPI startup(): 15 17533 vsp17 {8,9,10,11,12,13,14,15}

... OS(ジョブスケジューラ)が捕捉したメモリ量: Max Memory : 936 MB

Page 21: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  計算各フェイズでの通信待ち等さらに細かな情報を得たい場合は、Makefile  中で以下のマクロを 1に設定してmakeするとよい  – DEBUGFLAG  =  $(MACRO_D_PREFIX)TIMER_PRINT=0  

•  実行時stdoutの例  

21

calc (u,beta) 0.660794019699097 mat-vec (Au) 2.37120127677917 281.151445554300 2update (A-uv-vu) 0.451921701431274 1475.18179488897 calc v 0.000000000000000E+000 v=v-(UV+VU)u 0.455217599868774 UV post reduction 5.616807937622070E-002 COMM_STAT BCAST :: 0.337308168411255 REDUCE :: 1.66761779785156 REDIST :: 0.000000000000000E+000 GATHER :: 8.748936653137207E-002 TRD-BLK 10000 4.13007497787476 322.835139912989 GFLOPS TRD-BLK-INFO 10000 48

… …

Page 22: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  テスト結果出力例(京コンピュータでの例)  

22

$ export OMP_NUM_THREADS=8 $ mpiexec -n 16 ./eigenexa_benchmark -x 4 4 INPUT FILE=IN ====================================================== Solver = eigen_sx / via penta-diagonal format Block width = 48 / 128 NUM.OF.PROCESS= 16 ( 4 4 ) NUM.OF.THREADS= 8 Matrix dimension = 20000 Matrix type = 0 (Frank matrix) Internally required memory = 809378576 [Byte] mode 'X' :: mode 'A' + accuracy improvement Elapsed time = 53.00329535175115 [sec] FLOP = 41803090435242.67 Performance = 788.6885175312324 [GFLOPS] ----------------------------------------------- max|w(i)-w(i).true|/|w.true|= 1.066005768542290E-08 162121999.7070863 *** Eigenvalue Relative Error *** : PASSED max|w(i)-w(i).true| = 1.728229850530624 162121999.7070863 *** Eigenvalue Absolute Error *** : FAILED Do not mind it. Relative error is small enough. 以下カット

Page 23: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

EigenExaベンチマークコードについて

•  ベンダー統計ツールとの数値比較  – 京コンピュータの場合(fipp)  行列要素生成処理も含んだ表示  

23

Elapsed(s) MFLOPS MFLOPS/PEAK(%) MIPS MIPS/PEAK(%) ------------------------------------------------------------------------ 56.6477 773401.5044 37.7637 332690.4151 32.4893 Application ------------------------------------------------------------------------ 56.6477 48266.1621 37.7079 20797.4704 32.4960 Process 10 54.7928 49989.9193 39.0546 21502.4550 33.5976 Process 9 54.7822 49874.1968 38.9642 21430.2796 33.4848 Process 13 54.7787 50252.3960 39.2597 21643.9902 33.8187 Process 1 54.7602 50124.2821 39.1596 21575.6756 33.7120 Process 5

... similar 16 procs Mem throughput Mem throughput Elapsed(s) _chip(GB/S) /PEAK(%) SIMD(%) --------------------------------------------------------- 56.6477 195.4106 19.0831 75.1494 Application --------------------------------------------------------- 56.6477 12.2135 19.0836 75.0269 Process 10 54.7928 12.6243 19.7254 75.1301 Process 9 54.7822 12.6181 19.7158 75.2976 Process 13 54.7787 12.6283 19.7317 74.9276 Process 1 54.7602 12.6464 19.7599 75.0345 Process 5

... similar 16 procs

Page 24: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

ベンチマーク結果表示値に基づく性能推定について

24

•  演算量  –  FLOP  :  EngenExa  eigen_sx()の浮動小数点演算量  ~=  Cf  x  N3       – Matrix  dimension  =                N  

•  メモリ量 –  Internally  required  memory  :MPIプロセスあたりの合計配列サイズ~=  Cm  x  N2        –  (次ページ注参照)    

•  計算時間  –  Elapsed  ^me  :  演算・通信等の合計経過時間

•  実効ピーク性能比  –  Performance  [GFLOPS]:固有値計算の性能(全プロセス合計値)  – プロセス当たりの性能はデータレイアウト・プロセスマッピングでほぼ決まる  

•  テスト結果を用いて推定(同じプラットフォームで外挿)できること – より大規模な行列を計算する場合の浮動小数点演算量、メモリ量、演算時間

– より多数のノード数を利用する場合の演算時間

– 通信の待ち時間は実行条件への依存が大きく、推定方法は一様ではない

Page 25: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

利用上の留意点

25

•  必要メモリ量の表示

– ベンチマークコードによるメモリ量の算出(Internally  required  memory  )  • MPIプロセスあたりの最大メモリ量(ソースプログラムで静的に読める値)    

– ジョブが実際に必要とするメモリ量はより多い  • テキスト・ライブラリ・MPIバッファなどのセグメントは入っていない  •  OpenMPスレッド並列の場合はスレッドprivateな変数領域が相当量必要  

•  計算結果  – 計算の結果a(n,n)は対角化されるが  a(1,1)成分はFLOP値(浮動小数点演算回

数)、a(2,1)成分は経過時間の値で各々上書きされて返ってくるので注意  

ベンチマークコードによるメモリ量の表示  Internally  required  memory  =        809378576    [Byte]  

OSによる統計出力メモリ量(京コンピュータfipp表示の例)      スレッド数  MAX  MEMORY  SIZE  (USE)    1    1346.4  MiB  (1.4GB)  8       2078.6  MiB  (2.1GB)  

Page 26: ベンチマークコードについて - Riken...カーネルベンチマークコード • 開発の目的 – エクサスケール規模のシミュレーションの核となる数値計算アルゴリズム

26

ダウンロードページ  h;p://www.aics.riken.jp/labs/lpnctrt/EigenExa.html