《OpenACC并行程序设计:性能优化实践指南》一 3.5 在应用程序执行期间记录性能信息

3.5 在应用程序执行期间记录性能信息

应用程序将自动使用第一个插装事件启动Score-P性能监视器。使用几个环境变量来配置性能监视器。为了尽量减小运行时间扰动,Score-P默认设置产生一个基于性能分析的事件,这个事件不包含任何加速器活动。为了设置Score-P来记录PCIonGPU示例相关的活动,图3-5展示了与设置有关的环境变量。为了在Score-P 3.0版本中跟踪OpenACC API活动,将环境变量SCOREP_OPENACC_ENABLE设置为“yes”。Score-P文档中描述了其他可用的选项。

程序执行完后,在当前工作目录下包含一个新的子文件夹,以scorep-<程序执行时间戳>命名。如图3-6所示,在这个文件夹里,可以找到分析(profile.cubex)和跟踪文件(trace.otf2)。

生成的分析是了解应用程序行为的非常有价值的方法。对事件率未知或预期非常大的应用程序,建议开始仅生成分析,并扩展跟踪以覆盖所需的信息。这个需要通过限制插装或记录过滤来实现。查看“cube”文件可以可视化分析(profile.cubx),如图3-7所示。

查看器显示了应用程序运行的多度量分析(最左列)。中间列显示的是最左列选中度量在程序函数间的情况。最右列显示的是中间列所选函数在应用程序运行期间的进程和线程情况。追踪文件允许对分析数据和时间上下文进行深入分析。如何使用它来优化PIConGPU应用参见以下章节。有关Score-P设置更详细说明参见安装手册。

时间: 2024-12-21 23:48:48

《OpenACC并行程序设计:性能优化实践指南》一 3.5 在应用程序执行期间记录性能信息的相关文章

《OpenACC并行程序设计:性能优化实践指南》一 导读

前言 欢迎阅读本书,这是一本由浅入深的书籍,从初学者到高级开发人员,都可以通过本书了解OpenACC的相关知识.本书由世界各地的24位作者共同编著而成,他们在高度并行编程的教学和实践方面分享了自己的专业知识.书中的例子既有时效性又不会过时.每个章节都是自包含的,可用于自学,也可以作为课堂教学的一部分. 这是一本关于并行编程的书,不仅仅介绍OpenACC语法或从文档中收集的信息,更介绍了如何编写实际的.高性能的以及可移植的程序,这些程序可以运行在从CPU到GPU的大量设备上.具体而言,书中演示了使

《OpenACC并行程序设计:性能优化实践指南》一 3.11 小结

3.11 小结 虽然PIConGPU是一个具体示例,但确定性能瓶颈是真实的,并且所呈现的解决方案也可以应用于其他应用.使用CUDA(PIConGPU实现)或OpenACC对加速器编程,两者没有什么区别.涉及基础MPI活动的改进可用于这两种范例. 本章学习内容: 性能分析是每个程序(并行程序,特别是混合程序)开发的一个组成部分,尽可能高效地利用可用资源. 基于采样的分析运行时开销非常低,可以提供程序执行中潜在的热点. 基于事件的追踪提供程序执行期间所有并行活动的信息.为了不使I/O子系统过载,应该

《OpenACC并行程序设计:性能优化实践指南》一 1.1 简单的数据并行循环

1.1 简单的数据并行循环 在顺序处理器程序设计中,需要编写计算某个最终结果所需要的任务和数据操作的程序.通过创建OpenACC,编程人员可以插入编译指令给编译器提供信息,而这些编译指令是关于并行机会和数据在加速器与主机间来回传输的信息.结合编译器,程序员使用注记来创建.调试和优化并行代码,使得程序达到高性能. OpenACC帮助程序员编写高效的数据和任务并行软件. 数据并行关注跨多个并发执行线程的分布式数据操作.在计算机科学中,线程是串行执行一段代码的线程的缩写.通过使用多个线程,应用程序可以

《OpenACC并行程序设计:性能优化实践指南》一 1.5 无锁编程

1.5 无锁编程 互斥锁是用于同步进程或线程的常用机制,这些进程或线程需要访问并行程序中的一些共享资源.互斥锁就像它们名字所说的:如果一个线程锁住了资源,另一个线程希望访问它需要等待第一个线程解锁这个资源.一旦资源被解锁,第二个线程在处理这个资源时会一直锁住它.程序的线程必须遵守:一旦使用完共享资源尽快解锁,以保持程序执行流程. 由于OpenACC中没有锁,编程人员需要熟悉无锁编程和数据结构的概念.无锁方法保证至少一个执行该方法的线程的进展.可能存在某些线程可以被延迟的情况,但是保证至少一个线程

《OpenACC并行程序设计:性能优化实践指南》一 第3章 使用Score-P和Vampir分析混合应用性能

第3章 使用Score-P和Vampir分析混合应用性能 Guido Juckeland 德国亥姆霍兹联合会(HZDR)信息服务和计算机系 Robert Dietrich 德国德累斯顿工业大学 本章的目的是让读者熟悉逐步性能提升的概念,以及在向OpenACC应用程序添加其他并行模式时所涉及的工具.混合应用程序可能会遭受许多性能瓶颈,应用程序运行期间所有活动的整体图可以揭示如何提高整体性能. 阅读本章后,读者将会理解以下内容: 混合应用程序(例如,MPI+OpenACC)性能分析的术语和方法. 如

《OpenACC并行程序设计:性能优化实践指南》一 1.3 Amdahl定律及其扩展

1.3 Amdahl定律及其扩展 绘制任务运行时间,可以看到并行增加应用程序的扩展行为.并行计算的理论性能:运行在有N个处理单元的并行计算机上,理论上可以获得N倍加速.换一句话说,一个程序运行在10核处理器上可能获得10倍加速(对于固定大小的问题),在支持1000个并发执行线程的GPU上获得1000倍加速.开发人员依据Amdahl定律来讨论并行与串行间的加速比. 用计算机架构师Gene Amdahl来命名Amdahl定律.它不是实际上的定律,但是修改串行程序使其并行执行时,它相当接近模型理论加速

《OpenACC并行程序设计:性能优化实践指南》一 2.4 优化循环

2.4 优化循环 此刻,测试代码可以比原始代码加速2倍了.但这是能够获得的性能最好的代码吗?目前添加的导语可以在任何加速器上实现代码的提速,但为了在特定的测试机器上取得最佳性能,需要使用特定目标设备优化技术.万幸的是,OpenACC提供了一种指定devcie_type的优化手段,因此特定的子句仅在编译为指定设备的代码时才会生效.首先从分析目前代码的编译器反馈信息着手,针对matvec子程序,因为它是最为耗时的代码段(见图2-22). 编译器提供了它如何并行化两个矩阵循环(第30和24行)的信息.

《OpenACC并行程序设计:性能优化实践指南》一 3.4 通过代码插装准备性能测量

3.4 通过代码插装准备性能测量 为了获得非常详细的性能数据,需要修改测试应用程序源代码,以便将事件推送到性能监视器.这个过程称为插装.Score-P使用编译器插装,这意味着使用编译器额外选项来生成所有函数入口和出口,Score-P处理这些出/入口的回调.这些回调是之前介绍的事件.这当然需要编译器支持回调注入,而当前大多数编译器都会这么做. 可以使用提供的性能工具接口.包装库或源码转换来自动插装到所有的并行范例(MPI.OpenMP.Pthreads.OpenACC.CUDA.OpenCL.Op

《OpenACC并行程序设计:性能优化实践指南》一 3.2 逐步性能提升

3.2 逐步性能提升 本书的示例表明,通过提交更多的活动和优化数据传输,使用性能分析驱动的开发可不断提升OpenACC应用程序的性能.图3-2列出了优化混合应用遵循的模式. 从应用准备开始性能优化周期,然后进行实际的性能测量,并对性能数据进行分析.基于这些数据,编程开发人员尝试减少性能问题,并重新开始整个过程.下面使用Score-P和Vampri讲解性能提升周期里的前三步,以CUDA加速粒子单元模拟为例,其中CUDA部分代码很容易用OpenACC实现代替来获得同样的结果.此外,还引入了各种优化步