1.
NPB介绍
数值空气动力学模拟(Numerical Aerodynamic Simulation,NAS)项目设立于NASA艾姆斯
研究中心,是NASA高性能计算的探路者,集中研究计算流体动力学和相关的航空科学学科。为了客观地测量高度并行计算机的性能将他们的性能与传统的超级计算机进行比较,NAS在1991年开发了NAS并行基准NPB 1.0(NAS Parallel Bechmark 1.0),该基准由从计算流体动力学代码中得到的,得到了广泛的接受,并成为超级计算机性能的标准指示器。
由于使用NPB 1.0 基准测试前,营销部门已经对其基于特定的硬件实现了积极地优化,所以NPB的指示功能被大大地削弱了,使用编写良好但未调优的基准代码可能会更好地显示这些新的可移植代码的性能。所以开始使用NPB 的源代码版本,即NPB2.0, 也是NPB 3.0 的最终发布版本的过渡。
当前有三种类型的程序在大部分分布式内存机器是可移植的,分别是基于MPI的消息传递程序(消息传递接口)或PVM(并行虚拟机),以及基于HPF(高性能Fortran)的数据并行程序。
NAS程序模型选择MPI的原因在于它选择了MPI因为它便于获得,并且广泛应用于NAS机器上。同时,MPI作为一个行业标准,通常情况下能取得较高的性能,NAS甚至相信MPI将成为事实上的标准消息传递库。
虽然使用MPI实现了基准测试,但它们并不只针对MPI进行测试,作为基准,它用来衡量一个复杂系统的整体性能,MPI仅仅是其中的一部分。
NPB由8个程序组成,包括5个内核测试程序和3个应用测试程序分别从不同的方面反映了流体力学计算的特点。NPB中每个基准测试程序有7类问题规模,分别为S、W、A、B、C、D和E。其中A类规模最小,S(Sample)类是样例程序,W(Workstation)类通常用于工作站。NPB每个应用有各自的特点,其中IS由C语言编写,其他7个由FORTRAN语言编写,是浮点密集型计算。
NPB的5个内核测试程序。
1.EP(Embarrassingly parallel),繁杂并行,用于计算Gauss伪随机数,主要执行浮点数计算,EP的显著特点是不执行任何处理器间的通信,因此用不同的互相连接得到的结果显示同样的执行特点。
2.MG(MultiGrid)多栅格基准测试,监测短距和长距离通信。MG是一个简化的多栅格核心。
3.快速Fourier转换(FT)检测长距离通信,利用快速傅里叶变换来解决3维的偏微分方程。
4.IS(Integer sort)用于求解基于桶排序的二维大整数排序,要求打量全交换通信。
5.CG(Conjugate Gradient)用于求解大型稀疏对称正定矩阵的最小特征值的近似值。
另外流体力学中的3个应用测试程序:
1.LU(Lower upper triangular)用于基于对称超松弛法求解块稀疏方程组。
2.SP(scalar penta-diagonal)用于求解5对角线方程组
3.BT(Block Tri-Diagonal)用于求解3对角线方程组
关于问题规模,A类通常是运行于中等性能的工作站系统,B类运行于高端的工作站系统或者是小型的并行系统,C类则用于超级计算系统。具体的规模参考下表
Benchmark |
规模A |
规模B |
规模C |
EP |
228 |
230 |
232 |
MG |
2563 |
2563 |
5123 |
CG |
14000 |
75000 |
150000 |
FT |
2562*128 |
512*2562 |
5123 |
IS |
223 |
225 |
227 |
LU |
643 |
1023 |
1623 |
SP |
643 |
1023 |
1623 |
BT |
643 |
1023 |
1623 |
2.
NPB的安装
i安装MPI
下载mpich:http://www.mpich.org/
解压tar -xvzf mpich-3.2.1.tar.gz
cd mpich-3.2.1.tar.gz
./configure
make
make install
ii安装NPB
下载NPB:https://www.nas.nasa.gov/publications/npb.html
tar -xvzf NPB2.4.1.tar.gz
复制形成make.def: cd NPB2.4.1.tar.gz
cp config/make.def.template config/make.def
修改config/make.def文件:
33行:MPIF77=mpif77 #设定编译器
35行:FLINK = mpif77
40行:FMPI_LIB = -L/usr/local/lib -lmpich #连接器会到这里找MPICH库(如果不修改安装路径,一般默认安装在此路径下,根据实际情况)
45行:FMPI_INC = -I /usr/local/include #mpif.h在该路径下(同上)
80行: MPICC = mpicc
82行:CLINK = mpicc
87行: CMPI_LIB = -L/data2/software/mpich-gcc/lib/ -lmpich
93行:CMPI_INC = -I /data2/software/mpich-gcc/include #mpi.h在该路径下
3.
NPB使用
i编译
以IS为例,编译指令为 make IS(指定哪个程序)CLASS=A (指定问题规模)NPROCS=2(指定运行的处理器个数) #问题规模为A,处理器个数为16
示例如下:
cd NPB2.4.1
make IS CLASS=A NPROCS=2
编译完成后会在NPB2.4-MPI/bin/目录下生成is.A.2可执行文件
ii执行
cd NPB2.4.1/bin
./is.A.2
其他程序可以按照上述方式使用。
参考
[1] Willi. 高性能计算基准测试程序(一)--NPB. http://blog.csdn.net/ztq157677114/article/details/52585109
[2] David Bailey, Tim Harris, and etc. The NAS Parallel Benchmarks 2.0. NAS-95-020. 1995.