OpenACC 高性能并行编程:概念与策略 (32):OpenACC 编程工具 3.3.3&3.3.4

阅读数:1 2020 年 1 月 8 日 19:23

OpenACC高性能并行编程:概念与策略(32):OpenACC编程工具 3.3.3&3.3.4

(性能数据记录和显示)

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

数据记录既可以立即对所有的数据进行归纳(性能分析),也可以完全记录所有的活动(跟踪)。存在有多种类型的性能数据(如平面性能数据、调用路径性能数据,或调用图性能数据),区别在于是否保留了调用关系。在简单的平面函数性能数据中,只存储了函数的累计运行时间和调用次数。跟踪数据则会存储程序执行期间的所有事件或采样。跟踪数据可以呈现为时间轴或者转换成任意时间间隔的性能数据。性能数据表示的是整个应用程序运行中的归纳数据,并不包含所记录的活动的时间信息。立即归纳可以让性能监视器保持较低的内存占用。性能数据可以立即显示活动对应用程序的影响(通常是函数的运行时间分布)。时间轴可以显示程序随时间而发生的演化,同时也很难立即隔离最耗时的活动。

(OpenACC 性能分析接口)

OpenACC 2.5 版本的规范引入了性能分析接口,设计这个接口的目的是提供给基于检测的性能工具例如 Score-P1和 TAU2使用。本章剩余部分将对这些工具进行讨论。性能分析接口定义了发生在 OpenACC 程序执行期间的运行时事件。工具库可以为各个事件类型注册回调(callback),这些事件类型由 OpenACC 运行时分发。表 3.2 列出了 OpenACC 2.5 性能分析接口中所规定的所有运行时事件,并对它们的发生时刻做了简短的描述。

1 Dieter an Mey et al.,“ Score-P: A Unif ied Performance Measurement System for Petascale Applications, ”Competence in High Performance Computing 2010 (2012): 85-97. http://www.score-p.org .

2 https://www.cs.uoregon.edu/research/tau/home.php .

表 3.2 OpenACC 2.5 性能分析接口中规定的运行时事件,可在基于检测的性能工具中使用

事件 acc_ev_ 发生时刻
kernel 启动事件
enqueue_launch_[start end]
数据事件
enqueue_upload_[start end]
enqueue_download_[start end]
create/delete 当 OpenACC 运行时建立设备内存和主机内存关联或解除设备内存和主机内存关联时
alloc/free 当 OpenACC 运行时从设备内存池分配或释放内存时
其他事件
device_init_[start end]
device_shutdown_[start end]
runtime_shutdown 当 OpenACC 运行时终止时
wait_[start end]
compute_construct_[start end]
update_construct_[start end]
enter_data_[start end]
exit_data_[start end]

事件分为三组:kernel 启动事件、数据事件和其他事件。所有事件(无论事件是属于哪个分组,也无论事件是由隐式或显式的导语触发还是由运行时 API 调用触发)均会提供与事件类型和父构件有关的信息。例如,由于等待同步数据或计算构件触发的隐式等待事件。kernel 启动事件的特定事件信息包括 kernel 名,gang、worker 和 vector 尺寸。数据事件会提供与变量名和字节数,以及指向相应数据的主机和设备指针有关的额外信息。有关 OpenACC 事件回调中提供的所有信息的完整列表,请参阅 OpenACC 规范。

事件回调也提供了访问底层 API,如 CUDA、OpenCL 和 Intel 的 COI(Coprocessor Offload Infrastructure)3的接口。这个接口允许访问 OpenACC 性能分析接口中无法提供的额外信息,或者访问底层编程模型的执行情况。工具可以使用这种能力来收集运行时的设备活动信息,例如,在 enqueue 开始事件和 enqueue 结束事件上插入 CUDA 事件。

3 https://software.intel.com/en-us/articles/offload-runtime-for-the-intelr-xeon-phitm-coprocessor .

可移植的设备数据收集和采样并不是 OpenACC 2.5 性能分析接口的一部分。但是却可以基于 enqueue 事件和 wait 事件评估由 OpenACC 导语生成的设备任务的运行时间。

OpenACC高性能并行编程:概念与策略(32):OpenACC编程工具 3.3.3&3.3.4

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

评论

发布