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

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

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

(性能数据获取)

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

在程序运行期间,有两种获取数据的基本方法。

  • 采样(sampling)是一种“拉取”机制,主要查询与应用程序的当前行为有关的信息。查询(采样)速率可以被设置为一个固定值,产生一个固定的、可预测的运行时扰动(perturbation)。然而,测量精度取决于采样频率。低频采样可能会错过有价值的信息;高频采样又可能会产生太多开销。此外,基于定时器的中断会产生固定的采样频率,而其他的中断发生器,例如计数器溢出,可能不会提供固定间隔的采样。
  • 基于事件的检测(event-based instrumentation)通常需要修改应用程序以便向性能测量基础架构推送关于应用程序活动的信息。检测可以放在代码中的任何位置,以便对一些事件进行标记,例如程序函数、库调用和代码区域的开始和结束。所有的检测事件必须可以被执行,以便它们可以被观测到,这样才能反映程序的行为。因为在编译阶段事件发生的频率是未知的,因此无法预测运行时的扰动,在最坏的情况下,可能是几个数量级的扰动。这两种方法的优缺点已经在 Ilsche 等人的文献中进行了讨论1

1 Thomas Ilsche, Joseph Schuchart, Robert Schöne, and Daniel Hackenberg“, Combining Instrumentation and Sampling for Trace-Based Application Performance Analysis, ” Tools for High Performance Computing (2014): 123-136.

OpenACC 2.5 及以后的规范对性能分析接口进行了描述,这可以让你在 OpenACC 程序执行期间记录 OpenACC 事件(3.3.4 节将对其进行描述)。很多其他编程模型也有相应的接口用来获取数据,例如 CUDA 的 CUPTI2,OpenMP 的 OMPT3,MPI 工具信息接口:MPI 的 PMPI4,MPI 3.0 的 MPI_T 工具5

2 docs.nvidia.com/cuda/cupti/ .

3 www.openmp.org/wp-content/uploads/ompt-tr2.pdf .

4 http://mpi-forum.org/docs/mpi-3.0/mpi30-report.pdf .

5 https://computation.llnl.gov/projects/mpi_t .

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

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

评论

发布