Pipeflow: An Efficient Task-Parallel Pipeline Programming Framework using Modern C++
流水线是一种基本的并行编程模式。主流流水线编程框架依靠数据抽象来执行流水线调度。这种设计对于以数据为中心的流水线应用是方便的,但对于只利用流水线中任务并行性的算法是低效的。因此,我们引入了一个新的任务并行流水线编程框架称为Pipeflow。Pipeflow并没有设计另一个数据抽象,而是专注于流水线调度本身,使任务并行流水线算法的实现比现有的框架更有效。我们已经在微基准测试和实际应用中评估了Pipeflow。例如,Pipeflow在采用流水线并行来加快运行时间的VLSI布局和时序分析工作负载中,分别比oneTBB快24%和10%。
2022-02-01 cs.DC
Bind: a Partitioned Global Workflow Parallel Programming Model
高性能计算因其漫长而昂贵的软件开发周期而臭名昭著。为了解决这一挑战,我们提出绑定:一个“分区的全球工作流”的C++应用程序的并行编程模型,使快速原型和敏捷的开发周期的高性能计算软件的目标异构分布式众核架构。我们提出了绑定到线性代数和MapReduce算法的应用程序,以及性能结果。
2016-06-15 cs.DC
Teaching Parallel Programming Using Both High-Level and Low-Level Languages
我们讨论了MPI和OpenMP在并行编程的高年级本科生和低年级研究生课程教学中的使用。我们简要介绍了OpenMP标准,并讨论了为什么我们选择使用它在并行编程类。讨论了使用OpenMP优于消息传递方法的优点。我们还简要列举了使用OpenMP的一些缺点,以及如何通过使用额外的MPI代码和项目补充OpenMP来解决这些缺点。本文还介绍了我在课堂上所做的几个项目。
2001-10-29 cs.DC
Performance Evaluation of Parallel Message Passing and Thread Programming Model on Multicore Architectures
共享内存系统上的多核架构的当前趋势强调了并行性的需求。虽然有一些编程模型来表示并行性,线程编程模型已经成为一个标准,以支持这些系统,如OpenMP,和POSIX线程。MPI(消息传递接口)仍然是当今高性能计算中使用的主要模型,它面临着这一挑战。以前的MPI版本MPI-1没有共享内存的概念,而当前的MPI版本2 MPI-2对共享内存系统的支持有限。在这项研究中,MPI的MPI-2版本将与OpenMP进行比较,看看MPI在多核/ SMP(对称多处理器)机器上的性能如何。将在多核共享内存机器架构上比较用于线程编程模型的OpenMP和用于消息传递编程模型的MPI,以查看谁在速度和吞吐量方面具有更好的性能。用于评估评估并行编程解决方案的可扩展性的应用程序是可定制矩阵维数的矩阵乘法。大量的大规模并行计算的研究都是使用NSA Parallel Benchmark(NPB)等大规模测试标准进行测试的[1]。本文的研究将在一个小规模的并行计算环境下进行,重点是利用自行开发的测试程序对MPI和OpenMPI并行编程模型进行性能评估。
2010-12-10 cs.DC
Extending Contract Verification for Parallel Programming Models to Fortran
TU Darmstadt University(达姆施塔特工业大学)
本文基于CoVer框架,扩展其至Fortran,实现多语言静态动态分析,验证了其在MPI-BugBench中发现bug的有效性,并优于MUST工具。
2026-04-22 cs.DC cs.PL
Parallelizing Optimal Multiple Sequence Alignment by Dynamic Programming
本文提出基于对等设计和多维数组索引的并行动态规划多序列比对方案,相比主从设计最高提升5倍性能,并展示多维动态规划在多处理器架构上的并行化方法。
2023-11-29 cs.DC
Extended Abstract: Productive Parallel Programming with Parsl
Parsl是一个Python的并行编程库,旨在简化程序中的并行性,并在任意并行和分布式计算系统上实现这种并行性。Parsl依赖于开发人员对Python函数进行注释(包装Python或外部应用程序),以表明这些函数可以并发执行。然后,开发人员可以通过数据交换将功能链接在一起。Parsl建立一个动态依赖关系图,并在解决依赖关系时发送任务,以便在连接的资源上执行。Parsl的运行时系统允许使用不同的计算资源,从笔记本电脑到超级计算机,而无需修改Parsl程序。
2022-05-04 cs.DC
Utilizing Parallelism in Smart Contracts on Decentralized Blockchains by Taming Application-Inherent Conflicts
由于共识协议本身的瓶颈,传统的公共区块链系统通常具有非常有限的交易吞吐量。随着共识技术的最新进展,性能限制已经大大提高,通常达到每秒数千笔交易。这样一来,事务执行就成了一个新的性能瓶颈。利用事务执行中的并行性是解决此问题并进一步提高事务吞吐量的一种明确而直接的方法。尽管最近的一些文献引入了并发控制机制来并行执行智能合约交易,但它们所能实现的加速效果远不理想。主要原因是,所提出的并行执行机制不能有效地处理许多区块链应用程序中固有的冲突。在这项工作中,我们深入研究了以太坊中的历史交易执行痕迹。我们观察到,应用程序固有的冲突是限制可利用的并行执行过程中的主要因素。我们建议使用分区计数器和特殊的交换指令,打破应用程序的冲突链,以最大限度地提高潜在的加速比。当我们评估可实现的最大并行加速比时,这些技术将此限制加倍,与串行执行相比,总体加速比为18倍,从而接近最佳值。我们还提出了OCC-DA,一种具有确定性中止的乐观并发控制调度器,这使得在公共区块链设置中使用OCC调度成为可能。
2022-02-10 cs.DC
A Review of CUDA, MapReduce, and Pthreads Parallel Computing Models
高性能计算(HPC)和图形处理单元(GPU)的出现为需要并行处理以进行鲁棒和及时的数据分析的大数据事务(大数据)提供了巨大的计算资源。虽然已经提出了许多HPC框架,但并行编程模型提出了许多挑战,例如,如何充分利用不同编程模型中的功能,通过CPU和GPU中的多线程来实现和管理并行性。在本文中,我们将概述三种并行编程模型,CUDA,MapReduce和Pthreads。目标是探索有关该主题的文献,并提供编程模型中呈现的功能的高级视图,以帮助高性能用户简明地理解并行编程概念,从而使用高性能计算更快地实现大数据项目。
2014-10-16 cs.DC
A Software Parallel Programming Approach to FPGA-Accelerated Computing
本文介绍了一种努力,将可重构逻辑(FPGA)组件到一个软件编程模型。为此,我们已经实现了一个硬件计算节点和CPU之间的远程内存通信的硬件引擎。硬件引擎与GASNet的API兼容,GASNet是一种用于并行计算应用程序的流行通信库。我们进一步实现了我们自己的GASNet Core API的x86和ARMv7软件版本,使我们能够编写分布式应用程序,其中软件和硬件GASNet组件相互透明地通信。
2014-08-21 cs.DC
A Tool for Programming Embarrassingly Task Parallel Applications on CoW and NoW
令人尴尬的并行问题可以被分成几个部分,这些部分的特征是在并行计算过程中信息交换非常少(有时甚至没有)。因此,它们可以有效地并行计算利用商品硬件,因此没有特别复杂的互连网络。基本上,这意味着集群、工作站网络和分布式计算以及计算云。尽管这种计算模型很简单,但它可以用来计算相当大范围的问题。JJPF是一个基于Java和Jini的任务并行应用程序开发工具,在工作站和桌面集群和网络等环境中,它是一个有效的解决方案。
2013-06-24 cs.DC
Couillard: Parallel Programming via Coarse-Grained Data-Flow Compilation
数据流是一种自然的并行方法。然而,描述细粒度数据流任务之间的依赖关系和控制可能是复杂的,并且存在不必要的开销。TLM(TLM is an Architecture and Language for Multi-threading)引入了一种用户定义的粗粒度并行数据流模型,程序员在该模型中识别要并行运行的代码块(称为超级指令),并将它们连接到数据流图中。TALM已经被实现为一个混合冯诺依曼/数据流执行系统:\emph{Trebuchet}。我们已经观察到,TALM的有用性在很大程度上取决于程序员如何指定和连接超级指令。因此,我们提出\emph{Couillard},一个完整的编译器,创建,基于注释的C程序,一个数据流图和C代码对应于每个超级指令。我们表明,我们的工具链允许一个受益于数据流执行和探索复杂的并行编程技术,用小的努力。为了评估我们的系统,我们在一个大型多核机器上执行了一组真实的应用程序。与流行的并行编程方法的比较显示了竞争力的加速比,同时提供了一个更容易的并行编程方法。
2011-09-22 cs.DC
A Study of Performance Programming of CPU, GPU accelerated Computers and SIMD Architecture
该研究梳理CPU、GPU、SIMD三类并行计算实现方式及现有研究瓶颈,汇总并行编程技术资料,呈现其现状与趋势,为后续研究提供背景支撑。
2024-09-16 cs.DC
Advanced Programming Platform for efficient use of Data Parallel Hardware
图形处理单元(GPU)已经从能够在游戏中渲染高质量图形的专用硬件发展为用于以并行模式有效处理数据块的商品硬件。这种演变对于科学团体来说特别有趣,他们传统上主要使用CPU作为工作机器,现在可以从GPU硬件到HPC集群的到来中获益。这种新的GPU硬件有望提高峰值性能,但使用起来并不轻松。在这篇文章中,提出了一个编程平台,旨在促进直接使用这种专门的硬件。该平台包括一个并行数据流的可视化编辑器,它是面向在分布式集群与GPU的执行。在两个特征问题,快速傅立叶变换和图像压缩的应用程序的例子,也显示。
2012-03-23 cs.DC
Parallel Programming Model for the Epiphany Many-Core Coprocessor Using Threaded MPI
Adapteva Epiphany众核架构包括具有最少非核功能的低功耗RISC内核的2D平铺网格片上网络(NoC)。它为整数和浮点计算以及并行可扩展性提供了高计算能效。然而,尽管有有趣的架构特性,一个令人信服的编程模型还没有提出日期。本文展示了一个有效的并行编程模型的Epiphany架构的消息传递接口(MPI)标准的基础上。使用MPI利用了Epiphany架构和传统的并行分布式串行核心集群之间的相似性。我们的方法使MPI代码执行的RISC阵列处理器上的修改很少,并实现高性能。我们报告了四种算法(密集矩阵-矩阵乘法、N体粒子相互作用、五点2D模板更新和2D FFT)的线程MPI实现的基准测试结果,并强调了快速核间通信对架构的重要性。
2015-06-17 cs.DC
Is Parallel Programming Hard, And, If So, What Can You Do About It? (Release v2023.06.11a)
本书作为并行编程的工程学科基础指南,讲解具体任务处理方法与实践路径,旨在帮助读者高效掌握并行编程技术,聚焦新前沿创新。
2023-06-12 cs.DC
OpenMP Parallelization of Dynamic Programming and Greedy Algorithms
多核自出现以来就成为一种典型的体系结构模型,现在已经成为一种标准。趋势是增加核的数量和提高存储系统的性能。为一个重要的算法内核提供一个高效的多核实现是一个真正的贡献。从方法论的角度来看,这应该在基础范式(如果有的话)的级别上完成。在本文中,我们研究的情况下,{ \em动态规划}和{ \em贪心算法},这是两个主要的算法范例。我们专门考虑通过OpenMP基于方向的循环并行化,并研究必要的预转换,以达到一个定期的并行形式。我们评估我们的方法与选择知名的组合优化问题的INTEL Broadwell处理器。可扩展性的关键点之前和之后的实验结果进行了讨论。我们的直接观点是将我们的研究扩展到众核情况,特别关注NUMA配置。
2020-01-20 cs.DC
Parallel parametric linear programming solving, and application to polyhedral computations
参数线性规划是多面体计算和某些控制应用的核心,我们提出了一种基于任务的并行化方案,在大型问题上具有准线性加速比。
2019-04-12 cs.CG cs.DC
TaskUniVerse: A Task-Based Unified Interface for Versatile Parallel Execution
基于任务的并行编程在并行编程的效率、性能、生产力和可扩展性等方面都表现出了竞争力。不同的软件开发框架使用不同的方法来向程序员提供这些结果,同时使底层硬件架构对她透明。然而,由于程序在这些框架之间是不可移植的,因此使用一个框架或另一个框架仍然是程序员的重要决定,程序员关心的是程序的可扩展性,自适应性,可维护性和互操作性。在这项工作中,我们提出了一个统一的编程接口,程序员可以使用不同的基于任务的并行框架透明地工作。在这种方法中,我们抽象的任务为基础的并行编程的共同概念,并提供给程序员在一个单一的编程接口统一的所有框架。我们已经通过运行程序来测试该接口,该程序在针对共享和分布式内存架构和加速器进行优化的框架内实现矩阵运算,而框架之间的合作是在外部配置的,无需修改程序。进一步可能的扩展的接口和未来的潜在研究也被描述。
2017-05-08 cs.DC
LLMapReduce: Multi-Level Map-Reduce for High Performance Data Analysis
map-reduce并行编程模型在大数据社区中非常流行。许多大数据工作负载可以从超级计算机提供的增强性能中受益。LLMapReduce为运行在超级计算机上的大数据用户提供了熟悉的映射-缩减并行编程模型。LLMapReduce通过在一行代码中提供简单的并行编程能力,极大地简化了map-reduce编程。LLMapReduce支持所有程序设计语言和许多调度器。LLMapReduce可以与任何应用程序一起工作,而无需修改应用程序。此外,LLMapReduce可以通过允许用户切换到更高效的单程序多数据(SPMD)并行编程模型的选项来克服map-reduce并行编程模型中的缩放限制。这些特性使用户能够将计算开销减少到某些应用程序的标准map-reduce的10倍以上。LLMapReduce被MIT的数百名用户广泛使用。目前LLMapReduce可以与几个编译器一起工作,例如SLURM,Grid Engine和LSF。
2016-07-22 cs.DC
Shared memory parallelism in Modern C++ and HPX
本文概述了现代C++标准中用于单节点共享内存并行编程的语言与库特性,并介绍了HPX库如何提前实现这些标准及扩展,使开发者无需自定义扩展即可编写高性能并行代码。
2023-08-09 cs.DC
Partitionnement Déterministe pour Résoudre les Problèmes de Programmation Par Contraintes en utilisant le Framework Parallèle Bobpp
本文提出了一种确定性并行化探索约束规划搜索空间。这项工作是一个名为PAJERO的工业项目,这是在需要一个并行约束求解器,总是响应相同的解决方案,无论是使用顺序或并行机的答案。众所周知,并行树搜索改变了对解空间进行探索的顺序。在返回找到的第一个解决方案的上下文中,使用不同数量的核可能会改变返回的解决方案。在文献中,已经提出了几种非确定性策略来并行化约束编程搜索空间的探索。它们中的大多数都是基于工作窃取技术,该技术用于根据需求和在搜索算法执行期间划分约束编程搜索空间。我们的研究集中在并行搜索与顺序搜索的决定论。我们认为,顺序搜索算法是确定性的,然后提出一个优雅的解决方案,引入一个总顺序的节点,其中的并行算法总是给出相同的解决方案,顺序的,无论使用的核心数量。为了评估这种确定性策略,我们在并行Bobpp框架上使用Google OR-Tools约束编程求解器进行了测试。通过求解FlatZinc格式建模的约束编程问题来说明性能。
2014-06-11 cs.DC
The OpenMP Cluster Programming Model
尽管有各种研究计划和提出的编程模型,但HPC集群中并行编程的有效解决方案仍然依赖于不同编程模型的复杂组合(例如,OpenMP和MPI)、语言(例如,C++和CUDA)和专用运行时(例如,Charm++和Legion)。另一方面,任务并行性已被证明是一个高效和无缝的集群编程模型。本文介绍了OpenMP集群(OMPC),任务并行模型,扩展了集群编程的OpenMP。OMPC利用OpenMP的卸载标准在分布式系统的节点之间分发带注释的代码区域。为了实现这一点,它将基于MPI的数据分发和负载平衡机制隐藏在OpenMP任务依赖关系后面。由于OMPC与OpenMP兼容,它允许应用程序使用相同的编程模型来利用节点内和节点间的并行性,从而简化了开发过程和维护。我们评估OMPC使用任务工作台,一个综合的基准集中在任务并行性,比较其性能与其他分布式运行时。实验结果表明,OMPC可以提供高达1.53倍和2.43倍的性能比Charm++的CCR和可扩展性实验,分别。实验还表明,OMPC性能弱规模的任务台和现实世界的地震成像应用。
2022-08-13 cs.DC
An Empirical Study of Speculative Concurrency in Ethereum Smart Contracts
我们使用历史数据来估计并行执行以太坊智能合约的投机技术的潜在好处。我们使用一个简单的推测执行引擎,随着时间的推移,从以太坊区块链中重放采样块的交易跟踪。在这个引擎中,矿工试图并行执行块中的所有事务,回滚那些导致数据冲突的事务。然后按顺序执行中止的事务。验证器执行与矿工相同的调度。我们发现,我们的推测性技术估计从2016年开始加速约8倍,到2017年底下降到约2倍,其中加速使用gas成本或指令计数来衡量。我们还观察到,一个小的合同集负责许多数据冲突所造成的投机并发执行。
2019-01-22 cs.DC
Teaching Parallel Programming Using Java
本文介绍了"应用并行计算"课程讲授的最后一年软件工程本科生在2014年春季在巴基斯坦NUST的概述。该课程的主要目标是介绍实用的并行编程工具和技术,用于共享和分布式内存并发系统。该课程的一个独特之处是Java被用作主要的程序设计语言。课程分为三个部分。第一部分介绍了用于共享内存系统的并行编程技术,包括多核和对称多处理器(SMP)系统。在本节中,我们将Java线程作为一种可行的编程API来介绍。第二部分专门介绍用于分布式内存系统(包括计算机集群和网络)的并行编程工具。我们使用MPJ-一个Java MPI库-来进行本节的编程作业和实验工作。第三节也是最后一节涵盖了高级主题,包括使用Hadoop的MapReduce编程模型和图形处理单元上的通用计算(GPGPU)。
2014-08-27 cs.CY cs.DC
pPython for Parallel Python Programming
pPython试图提供一种并行能力,通过在纯Python中基于文件的消息传递库(PythonMPI)之上实现分区全局数组语义(PGAS),在不牺牲Python编程的易用性的情况下提供良好的加速。pPython中的核心数据结构是一个分布式数值数组,它在多个处理器上的分布是用map构造指定的。分布式阵列之间的通信操作被抽象为远离用户,pPython透明地支持在多达四个维度上的任何块循环重叠分布之间的重新分配。pPython遵循SPMD(单程序多数据)计算模型。pPython可在支持Python的任何异构系统组合上运行,包括Windows、Linux和MacOS操作系统。除了在单节点上透明地运行(例如,笔记本电脑),pPython提供了一个调度器接口,这样pPython就可以在大规模并行计算环境中执行。最初的实现使用Slurm调度器。pPython在HPC Challenge基准测试套件上的性能证明了编程的简易性和可扩展性。
2022-08-31 cs.DC
Performance Analysis in Parallel Programming Education: A Comparative Usability Study
Fulda University of Applied Sciences(富尔达应用技术大学);University of Kassel(卡塞尔大学);Otto von Guericke University Magdeburg(奥托·冯·格里克马格德堡大学)
针对并行编程教育中性能分析工具复杂、难以整合的问题,开发了EduMPI工具,通过简化集群使用和提供直观可视化,降低学生入门门槛,提升教学效果。
2026-07-01 cs.DC
A task-based approach to parallel parametric linear programming solving, and application to polyhedral computations
参数线性规划是多面体计算以及某些控制应用中的核心操作.本文提出了一种基于任务的并行化方案,在大型问题上具有准线性加速比.这种类型的并行应用具有挑战性,因为多个任务可能计算同一区域.在本文中,我们提出了算法本身的并行冗余消除算法,并进行了深入的性能分析。
2020-09-29 cs.CG cs.DC
Accelerating Communication for Parallel Programming Models on GPU Systems
随着越来越多的领先级系统在向亿级的竞争中采用GPU加速器,GPU数据的有效通信正在成为高性能计算的最关键组件之一。对于并行编程模型的开发人员来说,使用GPU(如CUDA)的本机API实现对GPU感知通信的支持可能是一项艰巨的任务,因为它需要相当大的努力,性能几乎没有保证。在这项工作中,我们展示了统一通信X(UCX)框架组成GPU感知通信层的能力,该层为Charm++生态系统的多个并行编程模型提供服务:Charm++,自适应MPI(AMPI)和Charm4py。我们使用改编自OSU基准测试套件的微基准测试来展示我们设计的性能影响,在Charm++中获得了高达10.1倍的延迟改进,在AMPI中获得了11.7倍的延迟改进,在Charm4py中获得了17.4倍的延迟改进。我们还观察到Charm++的带宽增加了10.1倍,AMPI增加了10倍,Charm4py增加了10.5倍。通过评估Jacobi迭代法的代理应用程序,我们展示了我们的设计对现实世界应用程序的潜在影响,在Charm++中将通信性能提高了12.4倍,在AMPI中提高了12.8倍,在Charm4py中提高了19.7倍。
2022-03-22 cs.DC
Operator-oriented programming: a new paradigm for implementing window interfaces and parallel algorithms
我们提出了一个新的编程范式,可以是有用的,特别是,用于实现窗口接口和并行算法。这个范例允许用户定义可以包含嵌套运算符的运算符。这种新的范式被称为面向运营商。这种模式的目标之一是避免许多面向对象语言中固有的对象定义的复杂性,并转向透明的算法定义。
2010-04-23 cs.DC cs.PL
Process-Oriented Parallel Programming with an Application to Data-Intensive Computing
我们介绍面向过程的编程作为一个自然的扩展面向对象的编程并行计算。它基于这样的观察:面向对象语言的每个类都可以实例化为一个进程,可以通过远程指针访问。进程指针的引入不需要语法扩展,用编程对象标识进程,并使进程能够通过执行远程方法简单地交换信息。面向过程的编程是一种高级语言,可以替代多线程、MPI和当前用于并行计算的许多其他语言、环境和工具。它只使用现有语言(如C++和Python)的最小语法扩展来实现自然的基于对象的并行性,因此有可能导致并行编程的广泛采用。我们实现了一个原型系统运行进程使用C++与MPI,并使用它来计算一个大型的三维傅立叶变换的计算机集群上建立的商品硬件组件。三维傅立叶变换是具有复杂数据访问模式的数据密集型应用程序的原型。面向进程的代码只有几百行,通过实现大规模并行和最大化硬件利用率来实现非常高的数据吞吐量。
2014-07-21 cs.DC cs.PL
DuctTeip: An efficient programming model for distributed task based parallel computing
用于科学计算的当前高性能计算机系统通常在分布式存储器环境中组合共享存储器计算节点。从这些复杂的系统中提取高性能需要量身定制的方法。基于任务的并行编程在简化编程和利用共享存储器系统的硬件并行性方面都取得了成功。本文重点讨论如何将任务并行编程扩展到分布式内存系统。我们使用任务和数据的分层分解,以适应不同级别的硬件。我们测试所提出的编程模型在两个不同的应用程序,Cholesky分解,和浅水方程求解器。我们还比较了我们的实现与其他框架的分布式任务并行编程的性能,并表明它是有竞争力的。
2018-01-10 cs.CE cs.DC cs.PF
A Lattice Linear Predicate Parallel Algorithm for the Dynamic Programming Problems
并行LLP(Lattice Linear Predicate)算法解决了最短路问题、稳定婚姻问题和市场出清价格问题等组合优化问题。本文给出了多个动态规划问题的并行LLP算法。特别是,我们表明,LLP算法解决了最长的子序列问题,最佳二叉搜索树问题,和背包问题。此外,该算法可以用来解决这些问题的约束版本,只要约束是格线性的。并行LLP算法只需要读写原子性,不需要更高级别的原子指令。
2021-03-10 cs.DC cs.DS
Proceedings of HLPP 2026: 19th International Symposium on High-Level Parallel Programming and Applications
Institut Henri Poincaré(庞加雷研究所)
HLPP 2026会议录包含十篇同行评审论文,研讨会涵盖并行编程高级方法,2026年版扩展到人工智能领域,论文经单盲评审选出,按程序顺序发表,由李冲等人编辑。
2026-07-15 cs.DC cs.PL
Towards Parallel Computing on the Internet: Applications, Architectures, Models and Programming Tools
互联网上通用并行计算资源的开发提出了匹配计算和通信复杂性的挑战性任务。存在许多并行计算模型来解决传统并行架构的问题,并且存在许多新兴模型来尝试为诸如计算网格之类的大规模基于互联网的系统实现这一点。在本调查中,我们涵盖了三个基本方面--应用程序、架构和模型,并展示了它们在过去十年中是如何发展的。我们还介绍了目前用于计算网格中并行编程的编程工具。传统计算模型的趋势是通过使不同类型的通信适应网络条件来强调参与节点之间的有效通信。在大规模系统中出现的动态性和不确定性的影响显然是重要的理解,但目前很少有工作,从并行计算的角度来解决这个问题。
2006-12-25 cs.DC cs.PF
Enabling Dynamic Selection of Implementation Variants in Component-Based Parallel Programming for Heterogeneous Systems
针对异构系统编程需掌握多框架的难题,提出基于组件的COMPAR框架,通过编译器指令扩展与StarPU运行时支持,实现运行时组件实现变体的智能选择,在保障性能的同时简化编程、提升代码复用性。
2023-11-06 cs.DC cs.PL
Parallel Local Search: Experiments with a PGAS-based programming model
局部搜索是求解组合优化和约束满足问题的一种成功方法。随着多核和众核系统、GPU和对Exascale系统的追求的不断发展,并行性已经成为主流,因为内核的数量不断增加。需要新的编程模型以及数据结构和算法,并且需要更好地理解。当在数百或数千个处理单元上运行时,局部搜索算法就是这种情况。在本文中,我们讨论了一些实验,我们一直在做自适应搜索,并提出了一个新的并行版本,它的基础上GPI,最近的API和编程模型的发展可扩展的并行应用程序。我们在不同问题上的实验显示了有趣的加速比,更重要的是,对局部搜索方法的并行化进行了更深入的解释。
2013-05-10 cs.DC cs.PL
To parallelize or not to parallelize, bugs issue
程序正确性是并行编程中最困难的挑战之一。消息传递接口MPI被广泛用于编写并行应用程序。由于MPI不是一种编译语言,程序员在编写MPI程序时会遇到一些编程错误,本文介绍了MPI程序中最常见的编程错误,以帮助程序员在并行性的优点和检测和修复这些错误所需的额外工作之间进行折衷。一个代数规格的MPI类程序设计语言,称为简单MPI(SMPI),用于编写MPI程序规范也已提出。此外,SMPI程序中的不确定性和死锁现象也在Maud系统中得到了验证。
2013-11-04 cs.DC cs.PL
2D Image Convolution using Three Parallel Programming Models on the Xeon Phi
图像卷积被广泛用于锐化、模糊和边缘检测。在本文中,我们回顾了两种常见的算法卷积的二维图像的一个可分离的内核(过滤器)。在使用循环展开和SIMD向量化优化朴素代码之后,我们选择具有更好性能的算法作为并行化的基线。然后,我们比较了在英特尔至强融核上使用OpenMP、OpenCL和GPRM实现的优化代码的并行性能。我们还测量优化技术的效果,并演示它们如何影响顺序和并行性能。除了比较代码的复杂性,以及所选择的并行编程模型的性能,我们调查的影响,并行化技术,在GPRM的任务聚集。
2017-11-27 cs.DC cs.PL
Cache-aware Parallel Programming for Manycore Processors
随着技术的快速发展,多核和众核处理器已经成为受益于晶体管数量增加的有前途的架构。向这些并行架构的过渡使今天成为研究并行计算挑战的激动人心的时刻。TILEPro64是一个众核加速器,由64个通过多个8x8网格网络互连的瓦片组成。默认情况下,它包含每瓦片缓存并支持缓存一致性共享内存。在本文中,我们提出了一种编程技术,以利用分布式缓存设施在众核处理器。然而,与这一领域的其他工作不同,我们的方法不使用特定于体系结构的库。相反,我们为程序员提供了一种新的技术,如何规划未来的非均匀缓存架构(NUCA)众核系统,铭记他们的缓存组织。我们表明,我们的本地化编程方法可以导致并行化效率(加速)的显着提高。
2014-03-31 cs.DC cs.PF
The Glasgow Parallel Reduction Machine: Programming Shared-memory Many-core Systems using Parallel Task Composition
我们提出了格拉斯哥并行归约机(GPRM),一种新颖的,灵活的框架,并行任务组合为基础的众核编程。我们允许程序员将程序结构化为任务代码,编写为C++类,和通信代码,编写在C++的有限子集中,具有功能语义和并行评估。在本文中,我们讨论的GPRM,虚拟机框架,使并行任务组合方法。我们集中讨论GPIR,函数语言作为中间表示的字节码上运行的GPRM。使用这种语言的例子,我们展示了我们的任务组成框架的灵活性和力量。我们展示了潜力,使用合并排序算法的64核Tilera处理器上的实现,以及在传统的英特尔四核处理器和AMD 48核处理器系统。我们还比较了我们的框架与在Tilera处理器上运行的并行指针追逐算法中的OpenMP任务。我们的研究结果表明,GPRM程序优于相应的OpenMP代码在所有的测试平台上,可以大大方便的并行程序的编写,特别是非数据并行算法,如减少。
2013-12-10 cs.DC cs.PL
I CAN HAS SUPERCOMPUTER? A Novel Approach to Teaching Parallel and Distributed Computing Concepts Using a Meme-Based Programming Language
提出了一种新的方法来教授同步和远程存储器访问的并行和分布式计算概念。本文提出的单程序多数据(SPMD)分区全局地址空间(PGAS)模型使用一种面向本科生的过程式程序设计语言。我们建议,有趣的性质的方法可能会产生创造力和兴趣,使用这些概念后,在更清醒的环境。具体来说,我们实现了并行扩展LOLCODE内的源到源编译器足够的并行和分布式算法的发展,通常使用传统的高性能计算语言和API。
2017-03-29 cs.DC cs.PL
Session-Based Programming for Parallel Algorithms: Expressiveness and Performance
本文研究会话编程和类型的基准测试的例子,比较生产力,安全性和性能与其他通信程序设计语言。并行算法被用来检查上述方面,由于它们广泛使用的消息传递的交互,以及它们在算法研究中的日益突出的硬件资源,如多核机器和集群的可用性。我们贡献了新的基准测试结果SJ,Java的类型安全,二进制会话编程的扩展,对MPJ Express,基于MPI标准的Java消息传递系统。总之,我们观察到(1)尽管有丰富的库和功能,MPI仍然是一个低级API,并且可能遭受显式消息传递的常见缺点,如死锁和意外的消息类型,以及(2)高级会话抽象的好处,这对程序结构有显着影响,以提高可读性和可靠性,并且会话类型安全可以极大地促进通信编程的任务,同时保持有竞争力的性能。
2010-02-04 cs.DC cs.PL
Parallel Programming Models for Heterogeneous Many-Cores : A Survey
异构多核现在是从嵌入式系统到超级计算机的现代计算系统的组成部分。虽然异构众核设计提供了高能效高性能的潜力,但只有当应用程序适当并行并且可以匹配底层异构平台时,这种潜力才能被释放。在这篇文章中,我们提供了一个全面的调查异构众核架构的并行编程模型,并审查编译技术,提高可编程性和可移植性。我们研究了各种软件优化技术,以最大限度地减少异构计算设备之间的通信开销。我们为各种不同的研究领域提供了路线图。最后,我们对该领域的开放问题和潜在的研究方向进行了讨论。这篇文章既提供了对快速发展的异构编程领域的一个容易理解的介绍,也提供了其主要成就的详细参考书目。
2020-05-05 cs.DC cs.PL
Temporal Parallelisation of Dynamic Programming and Linear Quadratic Control
本文提出了最优控制问题动态规划时间并行化的一般公式。我们推导出的元素和关联运算符能够使用并行扫描来解决这些问题的对数时间复杂度,而不是线性时间复杂度。我们应用这种方法的问题,有限的状态和控制空间,线性二次跟踪控制问题,一类非线性控制问题。并行方法的计算效益通过在图形处理单元上运行的数值模拟来证明。
2022-01-24 cs.DC cs.SY eess.SY
Programming Massively Parallel Architectures using MARTE: a Case Study
如今,一些工业应用程序正在移植到并行架构。这些应用程序利用了多核处理器提供的潜在并行性。自2003年以来,众核处理器,特别是GPU(图形处理单元),一直引领着浮点性能的竞赛。虽然通用微处理器的性能提升已经明显放缓,但GPU却在坚持不懈地继续改进。截至2009年,众核GPU和多核CPU的峰值浮点计算吞吐量之比约为10倍。然而,由于并行编程需要任务和数据的非平凡分布,开发人员发现很难有效地实现他们的应用程序。为了提高众核处理器的使用,这项工作提出了一个案例研究,使用UML和MARTE配置文件指定和生成OpenCL代码密集的信号处理应用程序。基准测试结果表明,我们的可行性使用MDE方法来生成GPU应用程序。
2011-03-24 cs.DC cs.SE
Parallel Logic Programming: A Sequel
Università di Udine(乌迪内大学);GNCS-INdAM(意大利国家高等数学研究院-国家科学计算小组);University of Texas at Dallas(德克萨斯大学达拉斯分校);IMDEA Software Institute(IMDEA 软件研究所);Universidad Politécnica de Madrid(马德里理工大学);New Mexico State University(新墨西哥州立大学);CRACS/INESC TEC(CRACS/INESC TEC 研究所);University of Porto(波尔图大学)
多核和高度连接的架构已经变得无处不在,这带来了新的兴趣,基于语言的方法来开发并行性。逻辑程序设计自诞生以来就被认为是一种具有巨大潜力的并行性自动开发的编程范式。2001年出版的对并行逻辑编程前二十年研究的全面调查,一直是研究人员和开发人员的基本参考。这些内容在今天是相当有效的,但与此同时,该领域在随后的几年中继续快速发展。这些成就和正在进行的研究中有许多是由技术创新的快速步伐推动的,这导致了诸如超大型集群、多核处理器的广泛普及、通用图形处理单元的游戏规则改变作用以及云计算的普遍采用等进步。这已经被逻辑编程中的重大进步所证实,例如制表、更强大的静态分析和验证、应答集编程的快速增长,以及一般来说,更成熟的实现和系统。本次调查提供了自2001年以来的并行逻辑编程研究的回顾,从而提供了前一次调查的自然延续。该调查的目标是不仅作为逻辑编程系统的研究人员和开发人员的参考,而且作为对逻辑感兴趣的任何人的引人入胜的阅读,并作为逻辑编程之外的并行系统研究人员的有用资源。逻辑程序设计理论与实践(TPLP)
2022-01-24 cs.AI cs.DC cs.LO
TEMANEJO - a debugger for task based parallel programming models
我们提出的程序Temanejo,调试器任务为基础的并行模型,如StarSs。调试StarSs应用程序的挑战在于,任务是在运行时调度的,即根据它们之间的数据依赖关系动态调度。我们的工具通过可视化任务依赖图并允许控制任务的调度来帮助程序员在调试过程中。该工具集由库Ayudame和调试器Temanejo组成,前者与StarSs运行时通信,后者与Ayudame通信。Temanejo提供了一个图形化的用户界面,可以通过它来分析和控制应用程序。
2011-12-20 cs.DC cs.SE
Distributed dynamic load balancing for task parallel programming
在本文中,我们推导和研究的方法,动态负载平衡的分布式任务并行应用软件。负载均衡策略是基于任务迁移的。忙进程将其就绪任务队列的一部分导出到空闲进程。空闲-忙碌的进程对通过随机搜索过程找到彼此,该过程在几个步骤内以高概率成功。我们评估的负载均衡的方法块Cholesky分解实现,并观察到在所选的测试用例的顺序上的5\%的执行时间减少。
2018-01-14 cs.DC cs.MS cs.PF
Faster and Simpler Width-Independent Parallel Algorithms for Positive Semidefinite Programming
本文研究半正定规划的$(1+ε)$ -近似解的求法问题。这些是半定规划,其中约束和目标中的所有矩阵都是半正定的,并且所有标量都是非负的。我们提出了一个更简单的\NC并行算法,在输入$n$约束矩阵,需要$O(\frac{1}{ε^3} log^3 n)$迭代,其中每一个只涉及简单的矩阵运算和计算矩阵指数和半正定矩阵的乘积的迹。此外,给定因子分解形式的正SDP,我们的算法的总工作在因子分解中的非零条目的数量上是近线性的。
2016-02-22 cs.DC cs.DS
Real-Time Parallel Programming: State of Play and Open Issues
实时的【形】系统应用程序通常由一组具有时间相关属性的并发活动组成。开发这些应用程序需要能够有效地处理并发活动和时间约束的规范的编程范例,以及控制它们在特定平台上的执行。高性能的流行趋势和细粒度并行执行的使用使这成为一项更具挑战性的任务。本文综述了实时的【形】形并行应用的发展现状和面临的挑战,重点介绍了两个当前的研究方向,一个是高性能领域(基于OpenMP),另一个是实时的【形】形和关键系统领域(基于Ada)。本文提供了一个审查的支持功能的每一种方法,确定仍然开放的问题和当前的研究方向。
2023-03-20 cs.DC cs.PL cs.SE
Chunks and Tasks: a programming model for parallelization of dynamic algorithms
我们提出了块和任务,一个并行编程模型建立在抽象的数据和工作。应用程序员指定如何将数据和工作分别拆分为更小的片段、块和任务。Chunks and Tasks库将块和任务映射到物理资源。通过这种方式,我们寻求将用户友好性与高性能相结合。应用程序员可以使用几个简单的构建块来表达并行算法,定义数据和工作对象及其关系。不需要显式的通信调用;工作和数据的分发由Chunks和Tasks库处理。这使得需要动态分配工作和数据的复杂应用程序的高效实现变得更加容易。同时,Chunks and Tasks对数据访问和任务依赖性施加了限制,这有助于开发高性能并行后端。我们讨论了编程模型的基本抽象,以及性能和故障恢复的考虑。我们还提出了一个试点C++库实现集群的多核机器,并证明其性能稀疏分块矩阵矩阵乘法。
2012-10-28 cs.DC cs.SE
UniAP: Unifying Inter- and Intra-Layer Automatic Parallelism by Mixed Integer Quadratic Programming
National Key Laboratory for Novel Software Technology(计算机软件新技术国家重点实验室)
针对现有自动并行方法未联合优化层间与层内并行导致次优解的问题,提出UniAP方法,通过混合整数二次规划统一两类并行策略,在五个Transformer模型上吞吐量提升达3.80倍,优化时间缩短达107倍。
2025-04-18 cs.DC cs.LG math.OC
Programming Parallel Dense Matrix Factorizations with Look-Ahead and OpenMP
我们调查的密集矩阵分解(DMF)算法的并行化策略,使用OpenMP,从遗留(或传统)的解决方案,它只是简单地提取并发从多线程版本的BLAS。这种方法也不同于更复杂的运行时辅助实现,后者将操作分解为任务,并通过指令和运行时支持来识别依赖关系。相反,我们的策略达到高性能显式地嵌入到DMF代码的静态前瞻技术,以克服性能瓶颈的面板因式分解,并实现尾随更新通过缓存感知多线程实现的BLAS。虽然并行算法是用高级别的抽象来指定的,但实际的实现可以很容易地从它们中导出,从而为在任何具有类似OpenMP的运行时的多核平台上导出相当大一部分LAPACK功能的高性能实现铺平了道路。
2018-04-19 cs.DC cs.MS