1 NPB介绍
NAS并行基准测试(NPB)是一套针对高并行超级计算机性能评估的基准测试。它们由NASA高级超级计算(NAS)部门(前身是NASA数值空气动力学模拟程序)开发和维护,该部门位于NASA艾姆斯研究中心。基准来自计算流体动力学(CFD)应用程序,由原始“铅笔和纸”规范(NPB 1)中的五个内核和三个伪应用程序组成。该基准套件已扩展为包括针对非结构化自适应网格,并行I / O,多区域应用程序和计算网格的新基准。NPB中的问题大小是预定义的,并表示为不同的类别。NPB的参考实现在MPI和OpenMP(NPB 2和NPB 3)等常用编程模型中可用。
1.1 基准测试规范
npb1中规定的最初八个基准模拟CFD应用中的计算和数据移动:
- 五个内核
- IS -整数排序,随机内存访问
- EP -令人尴尬的并行任务
- CG -共轭梯度,不规则的记忆存取和通信
- MG -多重网格对序列网格,长、短距离通信,内存密集型
- FT -离散三维快速傅里叶变换,全对全通信
- 三个伪应用程序
- BT -三对角求解器
- SP -五对角求解器
- LU -高斯求解器
1.2 问题规模
S级:较小,用于快速测试
W级:工作站大小(90年代的工作站;现在可能太小了)
A,B,C级:标准测试问题; 从一个类到下一个类,大小增加约4倍
D,E,F级:大型测试问题; 与之前的每个类相比,大小增加了约16倍
| 版本 | 基准 | 问题类别 | 使用的编程模型 | 主要变化 |
|---|---|---|---|---|
| NPB 3.4 | IS,EP,CG,MG,FT,BT,BT-10,SP,LU,UA,DC,DT | S,W,A,B,C,D,E,F | MPI,OpenMP | 添加了F类,动态内存分配 |
| NPB 3.4-MZ | BT-MZ,SP-MZ,LU-MZ | S,W,A,B,C,D,E,F | MPI + OpenMP,OpenMP | 动态内存分配 |
| NPB 3.3.1 | IS,EP,CG,MG,FT,BT,BT-10,SP,LU,UA,DC,DT | S,W,A,B,C,D,E | MPI,OpenMP,串行 | 增加了E类 |
| NPB 3.3.1-MZ | BT-MZ,SP-MZ,LU-MZ | S,W,A,B,C,D,E,F | MPI + OpenMP,OpenMP,串行 | 嵌套的OpenMP版本 |
| GridNPB 3.1 | ED,HC,VP,MB | S,W,A,B | Globus,Java,串行 | 添加了Globus版本 |
| NPB 3.0 | IS,EP,CG,MG,FT,BT,SP,LU | S,W,A,B,C | OpenMP,HPF,Java | 新的编程范例 |
| NPB 2.4.1 | IS,EP,CG,MG,FT,BT,BT-IO,SP,LU | S,W,A,B,C,D | MPI | 添加了BT-IO D类 |
| NPB 2.3 | IS,EP,CG,MG,FT,BT,SP,LU | S,W,A,B,C | MPI,串行 | 添加了CG,串行版本 |
2 NPB的安装和配置
(前提是已经安装了MPI)
首先去NPB官网(https://www.nas.nasa.gov/publications/npb.html)下载NPB的安装包。
下载好后,将压缩包解压出来。
tar -zxvf NPB3.3.1.tar.gz
cd NPB3.3.1
cd NPB3.3-MPI
cd config
cp make.def.template make.def然后配置NPB,修改make.def的下列信息,其他信息不用修改
32行:MPIF77 = mpif77
39行:FMPI_LIB =
78行:MPICC = mpicc
87行:CMPI_LIB = 3 NPB使用
make <benchmark-name> NPROCS=<number> CLASS=<class> [SUBTYPE=<type>] [VERSION=VEC]
C类,D类和E类不适用于DT。类别E不适用于IS。“VERSION=VEC”选项用于选择BT和LU的向量化版本。
以IS为例,编译指令为 make IS(指定哪个程序)CLASS=B(指定问题规模)NPROCS=8(指定运行的处理器个数) #问题规模为B,处理器个数为8
cd NPB3.3.1
cd NPB3.3-MPI
make IS CLASS=B NPROCS=8编译完成后会在bin/文件夹下面生成is.B.8可执行文件
使用MPI运行IS.B.8这个文件,记得分配对应的核数,否则会报错
mpirun -np 8 is.B.8其他程序可以按照上述方式使用。