使用采样理解并行程序性能
1. 引言
在极端规模系统上开发可扩展的并行应用程序是一项具有挑战性的任务。现有的语言、编译器和自动调优工具只能部分解决开发可扩展并行应用程序的难题,因此,为了获得较高的应用程序性能,手动进行性能调优往往是必要的。
Rice大学的HPCTOOLKIT是一套性能工具,它开创了在完全优化的并行程序中精确找出并量化性能瓶颈的技术,且测量开销仅为百分之几。该工具的许多技术都是基于采样来进行性能测量、归因、分析和呈现的。
1.1 采样的利弊
收集准确且详细的性能测量数据是一项挑战,常见的收集性能测量数据的基本技术有异步采样和同步插桩两种。插桩虽然能收集上下文敏感的测量数据,但在过程级别收集时,开销可能会达到数百甚至数千百分比,在更细的分辨率(如循环、语句或机器指令级别)进行测量通常是不可行的。为了解决这些问题,人们采取了各种方法,但这些方法都存在一定的局限性。
而HPCTOOLKIT通过异步事件触发器定期中断程序执行,收集具有统计代表性的测量数据,避免了插桩带来的开销和数据失真。这种方式就像民意调查者通过询问一千名选民来了解三亿人口的趋势一样,能提供关于程序行为的代表性信息。
然而,采样也存在一些问题:
- 归因困难 :异步采样在任意点中断执行,将测量数据归因到源级循环比较困难,因为目标代码中的循环使用非结构化控制流实现,并且经过了优化编译器的转换。此外,使用栈展开收集调用上下文也存在困难,在高度优化的代码中,栈展开常常会失败。
- 超级计算机的挑战 :为了避免大规模同步并行应用程序中的空闲情况,超级计算机
超级会员免费看
订阅专栏 解锁全文
5886

被折叠的 条评论
为什么被折叠?



