代码样例简介
本文档提供了如表1所示的鲲鹏DevKit工具样例,旨在通过这些代码样例演示鲲鹏DevKit各个子工具的对应功能,指导用户如何使用鲲鹏DevKit工具进行项目分析,并根据该工具自动分析得出的分析报告进行修改。
工具 |
工作模式 |
场景示例 |
场景说明 |
代码样例 |
|---|---|---|---|---|
系统性能分析 |
CLI |
示例1:使用Roofline分析对应用调优 |
针对同一类型应用,使用鲲鹏DevKit命令行工具系统性能分析的Roofline分析任务,在多个维度进行逐级优化,便于用户理解Roofline分析任务的使用方法。 |
matrix.h matrix.c matmult.h main.c intrinsic_matmult.c block_matmult.c base_matmult.c |
WebUI |
示例1:矩阵分析 |
主要针对for循环实现一维矩阵计算的程序进行优化,通过鲲鹏DevKit系统性能分析工具热点函数性能分析功能模块中热点函数的检测,发现矩阵计算的热点函数multiply,采用NEON指令进行优化,并对比优化效果。 |
multiply.c、multiply_simd.c、multiply_start.sh |
|
WebUI |
示例2:列访问循环检测优化 |
基于二维数组循环遍历程序,通过鲲鹏DevKit系统性能分析工具热点函数分析功能,比较按行访问与按列访问Miss事件的分析结果,以此来说明按行访问可以优化CPU Cache命中效率。 |
cache_hit.c、cache_miss.c、miss_start.sh、hit_start.sh |
|
WebUI |
示例3:锁频繁抢占 |
多线程程序,经常会存在锁频繁抢占问题,锁的争抢会导致CPU的资源浪费,可以基于实际的业务减少公共资源的抢占。本示例主要针对这一问题,通过鲲鹏DevKit系统性能分析工具资源调度和锁与等待分析功能来观测,建议用户分析业务逻辑减少锁的争抢,例如大锁变小锁,减少线程并发数等。 |
pthread_mutex.c、pthread_atomic.c |
|
WebUI |
示例4:MPI应用分析 |
通过对MPI应用使用鲲鹏DevKit系统性能分析工具的HPC应用分析,让用户清晰地了解到应用在各个rank下的通信状态。 |
ring.c |
|
WebUI |
示例5:MPI通信阻塞函数耗时占比分析 |
在MPI/OpenMP混合场景中,通过鲲鹏DevKit系统性能分析工具的HPC应用分析任务,让用户了解到各个场景下对应用进行调优的思路。 |
send_recv.cpp |
|
WebUI |
示例6:NUMA精细化分析 |
主要针对NUMA(Non-uniform memory access,非统一内存访问)架构下,通过鲲鹏DevKit系统性能分析工具NUMA精细化分析的检测,采集系统中所有进程的NUMA性能,找到Top N (e.g. N = 10) NUMA性能最差的进程,各NUMA节点间内存访问统计矩阵,识别节点间内存访问不平衡状态,并得到相关优化建议。 |
- |