NAS Parallel Benchmarksとは?
NASAが開発している,並列計算ベンチマークスイート.
主にCFDなどの流体シミュレーションを想定し,様々な計算カーネル(シミュレーションのコアとなる部分)や疑似アプリケーションでテストすることが可能.
MPI版,OpenMP版,グリッド・コンピューティング版などのバリエーションが存在している.
今回は,MPIが動作しているPC Cluster上で,ベンチマーク測定を行う.
テスト環境
- CentOS 6.9
- gcc 4.8.2
- gfortran 4.4.7
- OpenMPI 1.10
- NPB 3.3.1
ただし,特定の環境に依存する要素は少ないので,他のOSや,コンパイラ・MPI環境での動作すると思われる.
make
, gcc
, mpicc
, f77
, mpif77
などのコマンドが動作するか,事前に確認しておくと良い.
ベンチマーク概要
ベンチマークの種類
- 計算カーネル
-
IS
: 整数ソート.ランダムメモリアクセス -
EP
: Embarrassingly Parallel.ノード間通信はほとんど発生しない -
CG
: CG法.事前に予測困難な通信パターン -
MG
: マルチグリッド計算.遠距離近距離両方での通信パターン. -
FT
: 3次元FFT.all-to-all通信.
-
- 疑似アプリケーション
-
BT
: 3重対角行列の連立1次方程式ソルバー -
SP
: 5重対角行列の連立1次方程式ソルバー -
LU
: LU分解による連立1次方程式ソルバー
-
ベンチマークの規模
-
S
: スモールサイズ.テスト実行用 -
W
: ワークステーション向けサイズ -
A
, 'B', 'C': 実ベンチマーク用.それぞれ 4倍ずつ大きくなっている. -
D
,E
,F
: 大規模ベンチマーク用.それぞれ16倍ずつ大きくなっている.
詳細: https://www.nas.nasa.gov/publications/npb_problem_sizes.html
ベンチマークの実行
何はともあれ
-
https://www.nas.nasa.gov/publications/npb.html
より,ソースコードをダウンロードし,解凍.
$ wget https://www.nas.nasa.gov/assets/npb/NPB3.3.1.tar.gz
$ tar xvzf NPB3.3.1.tar.gz
シリアル実行
まずは単体ノードで実行する.
コンパイル
コンパイル設定(config/make.def
)とテストスイート設定(config/suite.def
)を作成する必要があるが,試験的な実行であれば,テンプレートをそのままコピーすれば良い.
そして,make suite
.
$ cd NPB3.3.1/NPB3.3-SER
$ cp config/make.def.template config/make.def
$ cp config/suite.def config/suite.def
$ make suite
ちなみにデフォルトのスイート設定は以下の様になっているため,それぞれに対応する実行ファイルが,bin
に出力される.
$ cat config/suite.def
ft S
mg S
sp S
lu S
bt S
is S
ep S
cg S
ua S
dc S
$ ls bin
bt.S.x cg.S.x dc.S.x ep.S.x ft.S.x is.S.x lu.S.x mg.S.x sp.S.x ua.S.x
実行
bin
にあるファイルをそのまま実行する.
$ ./bin/bt.S.x
NAS Parallel Benchmarks (NPB3.3-SER) - BT Benchmark
No input file inputbt.data. Using compiled defaults
Size: 12x 12x 12
Iterations: 60 dt: 0.010000
Time step 1
Time step 20
Time step 40
Time step 60
Verification being performed for class S
accuracy setting for epsilon = 0.1000000000000E-07
Comparison of RMS-norms of residual
1 0.1703428370954E+00 0.1703428370954E+00 0.7201925617357E-13
2 0.1297525207003E-01 0.1297525207003E-01 0.3680617304070E-12
3 0.3252792698948E-01 0.3252792698949E-01 0.1275660313637E-12
4 0.2643642127515E-01 0.2643642127517E-01 0.8077661407724E-12
5 0.1921178413175E+00 0.1921178413174E+00 0.1349364923488E-12
Comparison of RMS-norms of solution error
1 0.4997691334580E-03 0.4997691334581E-03 0.1963312458515E-12
2 0.4519566678297E-04 0.4519566678296E-04 0.2412401204172E-12
3 0.7397376517297E-04 0.7397376517292E-04 0.6065990734533E-12
4 0.7382123863238E-04 0.7382123863244E-04 0.8375181727013E-12
5 0.8926963098749E-03 0.8926963098749E-03 0.3485687350348E-13
Verification Successful
BT Benchmark Completed.
Class = S
Size = 12x 12x 12
Iterations = 60
Time in seconds = 0.18
Mop/s total = 1251.22
Operation type = floating point
Verification = SUCCESSFUL
Version = 3.3.1
Compile date = 10 May 2017
Compile options:
F77 = f77
FLINK = $(F77)
F_LIB = (none)
F_INC = (none)
FFLAGS = -O
FLINKFLAGS = -O
RAND = (none)
Please send all errors/feedbacks to:
NPB Development Team
npb@nas.nasa.gov
並列実行
コンパイル
単体実行と同様に,コンパイル設定とテストスイート設定を作成する必要がある.
suite.def
では,問題サイズとプロセス数を指定することができる.
make.def
については,コンパイラ設定などを環境に合わせて設定する必要がある.
$ cd NPB3.3.1/NPB3.3-MPI
$ cp config/make.def.template config/make.def
$ cp config/suite.def config/suite.def
$ emacs config/make.def
-
make.def
の編集箇所.コンパイラにmpif77
と,mpicc
を指定.
MPIF77 = mpif77
MPICC = mpicc
-
suite.def
の編集後.W
(ワークステーションサイズ),プロセッサ数4.
ft W 4
mg W 4
sp W 4
lu W 4
bt W 4
is W 4
ep W 4
cg W 4
dt W 4
suite.def
とmake.def
の準備ができたら,make
$ make suite
実行
$ mpirun -np 4 ./bin/bt.A.4
NAS Parallel Benchmarks 3.3 -- BT Benchmark
No input file inputbt.data. Using compiled defaults
Size: 64x 64x 64
Iterations: 200 dt: 0.0008000
Number of active processes: 4
Time step 1
Time step 20
Time step 40
Time step 60
Time step 80
Time step 100
Time step 120
Time step 140
Time step 160
Time step 180
Time step 200
Verification being performed for class A
accuracy setting for epsilon = 0.1000000000000E-07
Comparison of RMS-norms of residual
1 0.1080634671464E+03 0.1080634671464E+03 0.7101254243319E-14
2 0.1131973090122E+02 0.1131973090122E+02 0.9415542762816E-15
3 0.2597435451158E+02 0.2597435451158E+02 0.6838887328685E-15
4 0.2366562254468E+02 0.2366562254468E+02 0.6455215276928E-14
5 0.2527896321175E+03 0.2527896321175E+03 0.1259241302557E-13
Comparison of RMS-norms of solution error
1 0.4234841604053E+01 0.4234841604053E+01 0.1048656009767E-14
2 0.4439028249700E+00 0.4439028249700E+00 0.6752834174215E-14
3 0.9669248013635E+00 0.9669248013635E+00 0.3100139909806E-14
4 0.8830206303977E+00 0.8830206303977E+00 0.6286506715733E-15
5 0.9737990177083E+01 0.9737990177083E+01 0.1824151397873E-14
Verification Successful
BT Benchmark Completed.
Class = A
Size = 64x 64x 64
Iterations = 200
Time in seconds = 32.49
Total processes = 4
Compiled procs = 4
Mop/s total = 5179.74
Mop/s/process = 1294.94
Operation type = floating point
Verification = SUCCESSFUL
Version = 3.3.1
Compile date = 11 May 2017
Compile options:
MPIF77 = mpif77
FLINK = $(MPIF77)
FMPI_LIB = -L/usr/local/lib -lmpi
FMPI_INC = -I/usr/local/include
FFLAGS = -O
FLINKFLAGS = -O
RAND = (none)
Please send feedbacks and/or the results of this run to:
NPB Development Team
Internet: npb@nas.nasa.gov
結果例
随時追加.