A semi-algebraic model for automatic loop parallelization
本文提出半代数模型以推广经典多面体模型,实现完美嵌套多项式循环的自动并行化,支持依赖分析、调度计算与程序变换。
2024-12-26 cs.DC cs.SC
Graph based Data Dependence Identifier for Parallelization of Programs
自动并行化通过将串行程序自动转换为并行程序来提高串行程序的性能。自动并行化通常分为三个阶段:检查输入程序中的数据依赖关系,执行转换,并为目标机器生成并行代码。虽然自动并行化是有益的,但由于数据依赖性测试和转换技术的时间复杂度,它不是作为编译过程的一部分来完成的。数据依赖性是由于执行程序指令所需的来自存储器的数据访问而产生的。在程序中,内存是为标量、数组和指针等变量分配的。到目前为止,不同的技术被用来识别程序中标量、数组和指针中的数据依赖关系。在本文中,我们提出了一个基于图的数据依赖标识符(DDI),这是能够识别所有类型的数据依赖出现在所有类型的变量,在多项式时间。在我们提出的DDI模型中,为了识别程序中的数据依赖,我们将程序表示为图。虽然存在许多程序的图形表示,但我们将程序表示为图的方法采用了不同的方法。同样使用我们的DDI模型,可以执行基本的转换,如死代码消除,常数传播和感应变量检测。
2021-02-18 cs.DC
Automatic Parallelization of Sequential Programs
自动可扩展计算(ASC)的先前工作表明,通过构建整个程序执行的模型,使用该模型预测未来的计算,然后推测性地执行这些未来的计算,可以并行化顺序计算。虽然之前的工作演示了扩展,但它没有演示加速,因为它完全是在仿真中运行的。我们将此视为一个挑战,构建一个体现ASC思想的硬件原型,但可以在更广泛的程序上工作,并在硬件上本地运行。由此产生的系统是类似的精神,原来的工作,但不同的几乎在每一个方面。我们提出了一个实现的ASC架构,原生运行在x86硬件上,并实现了近线性加速高达44核(我们的测试平台的大小)的几类程序,如计算内核,地图风格的程序,矩阵运算。我们观察到,程序要么是完全可预测的,达到近乎完美的预测精度,或完全不可预测的,因此不适合通过ASC类技术进行扩展。我们还发现,在大多数情况下,加速仅受实现细节的限制:依赖跟踪基础设施的开销和对大型状态空间的操作。我们能够自动并行化程序与链接的数据结构,不服从其他形式的自动并行化。
2018-07-29 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
NApy: Efficient Statistics in Python for Large-Scale Heterogeneous Data with Enhanced Support for Missing Data
针对现有Python库无法高效处理含缺失值大规模数据统计测试的问题,提出基于Numba、C++和OpenMP的NApy包,实现可扩展的混合类型数据统计测试,在运行时间和内存消耗上比基线高出数个数量级,支持交互式即时分析。
2025-05-01 cs.DC cs.MS cs.PF
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
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
JACC: An OpenACC Runtime Framework with Kernel-Level and Multi-GPU Parallelization
计算技术的快速发展为基于指令的编程模型在维护性能关键应用程序的软件可移植性方面发挥主要作用铺平了道路。在这种模型上的努力涉及最少的工程成本,用于在多个架构上实现计算加速,而程序员仅需要在顺序代码上添加Meta信息。然而,获得最佳可能效率的优化通常具有挑战性。程序员插入指令可能会导致限制可用编译器优化的副作用,这可能导致性能下降。这在针对多GPU系统时加剧,因为杂注不会自动适应此类系统,并且需要程序员进行昂贵且耗时的代码调整。本文介绍了JACC,OpenACC运行时框架,使OpenACC程序的动态扩展作为一个透明的程序和编译器之间的层。我们增加了一个通用的代码翻译方法,多设备利用手动优化的应用程序可以自动分发,同时保持原始的代码结构和并行性。在某些情况下,我们展示了NVIDIA V100 GPU的内核执行部分几乎是线性扩展的。当自适应地使用多GPU时,由此产生的性能改进分摊了GPU到GPU通信的延迟。
2022-04-27 cs.DC
Tangram: Hiding GPU Heterogeneity for Efficient LLM Parallelization
Imperial College London(帝国理工学院)
提出Tangram系统,通过将并行化规划与GPU异构性解耦,利用同构GPU岛和模型切片组合成工作平衡流水线,实现现有异构不可知并行化器在异构集群中的高效使用,训练吞吐量提升高达2.3倍。
2026-06-16 cs.DC
A comparison between Automatically versus Manually Parallelized NAS Benchmarks
我们比较自动和手动并行化的NAS基准测试,以确定不同的代码部分。我们讨论的机会,推进自动并行化。我们发现十个模式,目前的并行化技术带来的挑战。我们还测量了可以自动执行所需转换的高级技术的潜在影响。虽然我们的一些发现并不令人惊讶,而且很难实现-编译器需要更好地识别最外层循环和包含函数调用的循环中的并行性-但其他机会是触手可及的,可以发挥作用。它们包括将循环组合到并行区域中,避免负载不平衡,以及改进约简并行化。通过研究手工优化的代码来推进编译器是走向编译器研究前沿的必要途径。然而,最近很少有论文追求这一目标。本书试图填补这一空白。
2022-11-30 cs.DC cs.PF
OMP4Py: a pure Python implementation of OpenMP
本文提出 OMP4Py,作为 OpenMP 的首个纯 Python 实现,将基于指令的并行编程范式引入 Python,并评估其在无 GIL 多线程环境下的性能表现。
2025-05-15 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
cphVB: A System for Automated Runtime Optimization and Parallelization of Vectorized Applications
现代处理器架构,除了具有更多的内核之外,还需要更多地考虑内存布局,以便满容量运行。大多数语言的有用性都不受欢迎,因为它们的抽象,结构或对象很难有效地映射到现代处理器架构上。本文介绍了一种新的抽象机器框架,cphVB,使向量导向的高级程序设计语言映射到广泛的体系结构有效。这个想法是为了缩小高级语言和硬件优化的低级实现之间的差距。通过将高级向量操作转换为中间向量字节码,cphVB使专用向量引擎能够有效地执行向量操作。主要的成功参数是保持对底层细节的完整抽象,并在不同的现代处理器上提供高效的代码执行。我们评估所提出的设计,通过一个目标的多核CPU架构的设置。我们使用Python实现的知名算法:雅可比求解器,kNN搜索,浅水模拟和合成模板模拟的性能进行评估。都表现出良好的性能。
2013-03-25 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
PopPy: Opportunistically Exploiting Parallelism in Python Agentic Workflows
University of Pennsylvania(宾夕法尼亚大学);Independent Researcher(独立研究者);University of California, Los Angeles(加州大学洛杉矶分校)
本文提出PopPy系统,通过识别Python应用中调用外部组件的并行化机会,从而在复合AI应用的端到端延迟上实现6.4倍的加速,同时保持顺序程序语义。
2026-10-06 cs.AI cs.DC cs.PL
GPRat: Gaussian Process Regression with Asynchronous Tasks
Institute of Parallel and Distributed Systems, University of Stuttgart(并行与分布式系统研究所,斯图加特大学)
本研究提出GPRat,一种使用pybind11将基于HPX的异步任务C++代码绑定至Python API的并行高斯过程库,在多核CPU训练与预测中相比GPyTorch和GPflow实现显著加速且几乎无绑定开销。
2025-04-30 cs.AI cs.DC cs.LG
Learning to Parallelize in a Shared-Memory Environment with Transformers
Ben-Gurion University of the Negev(内盖夫本-古里安大学);Nuclear Research Center – Negev(内盖夫核研究中心);Technion – Israel Institute of Technology(以色列理工学院)
在过去的几年里,世界已经转向众核和多核共享内存架构。因此,越来越需要通过将共享存储器并行化方案引入到软件应用程序来利用这些架构。OpenMP是实现此类方案的最全面的API,其特点是具有可读接口。然而,由于并行共享内存管理中普遍存在的缺陷,将OpenMP引入代码具有挑战性。为了促进此任务的性能,多年来已经创建了许多源到源(S2 S)编译器,其任务是将OpenMP指令自动插入代码中。除了对输入格式的鲁棒性有限之外,这些编译器在定位可并行化代码和生成适当的指令方面仍然没有达到令人满意的覆盖率和精度。在这项工作中,我们建议利用ML技术的最新进展,特别是在自然语言处理(NLP)中,完全取代S2 S编译器。我们创建了一个数据库(语料库),Open-OMP,专门为这个目标。Open-OMP包含超过28,000个代码片段,其中一半包含OpenMP指令,而另一半完全不需要并行化。我们使用该语料库来训练系统,以自动对需要并行化的代码段进行分类,并建议各个OpenMP条款。我们训练几个Transformer模型,命名为PragFormer,这些任务,并表明,他们优于训练的基线和自动S2 S并行编译器在分类的总体需求的一个OpenMP指令和引入私有和减少条款。我们的源代码和数据库可以在https://github.com/Scientific-Computing-Lab-NRCN/PragFormer上找…
2022-07-14 cs.CL cs.DC cs.LG
Domain-Specific Acceleration and Auto-Parallelization of Legacy Scientific Code in FORTRAN 77 using Source-to-Source Compilation
University of Glasgow(格拉斯哥大学)
本文提出一种源到源编译方法,通过整体程序分析自动将单线程FORTRAN 77代码转换为OpenCL加速程序,实现代码的并行化。
2017-11-13 cs.DC cs.MS cs.NA
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
Towards automatically building starting models for full-waveform inversion using global optimization methods: A PSO approach via DEAP + Devito
在这项工作中,我们说明了一个例子,通过使用全局优化方法(GOMs)估计的宏观模型的速度在地下。优化问题使用DEAP(Python中的分布式进化算法)和Devito解决,分别用于进化和自动有限差分计算的Python框架。我们实现了一个粒子群优化(PSO)与“精英战略”的顶部DEAP,利用其透明,简单和一致的环境,实现进化算法(EA)。由于PSO所需的大量成本函数评估(每一个都需要一个正向建模步骤),高计算量通过使用Devito以及通过与Dask并行化来减轻。这些框架的组合使用不仅产生提供P波速度场(Vp)的声学宏观模型的有效方式,而且还显著减少了在完成该任务时的人力量。
2019-05-30 cs.DC physics.geo-ph
PaSE: Parallelization Strategies for Efficient DNN Training
Baidu Research(百度研究院)
本文提出PaSE方法,从DNN计算图自动搜索高效并行化策略,实验表明其性能优于数据并行、专家设计策略及现有最先进方法。
2024-07-04 cs.DC cs.LG
Productivity, Portability, Performance: Data-Centric Python
Python已经成为事实上的科学计算语言。用Python编程是非常高效的,主要是因为它围绕NumPy模块构建了丰富的面向科学的软件生态系统。因此,高性能计算(HPC)中对Python支持的需求激增。然而,Python语言本身并不一定提供高性能。在这项工作中,我们提出了一个工作流程,保留Python的高生产力,同时实现跨不同架构的可移植性能。该工作流的关键特性是面向HPC的语言扩展和一组由以数据为中心的中间表示提供支持的自动优化。我们展示了CPU、GPU、FPGA和Piz Daint超级计算机(最多23,328个核心)的性能结果和扩展能力,与之前的最佳解决方案相比,速度提升了2.47倍和3.75倍,是Xilinx和Intel FPGA首次对注释Python进行测试,在512个节点上的扩展效率高达93.16%。
2021-08-23 cs.DC cs.PF cs.PL
Advising OpenMP Parallelization via a Graph-Based Approach with Transformers
Ben-Gurion University of the Negev(内盖夫本-古里安大学);Israel Atomic Energy Commission(以色列原子能委员会);Intel Labs(英特尔实验室);Nuclear Research Center – Negev(内盖夫核研究中心);Technion – Israel Institute of Technology(以色列理工学院)
提出OMPify方法,结合图表示与Transformer模型预测串行C/C++代码的OpenMP并行化指令,在F1分数和准确率上优于ChatGPT和PragFormer,基准测试准确率达90%。
2023-05-16 cs.AI cs.DC cs.LG
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