mpiP 是一个轻量级的 MPI 性能分析工具,用于分析并行程序中的 MPI 通信性能。以下是 mpiP 分析结果的主要内容和结构:
- 全局信息
mpiP 的输出结果首先会提供关于性能实验的基本信息,包括程序运行的命令、mpiP 版本、运行时间、使用的计时器等。例如:
复制
@ mpiP
@ Command : your_mpi_program
@ Version : 3.5.0
@ MPIP Build date : Oct 20 2020, 18:22:06
@ Start time : 2020 10 20 18:25:41
@ Stop time : 2020 10 20 18:25:45
@ Timer Used : PMPI_Wtime
这些信息提供了关于实验环境和运行条件的概览。 - MPI 时间概览
mpiP 会统计程序在 MPI 调用上花费的时间,并与总运行时间(AppTime)进行对比。输出结果会显示每个进程的 AppTime 和 MPITime,以及 MPI 调用占总运行时间的比例(MPI%)。例如:
复制
@--- MPI Time (seconds) ---------------------------------------------------
Task AppTime MPITime MPI%
0 9.51 0.168 1.76
1 9.51 0.168 1.76
2 9.51 0.228 2.40
3 9.51 0.219 2.31
-
38.1 0.783 2.06
这里,“*” 表示所有进程的总和。
3. 调用点(Callsite)分析
mpiP 会详细列出程序中所有 MPI 调用的调用点(callsite),包括调用点的 ID、调用栈深度、文件名、行号、父函数以及具体的 MPI 函数。例如:
复制
@--- Callsites: 211 -------------------------------------------------------
ID Lev File/Address Line Parent_Funct MPI_Call
1 0 mpistubs.c 1172 hypre_MPI_Allreduce Allreduce
1 1 timing.c 338 hypre_PrintTiming
1 2 amg.c 421 main
这些信息帮助用户了解每个 MPI 调用的上下文。
4. 聚合时间分析
mpiP 还会提供一个聚合时间分析表,展示占用最多时间的前 20 个 MPI 调用点。表中包括调用点的 ID、总时间、该时间在总运行时间和 MPI 时间中的比例,以及调用点时间的变异系数(COV)。例如:
复制
@--- Aggregate Time (milliseconds) ----------------------------------------
Call Site Time %AppTime %MPI_Time COV
Allreduce 1 168.0 0.45 1.76 0.12
Send 2 120.5 0.32 1.30 0.21
这些数据帮助用户快速定位性能瓶颈。
5. 通信特征分析
mpiP 主要用于分析程序的通信特征,例如:
点对点通信:耗时较多的点对点通信调用(如 ISend 和 IRecv)。
集合通信:集合通信的类型和时间占比。
消息大小分布:通过 -p 和 -y 选项,mpiP 可以生成点对点和集合通信的消息大小分布直方图。
6. 性能分析的局限性
虽然 mpiP 可以提供通信特征的详细分析,但它主要关注 MPI 通信部分,对于程序的计算和访存性能分析则相对不足。因此,对于全面的性能分析,可能需要结合其他工具。
总结
mpiP 的分析结果提供了关于程序 MPI 通信性能的详细信息,包括时间分布、调用点上下文和通信特征。它可以帮助开发者快速定位通信瓶颈,优化并行程序的性能。
mpitrace 的使用方法
mpitrace 是一个用于分析 MPI 并行程序的工具,主要用于收集 MPI 调用的详细信息,包括消息传递、任务放置、内存利用率以及用户和系统时间等。
编译和链接
编译要求:mpitrace 需要使用 mpicc 编译器,并且底层 C 编译器需设置为 gcc。
编译步骤:
bash复制
cd src
./configure # 或者添加其他选项,如 --with-vprof
make libmpitrace.so
运行时加载
在运行 MPI 程序时,需要通过 LD_PRELOAD 环境变量加载 libmpitrace.so:
bash复制
export LD_PRELOAD=/path/to/libmpitrace.so
mpirun --np <num_processes> your_mpi_program
unset LD_PRELOAD
这样,mpitrace 会拦截 MPI 调用并生成分析数据。
输出文件
默认情况下,mpitrace 会生成以下输出文件:
mpi_profile.jobid.rank:包含每个任务的 MPI 调用信息。
可选的二进制采样输出:vmon.out.jobid.rank。
注意事项
mpitrace 不支持多线程环境下的 MPI 调用追踪,仅适用于单线程程序。
在使用前需要确保环境变量正确设置,例如运行 IBM Parallel Performance Toolkit 的设置脚本。
mpidump 的使用方法
目前搜索结果中未找到明确的 mpidump 工具或其使用方法的相关信息。可能是该工具较为少见,或者其名称与常见的 MPI 工具不匹配。如果您指的是某种特定的 MPI 数据转储工具,建议提供更多上下文信息或检查工具名称是否正确。
如果需要进一步帮助,请提供更多关于 mpidump 的背景或来源信息,以便更准确地提供帮助。