示例5:MPI+OpenMP混合模式
简介
本示例主要通过对MPI应用,通过鲲鹏DevKit系统性能分析工具的HPC应用分析,采集模式为MPI / MPI+OpenMP混合模式,让用户清晰的了解到应用在各个rank下的通信状态。
环境准备
精细化分析
- 代码样例准备。
编译ring.c,并赋予可执行文件所有用户可读、可写和可执行权限。
mpicc ring.c -O3 -o ring -fopenmp -lm && chmod 777 ring
- 创建HPC应用分析任务,分析当前应用。
本示例要分析确定MPI程序,所以不需要在服务器上运行程序,而是直接在工具中选择需要运行的程序,当前是mpi_cost程序。
表1 配置参数说明 参数
说明
分析对象
应用
模式
Launch Application
应用路径
输入程序所在的绝对路径,例如本示例将代码样例放在服务器“/opt/testdemo/mpi/ring”路径下(多节点环境下应用在对应目录下存在)。
分析类型
HPC应用分析
采集模式
MPI/MPI+OpenMP混合模式;本示例主要是对MPI的应用进行分析,所以选择MPI/MPI+OpenMP模式。
共享目录
单节点情况下填入存在且可用的目录,多节点情况下需填入节点间的共享目录;例如本示例是在两个节点下进行采集所以填入节点间的共享目录“/home/share”。
mpirun所在路径
mpirun命令所在绝对路径。
mpirun参数
--allow-run-as-root -H 节点IP:rank数(例如:--allow-run-as-root -H 192.168.1.10:4)
MPI / MPI+OpenMP混合模式
精细化分析
采样时长
60秒,采样时长过短可能会因为应用未结束(或应用中途停止)导致结果数据不完整。
统计更多调用栈信息
开启
其他参数
默认;用户名和密码等参数需按实际配置。
- 查看分析结果。
如图1所示,点击查看rank-to-rank 热力图,(ranki,rankj)对应数据为ranki发往rankj的数据加ranki接收自rankj的数据。在左侧图中使用鼠标框选需要查看的范围;右图为左侧框选的详细内容,点击
或
按钮可放大缩小,也可通过鼠标滑轮控制。
图2 选择通信域选择通信域弹窗中可点击
搜索“通信域名称”和“通信域成员”,点击
对“通信域成员”排序,点击“查看详情”可查看通信域信息弹窗。
图3 node to node热力图当统计对象为Node To Node时,可以查看当前Rank的本地占比、跨DIE占比和跨片占比等信息。
图4 Top N低效通信Top N低效通信默认展示当前Top 100的数据,选择rank可以查看当前rank的低效通信占比,和其关联rank的低效通信占比。
图5 MPI timeline选择不同的色块可以看到当前rank的通信模式,以及当前rank通信的持续时间,通信延迟时间。
图6 MPI timeline-rank点击rank在某一时间段的region色块,显示在当前时间段内的PMU事件信息。
统计分析
- 代码样例准备。
编译ring.c,并赋予可执行文件所有用户可读、可写和可执行权限。
mpicc ring.c -O3 -o ring -fopenmp -lm && chmod 777 ring
- 创建HPC应用分析任务,并启动分析。
表2 配置参数说明 参数
说明
分析对象
应用
模式
Launch Application
应用路径
输入程序所在的绝对路径,例如本示例将代码样例放在服务器“/opt/testdemo/mpi/ring”路径下(多节点环境下应用在对应目录下存在)。
分析类型
HPC应用分析
采集模式
MPI/MPI+OpenMP混合模式;本示例主要是对MPI的应用进行分析,所以选择MPI/MPI+OpenMP混合模式。
共享目录
单节点情况下填入存在且可用的目录,多节点情况下需填入节点间的共享目录;例如本示例是在两个节点下进行采集所以填入节点间的共享目录“/home/share”。
mpirun所在路径
mpirun命令所在绝对路径。
mpirun参数
--allow-run-as-root -H 节点IP:rank数(例如:--allow-run-as-root -H 192.168.1.10:4)
分析模式
统计分析
采样模式
Detail
采样时长
60秒,采样时长过短可能会因为应用未结束(或应用中途停止)导致结果数据不完整。
其他参数
默认;用户名和密码等参数需按实际配置。
- 查看分析结果。
如图7所示 “总览” 页签上方会展示相关的优化建议以及程序的执行时间,CPU使用率,CPU cycles/Retired instruction的比值(CPI),执行的指令数(Instruction Retired),消耗在MPI阻塞函数上的时间百分比(MPI wait rate)等。
如图8所示 Hotspots区域会展示出应用中热点函数调用CPU相关情况。分组方式认为“function”选项,还可选“module”、“parallel-region”和“barrier-to-barrier-segment”。
如图9所示,内存带宽区域展示当前应用程序调用带宽的相关信息,并展示相关的指令分布(鼠标悬停于参数旁边的问号上可查看详细信息)。HPC Top-Down 会展示Top-Down事件名称及事件比例(鼠标悬停于参数旁边的
上可查看详细信息)。
如图10所示 MPI运行时指标会展示当前MPI应用运行时的相关数据。PMU事件计数会展示出对当前相关PMU事件及数量。