廖 琦
中国科学院化学研究所
我们目前拥有两套用于分子模拟的Beowulf计算机群。一套是用于教学目的8 CPU AMD Athlon MP 2000+ (主频1666M Hz) 构架的Beowulf计算机群,用100M Ethernet连接,代号为ding,搭建于2002年10月。另一套是上个月搭建的用于多相多组份高分子体系模拟的机群,代号为m,拥有46个Intel Xeon 2.4 G CPU,以1000M Ethernet连接。
为了便于和其他Beowulf计算机群进行性能比较,最近我们用通用的Linpack软件包对这两个系统进行的测试。下面是整个测试过程和结果的报告。
我是在
http://www.netlib.org/benchmark/hpl/
下载的hpl包.HPL的常见问题参见:
http://www.netlib.org/benchmark/hpl/faqs.html
Linpack的常见问题参见:http://www.netlib.org/utk/people/JackDongarra/faq-linpack.html#_Toc27885730
这个HPL版本为1.0,我看到有人用1.1的,但我没有在网上找到。
为了正确编译HPL,需要MPI和BLAS库,由于RedHat Linux自己带有LAM-MPI,所以我没有用其他的MPI库。对于BLAS库,我采用了ATLAS, 下载地址为:http://www.netlib.org/atlas/ 目前的稳定版本为3.4.2,采用这个库的原因是免费而且提供针对机器的优化。
安装ATLAS和HPL不需要root权限,普通用户即可安装。
首先安装ATLAS库。具体过程参见解包后的README和INSTALL文件。这一步我碰到没有任何困难。安装过程是交互式的,主要需要回答一些关于机器的配置问题.完成后会针对你的配置在lib目录下生成针对机器的目录,存放生成的优化库。最后你可以通过一个测试命令检测是否成功安装。
然后就可以安装HPL。解包后需要自己编辑针对自己机器配置的make文件。你可以从setup目录中的几个样本中的一个进行修改而得到合适的文件。
这里我碰到一点麻烦,主要是在机群M上,由于OSCAR将RedHat的LAM-MPI version 6.5替换为version7.0,需要修改MPI库的路径;另外由于在m上采用了多线程编译,需要联接pthread库。
其他没有什么大问题,只是对其他路径进行定制,再在编译选项上加上:
-march=pentium4 mpfmath=sse msse2 (m)
-march=athlon-mp mpfmath=sse msse (ding)
编译成功后在bin目录下生成一个针对机器的目录,在此目录下存放编译成功的可执行代码。同时在此目录下有一个HPL.dat样本文件,可以进行简单的测试。这个文件也是我们下一步对机器进行全面测试时,需要精细调整的文件。
关于HPL.dat文件的参数意义和设置原则可以参见:http://www.netlib.org/benchmark/hpl/tuning.html
需要说明的是关于#
of problem size(N) 。
原则上说应该取内存允许的最大值。如果CPU个数为W,每个CPU拥有的内存为M,那么
,其中8是指双精度浮点数(64bit)占用的字节数。
那么在ding上N的上限为21166, 在m上N的上限为75828
实际上我们分别取19000和75000。
关于# of process grid (P x Q)
原则上P 与Q越接近越好,但是由于46只能分成1ื46和2ื23,所以在这个参数选择上,
m这个系统十分为难,测试结果也受到一些影响。
我们实际用于ding的HPL.dat文件如下:
HPLinpack benchmark input file
Innovative Computing Laboratory,
HPL.out output file name (if any)
6 device
out (6=stdout,7=stderr,file)
1 # of
problems sizes (N)
19000 Ns
1 # of NBs
84 NBs
1 # of
process grids (P x Q)
1 Ps
7 Qs
16.0 threshold
1 # of
panel fact
1 PFACTs (0=left, 1=Crout, 2=Right)
1 # of
recursive stopping criterium
4 NBMINs (>= 1)
1 # of
panels in recursion
2 NDIVs
1 # of recursive panel fact.
2 RFACTs (0=left, 1=Crout, 2=Right)
1 # of
broadcast
1 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
1 DEPTHs (>=0)
2 SWAP
(0=bin-exch,1=long,2=mix)
84
swapping threshold
0 L1 in
(0=transposed,1=no-transposed) form
0 U in
(0=transposed,1=no-transposed) form
1
Equilibration (0=no,1=yes)
8 memory
alignment in double (> 0)
我们实际用于m 的HPL.dat文件如下:
HPLinpack benchmark input file
Innovative Computing Laboratory,
HPL.out output file name (if any)
6 device
out (6=stdout,7=stderr,file)
1 # of
problems sizes (N)
75000 Ns
1 # of NBs
64 NBs
1 # of
process grids (P x Q)
2 Ps
23 Qs
16.0 threshold
1 # of
panel fact
1 PFACTs (0=left, 1=Crout, 2=Right)
1 # of
recursive stopping criterium
4 NBMINs (>= 1)
1 # of
panels in recursion
2 NDIVs
1 # of recursive panel fact.
2 RFACTs (0=left, 1=Crout, 2=Right)
1 # of
broadcast
0 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
0 DEPTHs (>=0)
2 SWAP
(0=bin-exch,1=long,2=mix)
64
swapping threshold
0 L1 in
(0=transposed,1=no-transposed) form
0 U in
(0=transposed,1=no-transposed) form
1
Equilibration (0=no,1=yes)
8 memory
alignment in double (> 0)
关于测试输出数据的意义可以参见:http://www.netlib.org/benchmark/hpl/tuning.html
其中理论峰值Gpflos的计算,对32位x86构架的处理器,为
2ื主频ืCPU数,因为一个时钟周期可以执行两条浮点运算。
测试结果摘要如下表一:
Table 1. Linpack Performance of Cluster ding and m
Year |
Computer |
Number of Processors |
Measured Gflops |
Size of Problem |
Size of 1.2 Perf |
Theoretical Peak Gflops |
2002 |
Ding |
7 |
7.768 |
19000 |
|
23.3 |
2003 |
M |
46 |
96.04 |
75000 |
|
220.4 |
作为比较,我在表二和表三列出了目前世界和中国top5的机器Linpack测试结果。其中新的中国top50明天即将公布,网址在http://www.samss.org.cn/
Table 2. Linpack Performance of Top 5 (June 2003, http://www.top500.org/dlist/2003/06/)
Rank |
Computer |
Number of Processors |
Measured Gflops |
Size of Problem |
Size of 1.2 Perf |
Theoretical Peak Gflops |
1 |
NEC earth-simulator |
5120 |
35860 |
1075200 |
266240 |
40960 |
2 |
HP ASCI-Q AlphaServer |
8192 |
13880 |
633000 |
225000 |
20480 |
3 |
Linux Networx Xeon 2.4G |
2304 |
7634 |
350000 |
75000 |
12288 |
4 |
IBM SP Power3 375 |
8192 |
7304 |
|
|
12288 |
5 |
IBM SP Power3 375/16way |
6656 |
7304 |
|
|
9984 |
Table 3. Linpack Performance
of Top 5 in
Rank |
Computer |
Number of Processors |
Measured Gflops |
Size of Problem |
Size of 1.2 Perf |
Theoretical Peak Gflops |
1 |
Legend Xeon 2.0GHz Myrinet |
512 |
1046 |
153600 |
49920 |
2048 |
2 |
Legend Xeon 2.4GHz Myrinet |
256 |
711.7 |
106304 |
29952 |
1228 |
3 |
HP SuperDome
875MHz |
192 |
408 |
|
|
672 |
4 |
IBM Xeon 2.4GHz Gig-E |
256 |
402.5 |
|
|
1228 |
5 |
Legend Xeon 2.4GHz Giganet |
256 |
385.4 |
154856 |
60000 |
1228 |
ding的测试输出原始结果如下:
============================================================================
HPLinpack 1.0 --
High-Performance Linpack benchmark --
Written by A. Petitet and R.
Clint Whaley,
Innovative Computing Labs.,
UTK
============================================================================
An explanation of the input/output parameters follows:
T/V : Wall time
/ encoded variant.
N : The order
of the coefficient matrix A.
NB : The
partitioning blocking factor.
P : The number
of process rows.
Q : The number
of process columns.
Time : Time in
seconds to solve the linear system.
Gflops : Rate of execution for solving the linear system.
The following parameter values will be used:
N : 19000
NB :
84
P : 1
Q : 7
PFACT
: Crout
NBMIN
: 4
NDIV : 2
RFACT
: Right
BCAST
: 1ringM
DEPTH
: 1
SWAP : Mix
(threshold = 84)
L1 : transposed
form
U : transposed
form
EQUIL
: yes
ALIGN : 8 double precision words
----------------------------------------------------------------------------
- The matrix A is randomly generated for each test.
- The following scaled residual checks will be computed:
1) ||Ax-b||_oo / ( eps
* ||A||_1 * N )
2) ||Ax-b||_oo / ( eps
* ||A||_1 * ||x||_1 )
3) ||Ax-b||_oo / ( eps
* ||A||_oo * ||x||_oo )
- The relative machine precision (eps)
is taken to be 1.110223e-16
- Computational tests pass if scaled residuals are less
than 16.0
============================================================================
T/V
----------------------------------------------------------------------------
W11R2C4
19000 84 1
7 598.40 7.642e+00
----------------------------------------------------------------------------
||Ax-b||_oo / ( eps * ||A||_1 * N
) = 0.0354046 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_1 * ||x||_1
) = 0.0148153 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_oo
* ||x||_oo ) =
0.0028482 ...... PASSED
============================================================================
m测试输出原始结果如下:
============================================================================
HPLinpack 1.0 --
High-Performance Linpack benchmark --
Written by A. Petitet and R.
Clint Whaley,
Innovative Computing Labs.,
UTK
============================================================================
An explanation of the input/output parameters follows:
T/V : Wall time
/ encoded variant.
N : The order
of the coefficient matrix A.
NB : The
partitioning blocking factor.
P : The number of process rows.
Q : The number
of process columns.
Time : Time in
seconds to solve the linear system.
Gflops : Rate of execution for solving the linear system.
The following parameter values will be used:
N : 75000
NB : 64
P : 2
Q : 23
PFACT
: Crout
NBMIN
: 4
NDIV : 2
RFACT
: Right
BCAST
: 1ring
DEPTH
: 0
SWAP : Mix
(threshold = 64)
L1 : transposed
form
U : transposed
form
EQUIL
: yes
ALIGN
: 8 double precision words
----------------------------------------------------------------------------
- The matrix A is randomly generated for each test.
- The following scaled residual checks will be computed:
1) ||Ax-b||_oo / ( eps
* ||A||_1 * N )
2) ||Ax-b||_oo / ( eps
* ||A||_1 * ||x||_1 )
3) ||Ax-b||_oo / ( eps
* ||A||_oo * ||x||_oo )
- The relative machine precision (eps)
is taken to be 1.110223e-16
- Computational tests pass if scaled residuals are less
than 16.0
============================================================================
T/V
----------------------------------------------------------------------------
W00R2C4
75000 64 2
23 2984.28 9.425e+01
----------------------------------------------------------------------------
||Ax-b||_oo / ( eps * ||A||_1 * N
) = 0.0033867 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_1 * ||x||_1
) = 0.0069262 ...... PASSED
||Ax-b||_oo / ( eps * ||A||_oo
* ||x||_oo ) =
0.0012201 ...... PASSED
============================================================================
1. m的实测速度不足其峰值的一半,除去矩阵分块不合理(2x23)外,还有其他因素吗?
目前m的实测速度已经达到每秒九百六十亿次浮点运算(96Gflops) 。由于集群体系本身的缺陷,LINPACK实测数据很难超过理论峰值的一半,
但是依然有可以改进的余地,例如采用更加合理的PQ和Nb参数,从而达到每秒一千亿次浮点运算(100Gflops)的指标。
单纯从Rmax/Rpeak参数来说,该系统远好于联想和IBM同样基于Giganet的系统(见表3),达到了0.44,而后两者的Rmax/Rpeak均小于1/3。当然这个参数与内连的CPU数目有关,但是我们可以看到,m在系统大小和性能表现方面都比较均衡,是目前我们一个较好的选择,为以后我们的分子模拟工作提供了高性价比的平台。
2. ding的实测速度只有其峰值的1/3,是网络延迟造成的还是其他系统缺陷?
这个系统的LINPACK性能让人失望。该系统是一个从底层硬件构造的廉价实验平台,我们会在以后对该系统进行彻底改造。
2003.11.7
(转载请注明出处)