《OpenACC并行程序设计:性能优化实践指南》一 3.1 性能分析技术和术语

3.1 性能分析技术和术语

“性能分析”通常作为一个整体用于描述应用性能分析,在技术上它仅指性能测量和分析技术的子集。图3-1显示了不同技术之间的比较。

《OpenACC并行程序设计:性能优化实践指南》一 3.1 性能分析技术和术语

性能测量和可视化由三部分组成:数据采集、记录和呈现。性能监视器想要分析应用程序行为,可以中断原始的应用程序,并在应用程序中断(采样)时“拉出”应用程序正在做什么的信息;或者修改应用程序为“推送”活动信息给性能监视器(基于事件的分析)。在数据采集过程中,所有活动的数据或完整日志以时间戳条目的形式被立即汇总。可以以时间轴或任意时间间隔的形式来展现完整的日志文件,而汇总的数据只能作为整个应用程序的形式来呈现。
所有分析技术都有利有弊。例如,以固定采样频率中断应用的采样,在测量应用程序运行时会有常量扰动。然而,测量精度依赖于采样频率。基于事件的插入可以记录所有目标活动,即通过手动或编译器事件触发器增强的所有函数或代码段,但是运行时扰动取决于编译时未知的事件,并且在最坏情况下有几个数量级的差别。立即汇总使得性能记录器保持低内存占用,并且不增加额外的输入/输出(I/O)开销。但是它会降低记录活动的时间上下文,而用于记录时它会增加时间上下文。立即性能分析显示活动对应用程序的影响(通常是函数的运行时分布),而忽略时间上下文。时间轴恰恰相反,它显示了程序的时间演变,这使得立即隔离最耗时的活动变得更加困难 。
基于事件的追踪可以记录应用程序执行期间的所有活动图,但是可能需要非常高的运行时扰动代价。幸运的是,折中使用这些技术,可以在尽可能低的开销下产生尽可能多的分析信息。Score-P甚至支持同时使用之前提出的所有性能分析技术,这使得它成为一个独一无二的性能监视器。