我在AWS EC2上由两个节点组成的小型MPI集群上运行Intel MPI Benchmarks。
基准测试的可执行文件是使用make CC=/usr/bin/mpicc CXX=/usr/bin/mpicxx
编译的。
基于this tutorial设置了集群。 (我所做的不同是我安装了OpenmPI而不是MPICH。)
AWS实例的类型为t3a.xlarge。 根据{{3}},网络性能最高为5 Gbps(即 625 MB / s )。
我选择Ubuntu 18.04作为这些实例的操作系统。
PingPong基准给了我令人惊讶的结果:
mpiuser@mpin0:~$ mpirun -rf rankfile -np 2 ./IMB-MPI1 PingPong
#------------------------------------------------------------
# Intel(R) MPI Benchmarks 2019 Update 3,MPI-1 part
#------------------------------------------------------------
# Date : Thu Nov 28 15:17:38 2019
# Machine : x86_64
# System : Linux
# Release : 4.15.0-1054-aws
# Version : #56-Ubuntu SMP Thu Nov 7 16:15:59 UTC 2019
# MPI Version : 3.1
# MPI_Datatype : MPI_BYTE
#---------------------------------------------------
# Benchmarking PingPong
# #processes = 2
#---------------------------------------------------
#bytes #repetitions t[usec] Mbytes/sec
0 1000 32.05 0.00
1 1000 31.74 0.03
2 1000 31.98 0.06
4 1000 32.08 0.12
8 1000 31.86 0.25
16 1000 31.30 0.51
32 1000 31.40 1.02
64 1000 32.86 1.95
128 1000 32.66 3.92
256 1000 33.56 7.63
512 1000 35.00 14.63
1024 1000 34.74 29.48
2048 1000 36.56 56.02
4096 1000 39.80 102.91
8192 1000 49.92 164.10
16384 1000 57.73 283.79
32768 1000 78.86 415.54
65536 640 170.26 384.91
131072 320 239.80 546.60
262144 160 357.34 733.61
524288 80 609.82 859.74
1048576 40 1106.36 947.77
2097152 20 2514.62 833.98
4194304 10 5830.39 719.39
某些速度超过625 MB / s。
rankfile
用于强制将两个进程分配到两个节点上。
并非两个MPI进程都在同一节点上运行。
rankfile
的内容是:
rank 0=mpin0 slot=0
rank 1=mpin1 slot=0
导致基准测试结果超出理论极限的可能原因是什么?