searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

轻量级MPI函数统计信息收集工具mpiP使用分享

2024-08-16 09:36:57
16
0

mpiP简介

mpiP是一个用于MPI应用程序的轻量级、伸缩性良好的MPI profiling库。由于mpiP只收集关于MPI函数的统计信息,因此与跟踪工具相比,它生成的开销和数据要少得多。

mpiP安装

最新版本的mpiP可以在github/LLNL/mpiP/releases/latest获取。

依赖库:安装mpiP之前需要安装两个依赖库

  • libunwind
  • binutils

注意:在Cenos7.9系统安装libunwind需要先对gcc进行升级

安装方法:

./configure
make
make install

安装后会生成一个动态库 libmpiP.so

mpiP使用

可以通过使用以下参数在运行时设置mpiP的行为。多个参数可以用空格或逗号分隔。

参数 描述 默认值
-c 生成简明版本的报告,省略特定流程的细节。
-d 禁止打印callsite细节部分。
-e 使用浮点格式打印报表数据。
-f dir 将输出文件记录在目录中。 .
-g 打开mpiP调试模式。 disabled
-k n 将调用站点堆栈回溯深度设置为。 1
-l 通过使用MPI集合在每个调用站点的基础上生成调用站点信息,使用更少的内存来生成报告。
-n 不要截断调用站点中文件名的完整路径名。
-o 在初始化时禁用分析。应用程序必须使用MPI_Pcontrol()启用分析。
-p 点对点直方图报告消息大小和使用的通信器。
-r 通过在单个任务中聚合数据来生成报告。 default
-s n 设置哈希表大小为。 256
-t x 为报告设置打印阈值,其中是每个呼叫站点的MPI时间百分比。 0.0
-v 生成简洁和详细的报告输出。
-x exe 指定可执行文件的完整路径。
-y 集体直方图报告消息大小和使用的通信器。
-z 在MPI_Finalize处禁止打印报告。
  • 设置环境变量

在~/.bashrc文件中添加MPIP设置,如

export MPIP="-e,-f /data/apps/mpiP/logs,-y,-p"

在MPI命令之前执行环境配置命令,也可将其加入到~/.bashrc中,但不建议

LD\_PRELOAD=/data/apps/mpiP/mpiP-main/libmpiP.so

注:/data/apps/mpiP/mpiP-main/ 为mpiP安装目录

  • 以观测Abaqus作业MPI交互信息为例,作业执行命令
LD\_PRELOAD=/data/apps/mpiP/mpiP-main/libmpiP.so nohup /data/apps/Abaqus2/2021/linux\_a64/code/bin/ABQLauncher mp\_mode=mpi output\_precision=single cpus=64 mp\_host\_split=4 input=abaqus\_zhousw3\_IO.inp job=abaqus\_zhousw3\_IO scratch=/mnt/share/scratch1 interactive &

程序结束运行时会输出一个mpiP的输出文件到前面MPIP设置中指定的位置/data/apps/mpiP/logs

  • mpiP输出文件解读

  • 打开输出文件可以看到几个部分。首先记录了程序运行的信息,每个MPI进程的分布:
  • 第二部分记录了每个进程花在MPI相关的函数上的时间,占总的时间比例:

    可以看到通信负载相对比较均衡。
  • 第三部分展示了各个MPI相关函数调用的信息,每一个ID对应一个位置的调用(同样的MPI函数出现在不同地方的调用,有不同的ID,如下图的Waitall、Bcast、Isend等)
  • 第四部分记录了总耗时在前20个的MPI函数调用。这里的site就对应上一部分的ID,可以据此判定这一项对应哪个位置的调用。
  • 第五部分记录了发的消息总大小、次数、平均大小。按照消息总大小展示前20名的函数调用。
  • 第六部分展示了集合通信的总耗时、通信子大小、数据大小(此为-y参数对应展示信息)。
  • 第七部分展示了点对点通信的通信子大小、消息大小等,MPI_Sent %表示的是这一个调用占的发送消息的总比例(此为-p参数对应展示信息)。
  • 第八部分是每个调用位置的统计信息。该部分首先是时间信息,包括了操作时间的最大最小值和平均值,以及该调用位置耗时在它进程的MPI总时间和整个程序时间中的占比(Rank列中的星号代表该调用位置的累加的信息)。这部分的排序是按字母序的,a开头的Allreduce在前。
  • 最后一部分同样是每个调用位置的统计信息,记录的是通信的消息大小。
0条评论
0 / 1000
c****w
3文章数
0粉丝数
c****w
3 文章 | 0 粉丝
c****w
3文章数
0粉丝数
c****w
3 文章 | 0 粉丝
原创

轻量级MPI函数统计信息收集工具mpiP使用分享

2024-08-16 09:36:57
16
0

mpiP简介

mpiP是一个用于MPI应用程序的轻量级、伸缩性良好的MPI profiling库。由于mpiP只收集关于MPI函数的统计信息,因此与跟踪工具相比,它生成的开销和数据要少得多。

mpiP安装

最新版本的mpiP可以在github/LLNL/mpiP/releases/latest获取。

依赖库:安装mpiP之前需要安装两个依赖库

  • libunwind
  • binutils

注意:在Cenos7.9系统安装libunwind需要先对gcc进行升级

安装方法:

./configure
make
make install

安装后会生成一个动态库 libmpiP.so

mpiP使用

可以通过使用以下参数在运行时设置mpiP的行为。多个参数可以用空格或逗号分隔。

参数 描述 默认值
-c 生成简明版本的报告,省略特定流程的细节。
-d 禁止打印callsite细节部分。
-e 使用浮点格式打印报表数据。
-f dir 将输出文件记录在目录中。 .
-g 打开mpiP调试模式。 disabled
-k n 将调用站点堆栈回溯深度设置为。 1
-l 通过使用MPI集合在每个调用站点的基础上生成调用站点信息,使用更少的内存来生成报告。
-n 不要截断调用站点中文件名的完整路径名。
-o 在初始化时禁用分析。应用程序必须使用MPI_Pcontrol()启用分析。
-p 点对点直方图报告消息大小和使用的通信器。
-r 通过在单个任务中聚合数据来生成报告。 default
-s n 设置哈希表大小为。 256
-t x 为报告设置打印阈值,其中是每个呼叫站点的MPI时间百分比。 0.0
-v 生成简洁和详细的报告输出。
-x exe 指定可执行文件的完整路径。
-y 集体直方图报告消息大小和使用的通信器。
-z 在MPI_Finalize处禁止打印报告。
  • 设置环境变量

在~/.bashrc文件中添加MPIP设置,如

export MPIP="-e,-f /data/apps/mpiP/logs,-y,-p"

在MPI命令之前执行环境配置命令,也可将其加入到~/.bashrc中,但不建议

LD\_PRELOAD=/data/apps/mpiP/mpiP-main/libmpiP.so

注:/data/apps/mpiP/mpiP-main/ 为mpiP安装目录

  • 以观测Abaqus作业MPI交互信息为例,作业执行命令
LD\_PRELOAD=/data/apps/mpiP/mpiP-main/libmpiP.so nohup /data/apps/Abaqus2/2021/linux\_a64/code/bin/ABQLauncher mp\_mode=mpi output\_precision=single cpus=64 mp\_host\_split=4 input=abaqus\_zhousw3\_IO.inp job=abaqus\_zhousw3\_IO scratch=/mnt/share/scratch1 interactive &

程序结束运行时会输出一个mpiP的输出文件到前面MPIP设置中指定的位置/data/apps/mpiP/logs

  • mpiP输出文件解读

  • 打开输出文件可以看到几个部分。首先记录了程序运行的信息,每个MPI进程的分布:
  • 第二部分记录了每个进程花在MPI相关的函数上的时间,占总的时间比例:

    可以看到通信负载相对比较均衡。
  • 第三部分展示了各个MPI相关函数调用的信息,每一个ID对应一个位置的调用(同样的MPI函数出现在不同地方的调用,有不同的ID,如下图的Waitall、Bcast、Isend等)
  • 第四部分记录了总耗时在前20个的MPI函数调用。这里的site就对应上一部分的ID,可以据此判定这一项对应哪个位置的调用。
  • 第五部分记录了发的消息总大小、次数、平均大小。按照消息总大小展示前20名的函数调用。
  • 第六部分展示了集合通信的总耗时、通信子大小、数据大小(此为-y参数对应展示信息)。
  • 第七部分展示了点对点通信的通信子大小、消息大小等,MPI_Sent %表示的是这一个调用占的发送消息的总比例(此为-p参数对应展示信息)。
  • 第八部分是每个调用位置的统计信息。该部分首先是时间信息,包括了操作时间的最大最小值和平均值,以及该调用位置耗时在它进程的MPI总时间和整个程序时间中的占比(Rank列中的星号代表该调用位置的累加的信息)。这部分的排序是按字母序的,a开头的Allreduce在前。
  • 最后一部分同样是每个调用位置的统计信息,记录的是通信的消息大小。
文章来自个人专栏
EHPC
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
0