中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

示例7:OpenMP模式的region信息分析

简介

本示例主要通过对OMP应用,通过鲲鹏DevKit系统性能分析工具的HPC应用分析下的OpenMP模式,让用户清晰的了解到应用在各个时间段的调用栈信息及PMU事件信息。

环境准备

  1. 请确认服务器上的CPU是否为Kunpeng 920,操作系统内核为4.19及以上或patched openEuler 4.14内核及以上。
  2. 请确认服务器上GCC版本是否为7.3.0及以上。
  3. 请确认服务器上是否已安装鲲鹏DevKit系统性能分析工具。
  4. 请从Github下载代码样例memory_bound.cutils.h,执行以下命令赋予所有用户可读、可写和可执行权限。
    chmod 777 memory_bound.c utils.h

精细化分析

  1. 代码样例准备

    编译memory_bound.c,并赋予可执行文件所有用户可读、可写和可执行权限。

    gcc memory_bound.c -O3 -o memory_bound -fopenmp -lm  && chmod 777 memory_bound
  2. 创建HPC应用分析任务,并启动分析。
    表1 任务配置参数说明

    参数

    说明

    分析对象

    应用

    应用路径

    输入程序所在的绝对路径,例如本示例将代码样例放在服务器“/opt/testdemo/memory_bound”路径下。

    分析类型

    HPC应用分析

    采集模式

    OpenMP模式;本示例主要是对OMP的应用进行分析。

    分析模式

    精细化分析

    采样时长

    60秒

    统计更多调用栈信息

    开启

  3. 查看分析结果。
    图1 OpenMP精细化分析 OpenMP timeline

    图1所示 OpenMP timeline会展示当前应用所占用的线程,标记关键线程,可拖动上方时间轴查看对应时间区间数据展示,也可通过下拉框筛选关键线程。

    图2 选择线程的region

    图2选择不同的region色块可以看到当前线程,在一段时间内的PMU事件信息,包括调用栈信息,以及Top-Down数据信息。

统计分析

  1. 代码样例准备

    编译memory_bound.c,并赋予可执行文件所有用户可读、可写和可执行权限。

    gcc memory_bound.c -O3 -o memory_bound -fopenmp -lm  && chmod 777 memory_bound
  2. 创建HPC应用分析任务并启动分析。
    表2 任务配置参数说明

    参数

    说明

    分析对象

    应用

    应用路径

    输入程序所在的绝对路径,例如本示例将代码样例放在服务器“/opt/testdemo/memory_bound”路径下。

    分析类型

    HPC应用分析

    采集模式

    OpenMP模式;本示例主要是对OMP的应用进行分析。

    分析模式

    统计分析

    采样模式

    Detail模式

    采样时长

    60秒

    其他参数

    默认

  3. 查看分析结果。
    图3 HPC应用分析结果总览

    图3所示 “总览” 页签上方会展示相关的优化建议以及程序的执行时间,CPU使用率,CPU cycles/Retired instruction的比值(CPI)执行的指令数(Instruction Retired)。OpenMP Team的使用率等。

    Hotstpots区域会展示出应用中热点函数调用CPU相关情况。分组方式认为“function”选项,还可选“module”、“parallel-region”、“barrier-to-barrier-segment”。

    图4 内存带宽+ HPC Top-Down

    图4所示,内存带宽区域展示当前应用程序调用带宽的相关信息,并展示相关的指令分布(鼠标悬停于参数旁边的问号上可查看详细信息)。HPC Top-Down 会展示Top-Down事件名称及事件比例。

    图5 查看优化建议

    鼠标悬停在上可以给出具体的优化建议。

    图6 OpenMP运行指标+PMU事件

    图6所示OpenMP运行时指标会展示当前OMP应用运行时的相关数据,并行区域(Parallel region),特殊的独立运行区段(Barrier-to-barrier segment),运行在并行区的时间(Elapsed Time(s))等。PMU事件计数会展示出对当前相关PMU事件及数量。