LoginSignup
4
2

More than 5 years have passed since last update.

NAS Parallel BenchmarksによるMPI性能のベンチマーク

Last updated at Posted at 2017-05-10

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.defmake.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

結果例

随時追加.

参考

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2