Graph based Data Dependence Identifier for Parallelization of Programs
自动并行化通过将串行程序自动转换为并行程序来提高串行程序的性能。自动并行化通常分为三个阶段:检查输入程序中的数据依赖关系,执行转换,并为目标机器生成并行代码。虽然自动并行化是有益的,但由于数据依赖性测试和转换技术的时间复杂度,它不是作为编译过程的一部分来完成的。数据依赖性是由于执行程序指令所需的来自存储器的数据访问而产生的。在程序中,内存是为标量、数组和指针等变量分配的。到目前为止,不同的技术被用来识别程序中标量、数组和指针中的数据依赖关系。在本文中,我们提出了一个基于图的数据依赖标识符(DDI),这是能够识别所有类型的数据依赖出现在所有类型的变量,在多项式时间。在我们提出的DDI模型中,为了识别程序中的数据依赖,我们将程序表示为图。虽然存在许多程序的图形表示,但我们将程序表示为图的方法采用了不同的方法。同样使用我们的DDI模型,可以执行基本的转换,如死代码消除,常数传播和感应变量检测。
2021-02-18 cs.DC
Automatic Parallelization of Python Programs for Distributed Heterogeneous Computing
本文介绍了一种新的方法来自动提前(AOT)并行化和优化的顺序Python程序在分布式异构平台上执行。我们的方法支持Python程序的AOT源到源转换,由包含函数参数和返回值的类型提示驱动。这些提示可以由程序员提供,也可以通过动态分析器工具获得;多版本代码生成保证了AOT转换在所有情况下的正确性。我们的编译框架执行自动并行化和复杂的高级代码优化的目标分布式异构硬件平台。它包括对多面体框架的扩展,统一了矩阵/张量运算符中的用户编写的循环和隐式循环,以及CPU与GPU代码变体的自动化部分。此外,我们的多面体优化使节点内和节点间的并行。最后,使用Ray运行时部署优化的输出代码,以跨集群中的多个异构节点调度分布式任务。我们的经验评估显示,在单节点和多节点实验中,相对于顺序Python,性能有了显著的提高,当在OLCF Summit超级计算机中使用24个节点和144个GPU进行空时自适应处理(STAP)雷达应用时,性能提高了20,000多$\times$。
2022-03-11 cs.DC
J-Parallelio -- automatic parallelization framework for Java virtual machine code
人工翻译的算法从顺序版本到其并行对应的是耗时的,只能做硬件加速器架构,并行编程或编程环境的具体知识。这个过程的自动化使得移植代码变得更容易和更快。在这种情况下,关键的方面是生成的并行代码的效率如何。本文介绍了J-Meselio,框架自动分析的字节码源代码和多核处理器上的并行化。该过程由几个步骤组成。第一步是对JVM进行反编译,并将其转换为内部抽象语法树,进行依赖提取和内存分析。最后,执行映射过程,该映射过程由负责将输入虚拟机源代码转换为其并行版本的一组规则组成。主要的新颖之处在于,它可以处理纯Java虚拟机,并可以为多核处理器生成并行代码。这使得系统具有可移植性,经过一些小的修改后,它可以与基于JVM的不同语言一起工作。自动翻译的源代码的效率进行了比较,他们的手动编写的同行在选定的基准。
2023-02-07 cs.DC
Automatic task-based parallelization of C++ applications by source-to-source transformations
目前,多/众核CPU被认为是大多数类型的计算机(包括移动电话、PC或超级计算机)的标准配置。然而,应用程序的并行化以及应用程序的重构/设计以有效地使用硬件仍然限于具有高级技术知识并且可以投入时间调整其软件的专家。在这种情况下,编译社区提出了不同的方法来自动并行化,但他们的重点是传统的循环和嵌套循环的支持多面体技术。在这项研究中,我们提出了一种新的方法来转换顺序的C++源代码到一个基于任务的并行插入注释。我们解释了在每次函数/方法调用时创建任务的不同机制,以及如何限制任务的数量。我们的方法可以在OpenMP 4.0标准之上实现。它独立于编译器,可以依赖于外部优化良好的OpenMP库。最后,我们提供了初步的性能结果,说明了我们的方法的潜力。
2021-05-22 cs.DC cs.PL
Parallelization of a new embedded application for automatic meteor detection
Sorbonne Université(索邦大学);CNRS(法国国家科学研究中心);LIP6(LIP6实验室)
本研究针对面向低功耗嵌入式场景的流星自动检测计算机视觉应用,通过拆分任务图并应用多种并行化技术,在Raspberry Pi 4上实现了高清视频42帧每秒的实时处理,功耗仅6瓦,验证了并行化方法的高效性。
2023-07-20 cs.CV cs.DC
AutoParallel: A Python module for automatic parallelization and distributed execution of affine loop nests
程序设计语言、编程模型和框架的最新改进集中在将用户从许多编程问题中抽象出来。其中,最近的编程框架包括更简单的语法,自动存储管理和垃圾回收,这通过库包和易于配置的部署工具简化了代码重用。例如,Python由于其语法的简单性而上升到程序设计语言列表的顶部,同时即使是解释语言也仍然实现了良好的性能。此外,社区还帮助开发了大量的库和模块,并对其进行了调整以获得更好的性能。然而,在阻止用户直接处理分布式和并行计算问题时,仍有改进的空间。本文提出并评估AutoParallel,一个Python模块,自动找到一个适当的基于任务的并行仿射循环嵌套并行执行它们在分布式计算基础设施。这种并行化还可以包括构建数据块以增加任务粒度,以便实现良好的执行性能。此外,AutoParallel基于顺序编程,只包含一个Python装饰器形式的小注释,因此任何编程技能不高的人都可以将应用程序扩展到数百个核心。
2018-10-26 cs.DC cs.PL
Accelerating Latency-Critical Applications with AI-Powered Semi-Automatic Fine-Grained Parallelization on SMT Processors
Moscow Institute of Physics and Technology(莫斯科物理技术学院)
针对延迟关键型应用在SMT处理器上功能单元利用率低、难利用SMT并行的问题,提出AI驱动的并行化顾问Aira,结合Relic框架实现细粒度并行,带来17%的几何平均性能提升。
2025-08-31 cs.AI cs.DC
Monodromy Solver: Sequential and Parallel
我们描述,研究和实验的算法,用于找到所有解决方案的多项式方程组使用同伦连续和monodromy系统。该算法遵循在以前的工作中开发的框架,可以在同伦连续子程序的大量故障的存在下操作。我们特别注意并行化和概率分析的模型,适合并行化和故障。除了理论结果,我们开发了一个模拟器,使我们能够运行大量的实验,而无需重新计算连续子程序的结果。
2018-05-30 cs.DC cs.SC math.AG
Parallelization of the FFT on SO(3)
在本文中,一个工作最佳的并行Kostelec和Rockmore的著名的快速傅立叶变换及其逆的三维旋转群SO(3)的设计,实现,并测试。为此,首先简要回顾了顺序算法。在后续的并行算法的设计和实现中,我们采用了著名的Forster(PCAM)方法和OpenMP标准。并行化本身是基于基本基函数的对称性和几何方法,其中所得到的索引范围以这样一种方式进行变换,即不同的工作包可以有效地分布到计算节点。在一个64核的系统上进行的加速比和效率评估基准测试证明了并行算法在实践中的好处。这里,我们第一次为准确度和存储器关键带宽512两者的全变换呈现积极结果。使用所有64个可用核,对于所考虑的最大带宽128、256和512的加速比在前向变换中分别为29.57、36.86和34.36,在逆变换中分别为24.57、26.69和24.25。
2018-08-02 cs.DC
Rethinking Dynamic Networks and Heterogeneous Computing with Automatic Parallelization
The Hong Kong University of Science and Technology (Guangzhou)(香港科技大学(广州))
本文针对动态网络与异构节点场景,提出基于仿真的自动并行规划方法,并通过策略剪枝加速搜索,提升大语言模型训练性能与适应性。
2025-06-03 cs.AI cs.DC
The Potential of Synergistic Static, Dynamic and Speculative Loop Nest Optimizations for Automatic Parallelization
以循环为中心的程序的自动并行化研究始于静态分析,然后将其扩展到包括动态检查执行和推测执行,最好的结果涉及混合静态-动态方案。除了检测顺序程序中的并行性之外,众核处理器上的可扩展并行化还涉及到困难而有趣的并行性适应和映射挑战。这些挑战包括为存储层次结构定制数据局部性、分层构造独立任务以利用多个并行级别、调整同步粒度、平衡执行负载、将执行解耦到线程级流水线中以及利用具有专用加速器的异构硬件。多面体框架允许建模,构造和应用非常复杂的循环嵌套转换,解决大多数并行适应和映射挑战。但是,除了特定于硬件的、面向后端的转换(if转换、跟踪调度、值预测)之外,循环嵌套优化基本上忽略了动态和推测性技术。多面体编译的研究最近达到了一个重要的里程碑,支持动态的,数据相关的控制流。这为将动态分析和推测技术与高级循环嵌套优化相结合开辟了一条广阔的道路。从SPEC基准测试和数值内核中选择真实世界的例子,我们为协同静态,动态和投机循环转换技术的设计做了一个案例。我们还勾画了动态信息的嵌入,包括投机性的假设,在仿射变换搜索空间的心脏。
2011-11-29 cs.DC cs.PF cs.PL
Estimating the overlap between dependent computations for automatic parallelization
研究程序自动并行化的研究人员早就知道,过多的并行性可能比过少的并行性更糟糕,因为在另一个CPU上运行一个任务会产生开销。因此,自动并行化编译器长期以来一直试图使用粒度分析来确保它们只产生那些成本可能会超过产生成本的计算。然而,这不足以产生好的结果,因为数据依赖性可能会限制并行运行计算的有用性。如果一个计算几乎立即阻塞,并且只能在另一个完成其工作后才能恢复,那么并行化的成本再次超过了收益。我们提出了一组算法,用于识别程序中值得并行执行两个或多个计算的位置,这些算法关注第二个问题以及第一个问题。我们的系统使用分析信息来计算过程调用消耗其输入参数的值的时间和产生其输出参数的值的时间。给定两个可以并行执行的调用,我们的系统使用它们共享的变量的生产和消费时间来确定如果它们并行运行,它们的执行会重叠多少,因此并行执行它们是否是一个好主意。我们已经为Mercury以工具的形式实现了这种技术,该工具使用分析数据来生成关于并行化的建议,以便Mercury编译器应用于程序的下一次编译。我们提出的初步结果表明,这种技术可以产生有用的并行化加速,而不需要更多的程序员比代表输入数据的剖析运行。
2011-09-07 cs.DC cs.PL
Compile-time Parallelization of Subscripted Subscript Patterns
越来越多的科学应用程序正在使用不规则的数据访问模式。这类模式的一个重要类别涉及下标-下标,其中一个数组值出现在另一个数组的索引表达式中。即使并行化具有这种模式的循环所需的信息在程序中通常是可用的,当前的编译器技术也无法分析该信息。在本文中,我们提出了一个研究的下标下标,属性定义的下标数组,和一个算法的基础上符号范围聚合,这将有助于证明存在的一些属性的下标数组在程序中。我们表明,在一类重要的程序,该算法可以提高性能,从基本上顺序执行接近完全并行。
2019-11-13 cs.DC cs.PL
A simple and efficient explicit parallelization of logic programs using low-level threading primitives
在这项工作中,我们提出了一种自动的方式来并行化逻辑程序,以找到所有的答案查询使用转换到低级别的线程原语。虽然十多年前在逻辑编程的并行化方面已经做了很多工作(例如,Aurora,Muse,YapOR),并行化逻辑程序的现状仍然很差。本文提出了一种在良基语义下,XSB Prolog表式逻辑程序并行化的方法。这项工作的一个重要贡献在于合并来自多个子线程的答案表,而不会导致数据结构的复制或完全共享和同步。父子共享答案表的实现在效率上超过了目前使用多线程并行化完成答案所实现的所有其他数据结构。转换及其较低级别的答案合并谓词是作为XSB系统的扩展实现的。
2009-12-28 cs.DC cs.PL
Introducing Molly: Distributed Memory Parallelization with LLVM
为分布式内存机器编程一直是一项乏味的任务,但这是必要的,因为编译器本身还没有足够的能力为这样的机器进行优化。Molly是LLVM编译器工具链的一个扩展,如果程序被组织在静态确定的循环控制流中,它能够分发和重组工作负载和数据。这些被表示为多面体整数点集,允许应用于它们的程序转换。程序员可以根据需要声明内存分布和布局,并自动生成必要的异步MPI通信。主要动机是在IBM Blue Gene/Q超级计算机上运行Lattice QCD模拟,但由于实施尚未完成,本文展示了Conway生命游戏的功能。
2014-09-07 cs.DC cs.PL
GSPMD: General and Scalable Parallelization for ML Computation Graphs
Google(谷歌)
我们提出了GSPMD,一个自动的,基于编译器的并行化系统,用于常见的机器学习计算。它允许用户以与单个设备相同的方式编写程序,然后通过一些关于如何分配张量的注释给出提示,GSPMD将基于这些注释并行计算。它的分区表示简单而通用,允许它在各种模型上表达不同或混合的并行范例。GSPMD根据有限的用户注释为每个操作员推断分区,从而方便扩展现有的单设备程序。它解决了生产使用中的几个技术挑战,使GSPMD能够在多达2048个Cloud TPUv3内核上实现50%至62%的计算利用率,适用于多达1万亿个参数的模型。
2021-12-23 cs.DC cs.LG
HAPMoE: Heterogeneity-Aware Automatic Parallelism Planning for Mixture-of-Experts Models Training
Peking University(北京大学);Infinigence AI(无问智能);Tsinghua University(清华大学)
针对MoE模型在异构集群上的自动并行化难题,提出HAPMoE,通过MoE感知成本模型和六维并行空间搜索,实现吞吐量最高提升3.2倍,并在一分钟内完成规划。
2026-10-01 cs.DC cs.LG
Parallelization does not Accelerate Convex Optimization: Adaptivity Lower Bounds for Non-smooth Convex Minimization
Harvard University(哈佛大学)
本文研究了凸优化问题并行化的局限性。研究并行化的一种方便方法是通过\emph{adaptivity}的棱镜,\emph{adaptivity}是算法并行运行时间的信息论度量[BS 18]。非正式地说,自适应性是当算法在每一轮可以并行执行多项式多个查询时,它需要进行的顺序轮数。对于具有黑盒Oracle访问的组合优化,最近对自适应性的研究导致了并行运行时的指数加速,自然的问题是凸优化是否可以实现显著的加速。对于最小化一个非光滑凸函数$f:[0,1]^n\to \mathbb{R}$在单位欧几里德球的问题,我们给出了一个紧的下界,表明即使$\texttt{poly}(n)$查询可以并行执行,也没有随机算法与$\tilde{o}(n^{1/3})$轮的自适应性,具有收敛速度,比那些实现一个查询每轮算法。Nemirovski [Nem94]获得了类似的下限,但该结果适用于$\ell_{\infty}$设置而不是$\ell_2$。此外,我们还证明了一个紧的下界,持有Lipschitz和强凸函数。在写这份手稿的时候,我们不知道涅米罗夫斯基的结果。我们使用的构造与[Nem94]中的构造类似,尽管我们的分析不同。由于这项工作和[Nem94]之间的密切关系,我们认为这篇手稿的研究贡献有限,它应该作为一种有效的方法来理解并行优化的下限。
2019-11-20 cs.DC cs.DS cs.IT
Using Sequential Runtime Distributions for the Parallel Speedup Prediction of SAT Local Search
University of Tokyo(东京大学);CNRS(法国国家科学研究中心);UPMC(巴黎第六大学(皮埃尔和玛丽·居里大学));University of Nantes(南特大学)
本研究提出一种基于序列运行时分布与次序统计量的框架,预测SAT局部搜索算法的并行加速性能,经两款求解器在384核硬件上的实验验证准确率较高,并发现其运行时分布可由指数或对数正态分布近似。
2024-01-30 cs.AI cs.DC
Automatic Operator-level Parallelism Planning for Distributed Deep Learning -- A Mixed-Integer Programming Approach
本文提出一种基于混合整数规划的算子级自动并行规划方法,通过双层求解框架兼顾最优性与计算效率,在相同内存约束下将计算气泡减少一半,性能达到或超越 DeepSeek DualPipe 等专家策略。
2025-03-12 cs.AI cs.DC cs.DM
ParFORM: Parallel Version of the Symbolic Manipulation Program FORM
在介绍了FORM的顺序版本和背后的机制之后,我们报告了我们的并行化项目的状态。我们现在有一个并行版本的FORM运行在集群和SMP架构上。该版本可用于并行运行任意FORM程序。
2004-07-30 cs.DC cs.SC hep-ph
Auto-Parallelizing Large Models with Rhino: A Systematic Approach on Production AI Platform
Alibaba Group(阿里巴巴集团);The University of Hong Kong(香港大学);National University of Singapore(新加坡国立大学)
我们提出了Rhino,一个在人工智能平台上为实际生产环境加速自动并行化张量程序的系统。它将为单个设备编写的张量程序转换为等效的分布式程序,该程序能够扩展到数千个设备,无需用户配置。Rhino首先致力于张量程序的语义独立的中间表示,这有助于其推广到前所未有的应用。此外,它还实现了一个面向任务的控制器和一个分布式运行时,以实现最佳性能。Rhino探索了一个完整而系统的并行化策略空间,包括深度学习(DL)中常用的所有范式,以及非线性模型上的跨分区和流水线并行。为了有效地搜索一个接近最优的并行执行计划,我们的生产集群的分析揭示了一般的策略,以加快搜索。在此基础上,设计了两个优化级别,为用户提供搜索时间和策略质量之间的灵活权衡。我们的实验表明,Rhino不仅可以重新发现经典,研究和生产DL模型的专家制定的策略,而且还可以识别超越现有系统的新模型的新并行化策略。
2023-02-16 cs.DC cs.LG cs.PL
Unifying Optimization and Dynamics to Parallelize Sequential Computation: A Guide to Parallel Newton Methods for Breaking Sequential Bottlenecks
STANFORD UNIVERSITY(斯坦福大学)
本文提出并行牛顿方法,通过统一固定点方法,解决动态系统并行化中的效率、稳定性及收敛性问题,基于Lyapunov指数确定并行加速条件。
2026-03-17 cs.AI cs.DC cs.NA