OSU micro-benchmarks安装测试指导
OSU micro-benchmarks工具介绍
OSU Micro benchmark工具是由Ohio State University提供的MPI(Message Passing Interface,消息传递接口)通信效率评测工具。该工具旨在通过执行不同模式的MPI操作,来测试并度量MPI通信的带宽和延迟等性能参数。
具体来说,OSU Micro benchmark工具分为点对点通信和组通信两种形式。点对点通信模式主要用于测试两个节点之间的通信性能,而组通信模式则用于测试多个节点之间的协作和通信效率。通过OSU Micro benchmark工具的测试结果,用户可以获取关于MPI通信性能的详细数据,包括消息传递的速率、延迟、吞吐量等。这些数据可以帮助用户了解MPI通信在不同条件下的性能特点,从而进行性能优化和决策。
OSU Micro benchmark工具只是一个测试工具,它并不能直接解决MPI通信中的性能问题。在发现性能瓶颈或问题时,用户还需要结合具体的应用场景和代码实现,进行深入的分析和优化。
综上所述,OSU Micro benchmark工具是一个功能强大的MPI通信效率评测工具,它可以帮助用户全面了解和评估MPI通信的性能特点,为性能优化和决策提供有力的支持。
软件安装步骤
组件 | 下载 |
---|---|
Intel MPI | Intel 2023 |
OSU micro-benchmarks | https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.3.tar.gz |
OS | CentOS7.9 |
GCC | 4.8.5 |
- 加载MPI环境
- 上传OSU的源码包“osu-micro-benchmarks-7.3.tar.gz”
- 步骤 3 创建OSU的安装目录
-mkdir /path/to/osu
- 步骤 4 解压OSU源码包,并进入解压后的目录
tar zxvf osu-micro-benchmarks-7.3.tar.gzcd osu-micro-benchmarks-7.3
- 步骤 5 执行以下命令进行编译配置
./configure CC=mpiicc CXX=mpiicpc --prefix=/path/to/osu
- 步骤 6 执行以下命令进行编译安装
make -j
make -j install
- 步骤 7 检查是否生成可执行文件
安装成功后,会在/path/to/osu/libexec/osu-micro-benchmarks目录下的pt2pt、one-side、collective等子目录下生成osu_xxx的可执行文件
使用软件测试网络通信
- 点对点测试
程序 | 说明 |
---|---|
osu_latency | 延迟测试,以乒乓方式(ping-pong fashion)进行,发送者发送一条具有特定数据大小的消息给接收者,并等待接收者的回复。接收者从发送者那里接收消息,并发送一条具有相同数据大小的回复消息。 |
osu_bw | 带宽测试(单向),发送者向接收者发送固定数量(等于窗口大小)的背靠背消息,然后等待接收者的回复。接收者只有在收到所有这些消息后才发送回复 |
osu_bibw | 双向带宽测试,双向带宽测试与带宽测试类似,不同之处在于涉及的两个节点都会发送固定数量的背靠背消息并等待回复 |
- 聚合通信测试
程序 | 说明 |
---|---|
osu_allgather | MPI_Allgather集合通信操作的时延测试 |
osu_allreduce | MPI_Allreduce集合通信操作的时延测试 |
osu_alltoall | MPI_Alltoall集合通信操作的时延测试 |
osu_barrier | MPI_Barrier集合通信操作的时延测试 |
osu_bcast | MPI_Bcast集合通信操作的时延测试 |
osu_gather | MPI_Gather集合通信操作的时延测试 |
osu_reduce | MPI_Reduce集合通信操作的时延测试 |
osu_scatter | MPI_Scatter集合通信操作的时延测试 |
- 自动化测试脚本
#!/bin/bashshell_path="/share/opt/osu/libexec/osu-micro-benchmarks/mpi/collective" #脚本存放路径
host_path=$(pwd) #待测节点
process_list="$host_path/processlist" #进程数
nodes=$host76/nodelist #nodelist填写IB网络IP
readarray -t pro_list < $processlist #读取进程数文件至数组当中
count=${#pro_list[@]} #获取数组长度
logfile=$current_path/log/$count"nodes-osu_allgather-"$(date +%Y-%m-%d-%H%M%S)".log" #设置日志格式
size=65536 #控制size大小source /share/opt/modules_x86_64/init/profile.sh #使用module加载MPI通信库变量
module use /share/opt/moduledeps/
module load intel/2023.2.0echo "*******************This is osu_allgather test**************************" >> $logfile
$(date +%Y-%m-%d-%H%M%S) >> $logfilefor ((i=0; i<$count; i++))
do cd $host_path
echo "*******************ppn=${pro_list[$i]}*********************************" >> $logfile
mpirun -ppn ${pro_list[$i]} -hostfile $nodes $shell_path/osu_allgather -m $size >> $logfile #osu_allgather替换成待测试项
sleep 5done$(date +%Y-%m-%d-%H%M%S) >> $logfile
----结束
希望对您有所帮助