跳转至

小作业一:MPI 异步通信与带宽测试

负责助教:张闰清 zhangrq20@mails.tsinghua.edu.cn

背景

在本次作业中,首先会通过osu-micro-benchmarks对集群的MPI通信带宽和延迟进行测试,且这两种测试会在以太网络和InfiniBand两种网络环境下进行测试。

在课堂上,我们学习了 MPI 的点对点通信原语。其中, MPI_SendMPI_Recv 为阻塞式通信,MPI_IsendMPI_Irecv 为非阻塞式通信。非阻塞通信提供了 计算-通信 重叠的可能性。

本次作业提供的程序模拟了 计算-通信 循环出现的场景。

通过动手测试,你将体会到高速网络在高性能计算中的作用以及 计算-通信 重叠带来的性能提升。

任务

实验文件在集群上的位置为 /home/course/hpc/assignments/2024/exp1

首先将实验文件 拷贝到自己的目录 ,并进入 exp1 目录:

cp -R /home/course/hpc/assignments/2024/exp1 ~/
cd ~/exp1/

本次作业提供了 mpi_sync.cppmpi_async.cpp 两份代码,分别使用阻塞/非阻塞通信原语模拟了 计算-通信 循环出现的场景。使用以下方式编译程序:

spack load openmpi
make

应当得到与下面类似的输出:

mpicxx mpi_sync.cpp -O3 -std=c++11 -o mpi_sync
mpicxx mpi_async.cpp -O3 -std=c++11 -o mpi_async

编译得到的 mpi_syncmpi_async 程序有三个输入参数,分别代表 运行轮数、每次通信消息的长度、每次的计算量。

我们将运行轮数固定为 10

在消息长度较短的时候,可能性能会有波动,助教在批改时会考虑到此问题。

任务一:网络带宽和延迟测试

首先测试Infiniband,运行脚本为osu_latency_ib.shosu_bw_ib.sh。 使用命令./osu_latency_ib.sh./osu_bw_ib.sh运行。

请补全下列表格:

编号 消息长度 延迟 (us) 带宽(MB/s)
1 1
2 2
3 4
4 8
5 16
6 32
7 64
8 128
9 256
10 512
11 1024
12 2048
13 4096
14 8192
15 16384
16 32768
17 65536
18 131072
19 262144
20 524288
21 1048576
22 2097152
23 4194304

接下来测试以太网络,运行脚本为osu_latency_ethernet.shosu_bw_ethernet.sh。 使用命令./osu_latency_ethernet.sh./osu_bw_ethernet.sh运行。

请补全下列表格:

编号 消息长度 延迟 (us) 带宽(MB/s)
1 1
2 2
3 4
4 8
5 16
6 32
7 64
8 128
9 256
10 512
11 1024
12 2048
13 4096
14 8192
15 16384
16 32768
17 65536
18 131072
19 262144
20 524288
21 1048576

结合测试结果,请回答问题:

  • 请描述当消息长度增加时,带宽和延迟分别呈现出什么样的趋势?
  • 该趋势在两种网络下有何不同?
  • 为什么会有这样的趋势?
  • 对比InfiniBand和以太网络下的带宽和延迟,它们之间的差距是多少?

任务二:阻塞与非阻塞的对比

本任务的运行脚本为 task2.sh 。使用命令 ./task2.sh 运行。

我们将使用 mpi_syncmpi_async 程序来对比两种通信模式的性能。具体而言,你需要补全以下表格:

编号 消息长度 计算量 (ms) mpi_sync 总耗时 (ms) mpi_async 总耗时 (ms)
1 100000000 10
2 100000000 20
3 100000000 40
4 100000000 80
5 100000000 160

并回答问题:

  • 通信时间和计算时间满足什么关系时,非阻塞通信程序能完美掩盖通信时间?
  • 简述两份代码的不同之处。

实验提交

此实验仅需提交实验报告,请在下发的 report.md 模板中填写内容,并将 PDF 文件 提交至网络学堂。


最后更新: 2024年3月19日
作者: Harry Chen (11.19%), 翟明书 (52.99%), zms1999 (35.82%)