开发Paraver是为了满足通过目视检查对应用程序行为进行定性全局感知的需要,然后能够专注于对问题进行详细的定量分析。表达能力、灵活性和高效处理大痕迹的能力是Paraver设计中的关键特征。Paraver清晰的模块化结构对实现这些目标起着重要作用。

Paraver是一个非常灵活的数据浏览器,是CEPBA Tools工具包的一部分。其分析能力基于两大支柱。首先,它的跟踪格式没有语义;扩展该工具以支持新的性能数据或新的编程模型不需要更改可视化工具,只需在Paraver跟踪中捕获此类数据。第二个支柱是,指标不是硬连接在工具上的,而是编程的。为了计算它们,该工具提供了一组大的时间函数、一个过滤器模块和一个结合两条时间线的机制。这种方法允许使用可用数据显示大量指标。为了获取专家知识,任何视图或视图集都可以保存为Paraver配置文件。之后,使用新数据重新计算视图就像加载保存的文件一样简单。该工具已被证明对性能分析研究非常有用,与大多数性能工具相比,它提供了有关应用程序行为的更多详细信息。一些Paraver功能支持:

  1. 项目绩效的详细定量分析
  2. 几种痕迹的并发比较分析
  3. 可视化信息的可定制语义
  4. 协同工作,共享跟踪文件的视图
  5. 衍生指标的构建

以下是Paraver哲学和功能的主要特征

内容:

支持的编程模型

只要所使用的模型可以映射到Paraver跟踪中表示的三个并行级别,Paraver就不绑定到任何编程模型。两级并行的一个示例是混合MPI+OpenMP应用程序。生成Paraver跟踪的运行时测量系统Extrae目前支持编程接口MPI、OpenMP、pthreads、OmpSs和CUDA。

意见

Paraver提供了一组关于跟踪的最小视图。设计背后的理念是,只有在不同类型的视图提供不同类型的信息时,才应支持不同类型的观点。

Paraver中的性能信息由两个主要显示器提供,这两个显示器提供了性质不同的信息类型。时间轴显示表示应用程序在时间和过程中的行为,其方式可以很容易地向用户传达对应用程序行为的一般理解以及阶段和模式的简单标识。统计显示提供可应用于任何用户选择区域的数据的数值分析,有助于得出优化工作的重点和方式的结论。

单一类型的图形视图足够灵活,可以直观地表示大量信息,并作为定量分析的参考。Paraver视图由一个时间图组成,每个表示的对象都有一条线。Paraver显示的对象类型与并行编程模型概念和执行资源密切相关。在第一组中,考虑的对象是:工作负载、应用程序、任务和线程。尽管最常用于可视化单个应用程序,但Paraver可以显示多个并行应用程序的并发执行。在资源组中,考虑的对象是:系统、节点和CPU。

Paraver显示的信息由三个元素组成:每个表示对象的时间相关值(称为语义值)、与表示对象中的准时事件相对应的标志,以及与显示对象相关的通信线路。可视化模块确定这些元素的显示方式。使用它可以更改表示类型、颜色和比例。

可视化模块盲目地表示传递给它的值和事件,而不给它们分配任何预先设想的语义。这对工具的灵活性起着关键作用。所显示信息的语义(线程活动、缓存未命中、调用的函数序列)在用户的脑海中。Paraver指定了跟踪格式,但没有编码值的实际语义。它提供了一组构建块(过滤器和语义模块),用于在可视化过程中转换跟踪。根据您生成跟踪和组合构建块的方式,您可以可视化大量不同的语义量。

表达能力

可视化功能(如何显示)和语义模块(要显示的值)之间的分离提供了比其他工具中经常遇到的更大的灵活性和表达能力。

许多可视化工具都包含一个过滤模块,以减少显示的信息量。在Paraver中,过滤模块位于语义模块的前面。结果是在生成语义模块返回的值时增加了灵活性。

Paraver语义模块被构造为一个函数层次结构,这些函数用于计算传递给可视化模块的值。每个功能级别对应于Paraver所依赖的流程/资源模型层次结构中的一个级别。

结合非常简单的语义功能(总和、符号、状态原样、最后事件值……),在每个级别上都会产生巨大的表达能力。例如,除了典型的处理器时间图外,还可以显示:

  1. 应用程序的全局并行性配置文件
  2. 多个任务共享一个节点时每个CPU的总消耗量
  3. 多个任务共享一个节点时就绪任务的平均就绪队列长度
  4. 给定时间内的瞬时通信负载几何平均值
  5. 选定变量值的演变
  6. 每个线程执行的每个周期的指令
  7. 不同并联回路的负载平衡

使用配置文件获取这些视图就像加载文件一样简单。

定量分析

定性的行为显示不足以得出问题所在或如何改进代码的结论。需要详细的数字来维持主观印象。定量分析功能应用于语义模块之后,方法与可视化模块相同。同样,非常简单的函数(平均值、计数……)与语义模块的强大功能相结合,会产生大量支持的度量。Paraver的定量分析模块可以应用于可视化应用程序的任何用户选择部分,并有两种变体:

  1. 一维分析计算所选窗口的语义函数值。它包括诸如能够测量时间、计数事件或计算显示量级的平均值等功能。
  2. 经过一些经验后,最大限度地利用语义分析功能组合获得的信息量对Paraver用户来说是一个具有挑战性的问题。

多条记录道

此多跟踪功能支持详细的比较,否则会变得非常主观或繁琐。例如,可以比较:

  1. 两个版本的代码
  2. 两台机器上的行为
  3. 两次运行之间的差异
  4. 问题规模的影响
  5. 应用程序可扩展性

大痕迹

Paraver的一个要求是,该工具的整个操作必须非常快速,以便使其可用并能够维护开发人员的兴趣。处理十分之一到数百MB范围内的跟踪是Paraver的一个重要目标,它可以分析实际程序。支持简单的窗口尺寸标注、向前和向后动画以及缩放。可以同时显示多个不同比例的窗口。即使在非常大的记录道上,也可以非常精确地进行定量分析,因为可以在不同的窗口上选择分析的起点和终点。

跟踪文件通常以ASCII格式进行管理,以允许不同平台之间的移植,但可以使用工具domapfile将跟踪文件转换为二进制格式,从而减少其大小和加载所需的时间。

合作分析

配置文件允许使用Paraver共享知识和专业技能。获得所需视图后,可以将其存储在配置文件中,以便再次将其应用于相同的跟踪文件或不同的跟踪文件。共享跟踪文件和相应的配置文件允许容易地共享跟踪的视图和所获得的信息。

衍生指标

遵循Paraver的理念,派生的度量简单而强大:用户可以使用非常简单的操作符(add、product、maximum…)组合跟踪文件的两个显示窗口,以获得新的语义函数。递归应用此过程,可以获得如下语义函数:

  1. 并行函数中每个周期的指令
  2. 每秒FLOPS
  3. 每个TLB未命中的FLOPS

批量处理

在某些情况下,在不使用GUI界面的情况下使用Paraver的所有分析功能可能会很有趣。这是以下情况:

  1. 进行参数化研究
  2. 使用分析结果作为自动优化的输入

为了进行此类研究,我们开发了Paramedir(西班牙语中的意思是“测量”)。Paramedir是Paraver的新版本,没有GUI。基本命令(通过二进制或API接口)允许加载跟踪文件、加载配置文件并将分析结果保存在文本文件中。此版本的优点是它使用了与Paraver相同的配置文件,因此可以将使用GUI执行的相同分析保存在配置文件中,然后使用Paramedir应用于许多跟踪文件。

我们不建议盲目使用护理人员进行绩效分析。我们的经验是,持续关注一些平均值可能掩盖的时间线细节非常重要。