测试linpack
配置
配置linpack环境是整个过程中最麻烦的,也可能是因为我在配置的过程中出现了很多小问题吧。大概有3天的时间除了上课就在配置环境。
问题
总结起来问题和解决方法有这些
1、路径设置问题
2、source 的位置(profilehe 和.bashrc)
3、权限问题
4、莫名其妙的问题(解决方法:重装)
做的太着急了,没有截图... 下次要养成截图的习惯!
测试
HPL.dat 的文件内容
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
6 device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
11900 340 35 Ns
1 # of NBs
224 192 192 192 NBs
0 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
1 1 1 Ps
4 4 4 Qs
16.0 threshold
3 # of panel fact
0 1 2 PFACTs (0=left, 1=Crout, 2=Right)
2 # of recursive stopping criterium
2 4 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
3 # of recursive panel fact.
0 1 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)
其中我们需要修改来优化配置的参数有以下:
1、Ns 矩阵的大小
N×N×8 =系统总内存×80%。
注意这里的系统总内存是指可用内存,以B为单位
我的N=11900
2、NBs 求解矩阵分块的大小
为提高数据的局部性,从而提高整体性能,HPL采用分块矩阵的算法。分块的大小对性能有很大的影响,NB的选择和软硬件许多因素密切相关。
NB值的选择主要是通过实际测试得到最优值。但NB的选择上还有一些规律可寻,如:NB不可能太大或太小,一般在256以下; NB×8一定是Cache line的倍数例如,我们的L2缓存为1024K,NB就设置为192
另外,NB大小的选择还跟通信方式,矩阵规模,网络,处理器速度等有关系。一般通过单节点或单CPU测试可以得到几个较好的NB值,但当系统规模增加,问题规模变大,有些NB取值所得性能会下降。所有最好在小规模测试时选择3个左右性能不错的NB,再通过大规模测试检验这些选择。
实践证明224比196要好
3、P Q 二维处理器网格(P×Q)
要求:
(1)P×Q =系统CPU数=进程数
(2)P≤Q
我的进程数是4 实践证明1X4优于2X2
理论值的计算方法
结果参数:
time:运算的时间
Gflops:进行浮点运算的次数
执行语句:mpirun -np x ./xhpl
X为操作系统的进程数或其倍数
我的x=4
最优结果:
是理论值的40%这样
心得体会:
配置环境确实是一个很麻烦的事情,我用了整整3天,最后的测试其实只用了一天。但是我觉得自己的hpl测试还没有达到最高值,后面有时间再慢慢测试。不过经历过这个过程之后,写命令行的能力确实提高了很多 。这周要学习forturn语言,不过软工的冲刺也在这周,合理安排时间吧。