OpenACC 高性能并行编程:概念与策略 (29):OpenACC 编程工具 3.3

阅读数:1 2020 年 1 月 5 日 18:32

OpenACC高性能并行编程:概念与策略(29):OpenACC编程工具 3.3

(OpenACC 应用程序的性能分析)

内容简介
本书是介绍大规模并行编程 OpenACC 的综合实践性书籍之一。书中前 3 章介绍了 OpenACC 背后的概念和 OpenACC 开发工具;第 4 章至第 7 章带你了解第 1 个真实世界的 OpenACC 程序,并揭示 OpenACC 程序编译背后的魔力,从而引入更多概念;第 8 章至第 10 章涵盖高级主题,例如 OpenACC 的替代方案、底层设备交互、多设备编程和任务并行性;第 11 章和第 12 章探讨了 OpenACC 实现潜在新语言特性的各种研究领域。

OpenACC 为性能而生。它提供了描述代码中并行性的方法,却由编译器和 OpenACC 运行时实现这种并行性。此外,很多执行细节悄然隐藏在编程模型中。性能分析工具可以显示这些被隐藏的细节,让你研究 OpenACC 程序运行时的行为。你可以深入了解执行细节,例如 I/O(input/output:输入 / 输出)和内存操作,以及主机和设备的活动。

各种与性能相关的信息可以帮助你理解应用程序运行时的行为。对于在单个节点上运行的小型 OpenACC 程序来说,使用简单的性能分析选项可能就足够了。例如 PGI_ACC_TIME 环境变量,将它设置为 1 会将性能分析输出结果打印至控制台。然而这个变量只有在使用 PGI OpenACC 时才可以实现。其他编译器也提供有类似选项。

为了分析复杂的程序,一个性能工具应该支持应用程序中使用的所有范例和编程模型,这是因为它们之间的交互会降低效率。根据工具的不同,可覆盖三种并行级别:进程并行化、多线程和卸载。OpenACC 指的是后者,但卸载经常与用于进程间通信的 MPI(Message Passing Interface,消息传递接口)和用于多线程的 OpenMP 结合在一起。当需要优化某个特定区域时,硬件计数器可以帮助识别更加细粒度的性能问题。

性能分析对程序调优显然是有用的,理应成为应用程序开发周期的一部分。性能分析首先从测量准备着手,接着是测量运行和性能数据分析,最后是代码优化。接下来,我们着重讲述前三个步骤。

在测量准备期间,你需要选择并配置数据源,这将提供与程序执行有关的信息。并不需要在每个用例(详见后面几节)中改变应用程序代码。测量本身就是在运行执行程序,同时记录性能数据。然后通常在性能工具的帮助下分析测量数据。基于性能分析结果,优化代码,之后重复整个过程。

优化或更改代码并非总能提高性能。运行不同的执行程序并进行比较,会帮助你理解代码更改的影响,或评估应用程序在不同的平台和目标设备上的性能。有多种工具可以实现这种性能比较(例如 TAU1和 Vampir2)。

1 Sameer Shende and Allen D. Malony,“ The TAU Parallel Performance System, ” International Journal of High Performance Computing Applications, 20(2) (2006): 287-311. http://tau.uoregon.edu .

2 Andreas Knüpfer et al.,“ The Vampir Performance Analysis Tool-Set, ” Tools for High Performance Computing (2008): 139-155.

OpenACC高性能并行编程:概念与策略(29):OpenACC编程工具 3.3

购书地址 https://item.jd.com/12596484.html?dist=jd

评论

发布