论文题目:Design-time performance modeling of compositional parallel programs
文章时间:2020年11月
会议/期刊:Parallel Computing 2021年1月 vol108
作者背景: 德国Darmstadt,德国人写的句子真的是太长了。
笔记时间:2021年10月28日周四
论文地址:https://www.sciencedirect.com/science/article/pii/S0167819121000855
Abstract
性能建模是并行系统重要的指导工具,能够揭示他们的瓶颈。系统设计过程中,可以帮助思索选项。然而,创建一个性能模型,无论是理论上还是经验上,对一个尚未存在的完整的应用来说都是很具有挑战性的。在本文中,我们提出利用并行设计模式派生的形式组合运算符,从程序组件的性能模型生成完整程序的性能模型。只要整个系统的设计遵循这样的模式,其性能模型就可以以合理的准确性进行预测,而无需实际实现。我们用不同复杂性的设计模式来演示我们的方法,包括管道、任务池和MapReduce, MapReduce代表了广泛的数据分析应用程序。
第一章 Intro
让软件探索并行的主要目的是性能,这是开发者的第一目标。然而,在代码还没有实现出来之前,性能的压力已经悬于头顶了。为了简化并行程序的设计,一些作者设计了指导并行程序的设计模式。编程模式很好的解决了recurring问题。 在并行社区,编程模式很好的帮助识别和表达不同级别的并行,从一个抽象的计算问题的解耦到选择特定的并行程序结构。
如果性能无法测量,他一定可以预测。这是为什么设计高效的软件需要性能建模,至少也需要一个运行的借口作为性能测量的基础basis。通常,性能建模指的是一个式子,描述性能度量,比如执行时间,用一些参数的函数求得结果,如输入数据大小,进程数量等。
从软件的蓝图就能构建能准确分析性能模型很难,也很费时间,如对MapReduce的工作,显示了对实现的内部调度机制彻底分析的必要性。所以,很多工作只选消耗大量时间的循环作为代表而不是完整的程序分析。
对于运行中的代码,经验性能建模表现出有效性且比分析性建模更省力。经验建模利用回归来学习性能模型。比如Extra-P,比分析性能建模快得多,但是需要程序已经写完,可以运行。但是一些场景无法得倒运行时的数据。
我们提出一个经验建模的方法,支持遵守特定路径的并行程序设计。我们的insght是,并行程序是由一些设计模式的模块组成的,这些模块可以准确建模程序性能。除了揭示性能瓶颈,我们额度方法也可以帮助寻找最佳的执行配置参数。本文贡献如下
- 模块化的建模方法
- 设计了几个模块,如task pool,pipeline ,用mapreduce实例验证了一下
- 用工具证明了我们的方法的有效性,误差在合理的范围。
本文的工作扩展自[9],从模块建模简单的工作,到模块建模复杂的任务如mapreduce。介绍mapreduce 的特点,介绍实验设备要求。
第二章 相关工作
我们的方法使用了并行程序设计模式的理念。五类设计模式,结构化的,计算的,算法策略,实现策略,并行执行模式。另一个看并行程序的视角是,一串算法模块的拼接,构建原则是使其并行运行。
自hpc开始,并行程序的性能建模就是主要关系的地方,HPCToolKit [16], TAU [17], Scalasca [18],Score-P [19], and Vampir [20],这些都是相关的工具,用于收集测量数据捕获应用的行为,在特定的运行配置下,在单个代码或者调用路径的粒度。
类似于profiling,我们通过分析的方式。我们关于数据元素和数据在大马中传播一遍的时间。我们看待应用从一个粗粒度的数据流的视角,因此,应用被视为模块的图,每个模块的特征是早全局内存上独立。许多并行设计模式,包括pipeline, task graph, data flow, fork/join, master/worker,甚至mapreduce都可以被这个模型程序诠释。
并行程序的准确性也能通过设计模式拆分的形式得倒验证。相关的工作是本文工作的补充。本文聚焦于模块化的性能建模。
并行设计模式成功被用于QoS,在复杂软件系统设计的时候使用概率分析。我们希望使用相似的理念来理解性能。为了建模模块的性能和验证我们的提出的模块,我们在Extra-P的基础上,一个经验建模的工具,我们调整这个工具来建模数据元素在整个程序的流动时间。
为了支持性能建模,经验性建模的工具利用很多算法,如机器学习,回归模型,神经网络,统计方法如高斯过程规模。这些工作正则于我们的工作,所以我们使用建模工具Extra-P。
Extra-P的理念是,程序性能是可以有对数,指数函数来算出来的,参数是与问题规模,进程个数等人类读的懂的参数构成的。
与本文相关的工作中,有不少关于MapReduce的分析模型建模的工作。
第三章 性能建模--解耦算子,operator
第五章 解耦算子的理论分析
在本节中,我们想要探索一些算子多模式交互的后果。通常来说,解耦算子提供了一个结构化的方法来组合多个性能模型。这使得关系理论在更高维度上复合推理。
一些结合律交换律相关的分析工作。
第六章 结论
我们介绍了一个模块化的方法来构建性能模型,可以用于优化软件或者帮助实现并行软件的过程中在不同实现方案中做选择。利用不同并行设计模式的特性,我们可以构建准确的性能模型,只要软件遵守设计模式的规范。
本文是我们之前工作的扩展版本,我们展示了如何扩展已发表的工作到多个节点,同时处理进程数量变化的复杂的操作。我们用mapreduce做参考,证明我们的方法的准确性。在其他的测试案例中,我们的方案有着更小的误差,和单独模型有着相同数量级的误差。
每当系统的组件发生变化时,都可以不必仅创建生成的模型,而是在系统的实现之前允许整个系统的详细性能预测。我们的方法为程序开发者提供了设计维持和优化的重要支持。减少了需要实际工作的时间。开发者可以通过利用测试部分执行时间,来得到整体的应用的性能数据。
我们计划进一步调查这个方法,研究现有方法的局限,比如同步的开销,硬件的竞争,资源共享等问题。
想要阅读的相关文献











网友评论