关于性能分析:mperf移动嵌入式平台算子性能调优利器
作者:旷视 MegEngine 架构师 张孝斌疾速理解 mperf在挪动/嵌入式平台,为了最大水平施展硬件算力,对算子极致性能的谋求变成必然,不同于桌面/服务器平台,挪动/嵌入式平台在算子性能调优方面可抉择的工具很少。 MegEngine 团队始终在摸索什么样的工具可能在算子调优流程中带来助益,来帮忙达成如下的算子性能调优反馈回路,这也是 mperf 诞生的背景。 <p align=center><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/db65dd714a724afd943a3860cc041974~tplv-k3u1fbpfcp-zoom-1.image" alt="图1 算子性能调优反馈回路" /></p><p align=center>图1 算子性能调优反馈回路</p> mperf 是一个微架构档次的算子性能调优工具箱,次要面向挪动/嵌入式平台的 CPU/GPU 外围,指标是“为构建一个更靠近闭环的算子调优反馈回路”提供系列根底工具。 外围性能: [根底能力] 测试微架构档次的各类罕用性能剖析参数(GFLOPS/Multi-level Bandwidth/Latency...)[根底能力] 提供 PMU(Performance Monitoring Unit) 数据获取能力[性能剖析] 绘制 Hierarchical Roofline[问题定位] 加工 PMU 数据失去各种指标(如 IPC, Instructions per cycle)、TMA(Top-Down Microarchitecture Analysis Method)剖析能力,能够作为局部 vendor 提供的 GUI 剖析工具的平替[优化指引] 提供 OpenCL Linter 计划(后续版本提供)...作为一个 C++ API 级别的工程,mperf 内部依赖少,能够简略不便(侵入式)集成到指标工程中,目前曾经开源到 GitHub,欢送大家试用交换。 应用办法参考 README 文档;疾速上手指南见 Tutorial 文档 对 mperf 的实现原理感兴趣的同学,能够持续往下看~~ 开展说说 mperf 的工程实现缘起算子调优目前还是一个难以闭环的工作,须要开发者对指标硬件架构个性、算子优化程度评估、性能瓶颈定位、丰盛的优化技巧等都有很深的理解之后能力变得熟能生巧。同时随着 CPU/GPU 架构越来越多,越来越简单,一般的开发者很少有精力去深刻了解各个架构的个性,问题变得更加辣手。 现实中的调优过程是可能造成如上图所示的闭环,甚至能够走向编译器全自动化调优计划,过程中往往须要依赖工具实现,在桌面/服务器平台的工具较为齐备,如 linux perf, lmbench/stream,NVIDIA NSight Compute,Intel vtune/Advisor/pmu-tools 等开闭源工具等都提供了一部分能力,通过人为组合还是能失去比拟全的能力;与此同时,在挪动/嵌入式平台,也有 simpleperf、Arm mali streamline、snapdragon profiler、MegPeak、ArchProbe、HWCPipe 等优良的开闭源工具,然而齐备性和易用性方面都存在很多问题: ...