HPCToolkit 是一套集成的工具,用于测量和分析计算机上的程序性能,从多核桌面系统到美国最大的超级计算机。通过使用定时器和硬件性能计数器的统计采样,HPCToolkit 收集程序工作、资源消耗和低效率的准确测量值,并将它们归因于它们发生的完整调用上下文。HPCToolkit 适用于静态或动态链接的多语言、完全优化的应用程序。由于 HPCToolkit 使用采样,因此测量的开销较低 (1-5%),并且可以扩展到大型并行系统。HPCToolkit 的演示工具能够在并行系统的节点内部和节点之间快速分析程序的执行成本、低效率和扩展特性。
下图说明了 HPCToolkit 的主要组件及其关系。
hpcrun:hpcrun 以非常低的开销 (1-5%) 为未修改的完全优化的应用程序收集准确和精确的调用上下文敏感的性能测量。它使用由系统计时器和性能监控单元事件触发的异步采样来驱动调用路径配置文件和可选跟踪的收集。
hpcstruct:为了将调用上下文敏感的测量与源代码结构相关联,hpcstruct 分析完全优化的应用程序二进制文件并恢复有关它们与源代码关系的信息。特别是,hpcstruct 将目标代码与源代码文件、过程、循环嵌套相关联,并标识内联代码。
hpcprof:hpcprof 使用由 hpcstruct 计算的程序结构覆盖调用路径配置文件和跟踪,并将结果与源代码相关联。hpcprof/mpi 通过并行执行这种关联来处理来自并行执行的数千个配置文件。hpcprof 和 hpcprof/mpi 生成一个性能数据库,可以使用 hpcviewer 用户界面进行探索。
hpcviewer:hpcviewer 是一个图形用户界面,它以三个互补的以代码为中心的视图(自上而下、自下而上和平面)交互地呈现性能数据,以及一个图形视图,使人们能够评估跨线程和进程的性能变化. hpcviewer 旨在促进使用派生指标进行快速自上而下的分析,这些指标突出可扩展性损失和低效率,而不是只关注程序热点。
hpcviewer 还提供程序执行的分层、以时间为中心的视图。该工具可以为数千个处理器快速呈现跟踪线的图形视图,即使是笔记本电脑也可以执行数十分钟。hpcviewer 的分层图形表示与其他工具完全不同——它通过在不同调用堆栈深度显示随时间的活动来呈现多个抽象级别的执行跟踪。
GitHub地址:https://github.com/HPCToolkit