Layout-Agnostic MPI Abstraction for Distributed Computing in Modern C++
Charles University(查理大学)
针对 MPI 纯 C 接口缺乏现代 C++ 类型与泛型支持的问题,本文基于 Noarr 提出布局无关抽象,并通过分布式 GEMM 验证其灵活性及与现有 MPI C++ 绑定相当的性能。
2025-10-19 cs.DC
Distributed Abstraction Algorithm for Online Predicate Detection
分析分布式计算是一个困难的问题,一般由于组合爆炸的状态空间的大小与系统中的进程的数量。通过抽象计算,可以避免不必要的探索。计算切片是一种针对给定谓词抽象分布式计算的方法。我们关注的是常规谓词,这是一个谓词家族,涵盖了大量用于运行时验证的常用谓词。现有的计算切片算法本质上是集中式的,其中单个进程负责以离线或在线方式计算切片。在本文中,我们提出了一个分布式的在线算法计算片的分布式计算的一个定期谓词。我们的算法在整个系统中分配工作和存储需求,从而降低了每个进程的空间和计算复杂性。此外,对于合取谓词,我们的算法还减少了每个进程的消息负载。
2013-06-04 cs.DC
Pipeflow: An Efficient Task-Parallel Pipeline Programming Framework using Modern C++
流水线是一种基本的并行编程模式。主流流水线编程框架依靠数据抽象来执行流水线调度。这种设计对于以数据为中心的流水线应用是方便的,但对于只利用流水线中任务并行性的算法是低效的。因此,我们引入了一个新的任务并行流水线编程框架称为Pipeflow。Pipeflow并没有设计另一个数据抽象,而是专注于流水线调度本身,使任务并行流水线算法的实现比现有的框架更有效。我们已经在微基准测试和实际应用中评估了Pipeflow。例如,Pipeflow在采用流水线并行来加快运行时间的VLSI布局和时序分析工作负载中,分别比oneTBB快24%和10%。
2022-02-01 cs.DC
Record-replay debugging for the SCOOP concurrency model
为了支持开发人员编写可靠高效的并发程序,近年来提出了新的并发程序设计抽象。使用这种抽象进行编程需要新的分析工具,因为执行语义通常与已建立的模型有很大的不同。我们提出了一个记录重放技术,在SCOOP,面向对象的编程模型并发编写的程序。由此产生的工具,使开发人员能够重现并发程序的不确定性执行,调试和测试的必要先决条件。
2012-12-21 cs.DC
Pilot-Edge: Distributed Resource Management Along the Edge-to-Cloud Continuum
许多科学和工业物联网应用需要跨边缘到云连续体进行数据处理,以满足性能、安全性、成本和隐私要求。然而,需要各种抽象和基础设施来管理边缘到云场景中的资源和任务。我们提出Pilot-Edge作为跨边缘到云连续体的资源管理的通用抽象。Pilot-Edge基于试点抽象,它简化了资源和工作负载管理,并为应用程序级任务提供了功能即服务(FaaS)接口。这种抽象允许应用程序将公共功能封装在高级任务中,然后可以跨连续体配置和部署这些任务。我们使用机器学习工作负载(例如,k-means和自动编码器)。我们的实验演示了Pilot-Edge如何管理分布式资源,并允许应用程序基于多个因素(例如,模型复杂性、吞吐量和等待时间)。
2021-04-07 cs.DC
Programming abstractions for preemptive scheduling in FPGAs using partial reconfiguration
FPGA是一种有吸引力的通用HPC计算系统加速器,因为它可以按需部署定制的硬件。然而,用于编程和操作FPGA的常用工具使用起来仍然很复杂,特别是在应该动态执行不同类型任务的场景中。在这项工作中,我们提出了一个简单的接口,内部利用高级综合,动态部分重新配置和同步机制,使用FPGA作为一个多任务服务器与抢占式调度和优先级队列的编程抽象。这可以更好地利用FPGA资源,允许同时执行多个内核,并尽可能快地部署最紧急的内核。我们的实验研究的结果表明,我们的方法只会产生1.66%的开销时,只使用一个可重构区域(RR),和4.04%时,使用两个RR,同时提出了一个显着的性能改善,比传统的非抢占式完全重新配置方法。
2022-08-26 cs.AR cs.DC
P*: A Model of Pilot-Abstractions
Pilot-Job支持有效的分布式资源利用,并且可以说是最广泛使用的分布式计算抽象之一-如使用它们的应用程序的数量和类型以及支持它们的生产分布式网络基础设施的数量所测量的。尽管广泛吸收,不存在一个定义良好的,统一的概念模型的试点工作,可用于定义,比较和对比不同的实现。通常,试点工作的实现与它们最初设计的分布式网络基础设施紧密耦合。这些因素构成了可扩展性和互操作性的障碍。本文试图(i)提供一个最小但完整的Pilot-Job模型(P*);(ii)通过将各种现有的和众所周知的Pilot-Job框架(如Condor和DIANE)映射到P* 来建立P* 模型的通用性;(iii)为P* 模型导出一个可互操作和可扩展的API(iv)通过在不同的生产分布式网络基础设施上同时使用多个不同的Pilot-Job框架来验证Pilot-API的实现,以及(v)将P* 模型应用于Pilot-Data。
2012-07-27 cs.DC
Towards Efficient Abstractions for Concurrent Consensus
一致性是并发和分布式编程中经常出现的问题。我们提出了一种程序设计语言,具有简单的语义和内置的支持共识的形式进行通信的事务。我们激励需要这样一个结构的一个典型的例子,广义共识,可以自然地编码在我们的语言。然后,我们专注于实现的挑战,可以有效地运行这样的程序。我们建立了一个体系结构,以评估不同的实现方案,并使用它来实验性地评估运行时性能。这是现实的程序设计语言支持共识的研究项目的基础。
2013-05-07 cs.DC cs.PL
Scalable data abstractions for distributed parallel computations
将程序表示为部件的分层组合的能力是管理软件复杂性的重要工具,并且这提供的关键抽象是将数据的表示与计算分离。许多当前的并行编程模型使用共享存储器模型来提供数据抽象,但是由于非确定性和访问延迟,这不能很好地与大量核一起扩展。本文提出了一个简单的编程模型,允许可扩展的并行程序表示与分布式表示的数据,它提供了程序员的灵活性,采用共享或分布式风格的数据并行在适用的情况下。它能够有效地实现,并且在硬件中提供一小部分原始功能,它可以被编译为直接在硬件上操作,就像基于堆栈的分配在顺序机中的子程序中操作一样。
2012-10-03 cs.DC cs.PL
A Meta-graph Approach to Analyze Subgraph-centric Distributed Programming Models
使用批量同步并行(BSP)编程模型的以数据为中心的分布式图形处理平台已经获得了牵引力。这些解决了大数据抽象/平台(如MapReduce/Hadoop)用于大规模图形处理的缺点。然而,对于不同的图、图划分和图算法,这些以组件为中心的抽象的行为的基本方面的文献有限。在这里,我们提出了一个分析方法的基础上的元图草图,以检查以组件为中心的图形编程模型的特点,在一个粗粒度。特别是,我们将此草图应用于以子图和块为中心的抽象,并与以顶点为中心的模型(如Google的Pregel)进行比较。首先,我们探讨了各种图分区技术对元图的影响,然后考虑元图对图算法的影响。这消除了笨重的大型图及其算法分析中的分区特定工件。我们使用5个空间和幂律图作为范例,四种不同的分区策略,和PageRank和广度优先搜索作为规范算法。这些元图的分析提供了一个可靠的措施的预期数量的超步骤,通信和计算复杂性的算法为各种图形,和相对的优点,以子图为中心的顶点为中心的模型。
2016-10-31 cs.DC
Pilot-Data: An Abstraction for Distributed Data
依赖于处理大量数据的科学问题需要克服多个领域的挑战:管理大规模数据分布,控制数据与计算资源的协同放置和调度,以及存储,传输和管理大量数据。虽然存在多种方法来解决这些挑战中的每一个,但缺少一种综合方法;此外,扩展现有功能或实现互操作能力充其量仍然很困难。我们提出了试点数据的概念,以解决在异构和分布式环境中的数据和计算的协同放置和调度的基本挑战,互操作性和可扩展性作为第一顺序的关注。Pilot-Data是Pilot-Job抽象的扩展,用于支持与计算任务相结合的数据管理。Pilot-Data将逻辑数据单元与物理存储分离,从而为高效的计算/数据放置和调度提供基础。在本文中,我们讨论了试点数据原型的设计和实施,演示了它的使用数据密集型应用程序在多个生产分布式网络基础设施,并说明了试点数据启用灵活的执行模式所带来的优势。我们的实验利用一个可扩展的Pilot-Job(BigJob)结合Pilot-Data的实现来建立可以通过使用Pilot-Data来实现的应用程序性能。我们展示了Pilot-Data的概念如何为构建工具和支持功能(如亲和力)提供基础,而亲和力又可用于高级数据计算协同布局和调度。
2013-11-19 cs.DC
A Graph-Based, Distributed Memory, Modeling Abstraction for Optimization
Atomic Machines Inc.(原子机器公司)
本文提出面向分布式优化的RemoteOptiGraph建模抽象,扩展Plasmo.jl的OptiGraph以支持分布式内存环境,基于该抽象结合Benders分解求解大规模混合整数规划问题速度提升7.5倍。
2025-11-18 cs.DC cs.MS math.OC
High level programming abstractions for leveraging hierarchical memories with micro-core architectures
微核心架构将许多低内存、低功耗计算核心组合在单个封装中。这些作为加速器是有吸引力的,但由于有限的片上存储器和多层次的存储层次结构,程序员卸载内核的方式需要仔细考虑。在本文中,我们使用Python作为一种工具,探索更高层次的程序设计语言的语义和抽象,以支持卸载的计算内核到这些设备。通过转移到一个引址传递模型,以及利用内存种类,我们证明了能够轻松有效地利用多个层次的存储层次结构,甚至是那些不能直接访问的微核心。使用一个机器学习基准,我们进行实验的Epiphany-III和MicroBlaze的微核心,展示了计算能力与任意大的数据集大小。为了提供我们的研究结果,我们探索了这些技术的性能和功耗效率,证明了虽然这两种微内核技术在其自己的嵌入式硬件类别中具有竞争力,但要达到HPC级GPU还有一段路要走。
2020-10-04 cs.DC cs.PL
On the Design of Distributed Programming Models
编写大规模分布式应用程序需要新的抽象和模型。我们证明这些模型是可能的。以下从FLP结果和CAP定理,我们表明,并发编程模型是必要的,但不是足够的,在建设大型分布式系统,因为故障和网络分区的问题:语言需要能够捕捉和编码的一致性和可用性之间的权衡。我们提出了两种编程模型,Lasp和Austere,其中每一个都作出了很强的权衡方面的CAP定理。这两个模型概括了分布式模型设计的界限:严格AP或严格CP。我们认为,所有可能的分布式编程模型必须来自这个设计空间,并提出一个实际的设计,允许声明性规范的一致性权衡,称为Spry。
2017-02-01 cs.DC
HiCR, an Abstract Model for Distributed Heterogeneous Programming
本文提出分布式异构编程抽象模型 HiCR,通过最小抽象操作集合与插件化运行时支持层,实现跨当前及未来硬件平台的应用执行。
2025-09-01 cs.DC
Fast General Distributed Transactions with Opacity using Global Time
事务可以通过向应用程序开发人员隐藏数据分布、并发和故障来简化分布式应用程序。理想情况下,开发人员将看到一个单独的大型机器的抽象,该机器顺序地运行事务并且从不失败。这就要求事务子系统提供不透明性(对已提交和已中止的事务都严格可串行化),以及透明的高可用性容错。由于即使是最好的抽象,如果它们表现不佳,也不太可能被使用,因此系统还必须提供高性能。现有的分布式事务设计要么削弱了这种抽象,要么不是为数据中心内的最佳性能而设计的。本文扩展了FaRM的设计-仅为提交的事务提供严格的可串行化性-以提供不透明性,同时保持FaRM的高吞吐量,低延迟和高可用性在现代数据中心。它使用基于实时的的时间戳排序,时钟在整个集群中同步到几十微秒内,并使用故障转移协议来确保时钟主机故障的正确性。当在90台机器上运行TPC-C事务混合时,具有不透明性的FaRM每秒可以提交540万个新事务,并具有3路复制。
2020-06-25 cs.DC
Quorum Tree Abstractions of Consensus Protocols
分布式算法解决的一致性问题,如共识或状态机复制是现代容错分布式服务的重要组成部分。他们也是出了名的难以理解和推理。它们的复杂性源于对它们所处环境的不同假设,即,过程或网络链路故障,拜占庭故障等。在本文中,我们提出了一种新的抽象表示,这种协议的动态集中在法定人数的响应(投票)的请求(建议),在运行过程中形成的协议。我们表明,专注于这样的法定人数,一个协议的运行可以被视为工作在一个树结构,不同的分支代表不同的可能结果的协议,目标是稳定的选择一个固定的分支。这种抽象类似于区块链基础设施中使用的最新协议的描述,例如,支持比特币或HotStuff的协议。我们表明,这种抽象支持各种算法的安全性推理,例如,Paxos,PBFT,Raft和HotStuff,以统一的方式。在一般情况下,它提供了一个新的归纳为基础的论据,证明这样的协议是安全的。
2023-01-24 cs.DC
UniGPS: A Unified Programming Framework for Distributed Graph Processing
工业界和学术界提出了许多分布式图处理系统。然而,现有的系统对数据分析师和算法工程师等用户不够友好。一方面,现有系统中的编程模型和接口差异很大,导致较高的学习成本和程序迁移成本。另一方面,这些图形处理系统与底层的分布式计算平台紧密绑定,要求用户熟悉分布式计算。为了提高分布式图处理的可用性,提出了一个统一的分布式图编程框架UniGPS。首先,我们提出了一个统一的跨平台图形编程模型VCProg的UniGPS。VCProg对用户隐藏了分布式计算的细节。它与流行的图形编程模型Pregel,GAS和Push-Pull兼容。VCProg程序可以在兼容的分布式图处理系统上执行,无需修改,减少了用户的学习开销。其次,UniGPS支持Python作为程序设计语言。我们提出了一个基于进程间通信的执行环境隔离机制,使Java/C++为基础的系统调用用户定义的方法写在Python中。实验结果表明,UniGPS使用户能够在不牺牲可用性的情况下处理超出单机内存容量的大图形。UniGPS显示出接近线性的数据可扩展性和机器可扩展性。
2021-08-04 cs.DC
Kudu: An Efficient and Scalable Distributed Graph Pattern Mining Engine
本文提出了Kudu,这是一个分布式执行引擎,具有定义良好的抽象,可以与现有的单机图形模式挖掘(GPM)系统集成,同时提供效率和可扩展性。关键的新颖性是可扩展的嵌入抽象,它可以表达模式枚举算法,允许细粒度的任务调度,并使低成本的特定于GPM的数据重用,以降低通信成本。有效的BFSDFS混合探索产生足够的通信计算重叠的并发任务与有限的内存消耗。通过在Kudu上移植Automine和GraphPi实现了两个可扩展的分布式GPM系统。我们的评估表明,基于Kudu的系统显著优于最先进的分布式GPM系统,分区图高达75.5倍(平均19.0倍),与最快的分布式GPM系统相比,复制图实现了类似甚至更好的性能,并可扩展到具有超过1000亿条边的大型图形。
2022-11-11 cs.DC
A Programming Model for GPU Load Balancing
我们提出了一个GPU细粒度的负载平衡抽象,从工作处理中提取负载均衡,旨在支持静态和动态调度,并通过可编程接口实现新的负载平衡调度。在我们的工作之前,释放GPU在不规则问题上的潜力的唯一方法是通过特定于应用程序的紧耦合负载平衡技术来实现工作负载平衡。通过我们的开源负载平衡框架,我们希望在GPU上开发不规则并行算法时提高程序员的生产力,并通过允许快速试验各种现有负载平衡技术来提高此类应用程序的整体性能特征。因此,我们也希望通过在我们的抽象中将负载平衡的关注点从工作处理中分离出来,管理现有代码并将其扩展到未来的架构中变得更加容易。
2023-01-12 cs.DC
Network Abstractions for Characterizing Communication Requirements in Asynchronous Distributed Systems
本文提出网络抽象方法,通过有向图序列刻画异步系统中的通信需求,并为解决含拜占庭进程的FRR问题提供必要且充分的抽象条件。
2024-05-23 cs.DC cs.DM cs.LO
Towards Performance Portable Programming for Distributed Heterogeneous Systems
硬件异构性是高性能计算的基础。大规模系统目前每个计算节点都配备了多个GPU加速器,预计未来将采用更专业的硬件。计算生态系统的这种转变为性能改进提供了许多机会;然而,它也增加了此类架构的编程复杂性。这项工作介绍了一个运行时框架,使异构系统轻松编程,同时有效地利用硬件资源。该框架集成在一个分布式的和可扩展的运行时系统,以促进跨异构节点的性能可移植性。随着设计,本文描述了实施和优化执行,实现了高达300%的改进,在共享内存基准和分布式设备通信高达10倍。初步结果表明,我们的软件产生的开销低,实现了40%的改善,在分布式Jacobi代理应用程序,同时隐藏的特质的硬件。
2022-10-03 cs.DC
RLlib: Abstractions for Distributed Reinforcement Learning
University of California, Berkeley(加州大学伯克利分校)
强化学习(RL)算法涉及高度不规则计算模式的深度嵌套,其中每一个通常表现出分布式计算的机会。我们主张通过自上而下的分层控制算法,以可组合的方式分发RL组件,从而将并行性和资源需求封装在短期运行的计算任务中。我们通过RLlib证明了这一原则的好处:一个为RL提供可扩展软件原语的库。这些原语使广泛的算法能够以高性能、可伸缩性和大量的代码重用来实现。RLlib可在https://rllib.io/上获得。
2018-06-29 cs.AI cs.DC cs.LG
Streaming Message Interface: High-Performance Distributed Memory Programming on Reconfigurable Hardware
分布式存储器编程是在高性能计算(HPC)系统中使用的已建立的范例,其需要节点和设备之间的显式通信。当FPGA部署在分布式环境中时,通信通常通过主机进行处理,牺牲性能,或者通过固定的设备到设备连接进行流式传输,牺牲灵活性。我们提出了流消息接口(SMI),一个通信模型和API,统一了明确的消息传递与面向硬件的编程模型,促进最小的开销,灵活,高效的FPGA间通信。代替批量传输,消息在计算期间通过网络流式传输,允许通信无缝集成到流水线设计中。我们提出了一个高层次的综合实现SMI针对一个专用的FPGA互连,暴露运行时可配置的路由与支持任意网络拓扑结构,并实现了一组分布式内存基准。使用SMI,程序员可以在可重构硬件上实现分布式、可扩展的HPC程序,而不会偏离硬件设计的最佳实践。
2019-09-07 cs.DC
Towards A Systems Approach To Distributed Programming
不可否认的是,今天大多数开发人员都在构建分布式应用程序。然而,这些应用程序中的大多数是通过向应用程序开发人员公开的未指定API将现有系统组合在一起来开发的。系统不会消失:它们解决一个特定的问题,今天的大多数应用程序需要依赖于这些系统中的几个协同工作。鉴于此,我们提出了一个研究方向,即具有良好定义的语义的高级语言将底层系统基础设施作为中间地带。
2018-02-08 cs.DC
A Distributed Shared Memory Model and C++ Templated Meta-Programming Interface for the Epiphany RISC Array Processor
Adapteva Epiphany众核架构包括一个可扩展的2D网状片上网络(NoC),由低功耗RISC内核组成,具有最少的非核功能。尽管这样的处理器提供了高计算能量效率和并行可扩展性,但开发解决独特架构特征的有效编程模型已经提出了许多挑战。我们在这里提出了一个分布式共享内存(DSM)模型支持软件透明使用C++模板元编程技术。该方法提供了一个非常简单的并行编程模型非常适合的架构。初步结果表明,该方法,并提供洞察的编程模型的效率和能力的NoC支持DSM没有明确的控制数据移动和本地化。
2017-04-26 cs.DC
MXDAG: A Hybrid Abstraction for Cluster Applications
分布式应用程序,如数据库查询和分布式训练,包括计算和网络任务。基于DAG的抽象主要针对计算任务,没有明确的网络级调度。相比之下,可重用抽象在计算任务之间共同调度网络流,但缺乏应用程序DAG的端到端视图。由于这两种类型的任务之间的依赖性和交互性,仅考虑其中之一是次优的。我们认为,计算和网络任务的协同调度可以帮助应用程序实现全局最优的端到端性能。然而,没有一个现有的抽象可以提供细粒度的信息,协同调度。我们提出了MXDAG,一个抽象来处理计算和网络任务显式。它可以捕获计算和网络任务的依赖关系和交互,从而提高应用程序性能。
2021-07-15 cs.DC cs.NI
Building a Verifiable Logical Clock for P2P Networks
针对现有逻辑时钟无法适配含拜占庭节点的开放P2P网络的问题,研究提出新型逻辑时钟系统Chrono,通过自定义验证器抽象实现容错,在两类去中心化应用中以极低开销实现优于现有BFT全序协议的性能。
2024-08-13 cs.DC
Breaking the Computation and Communication Abstraction Barrier in Distributed Machine Learning Workloads
University of Massachusetts Amherst(马萨诸塞大学阿默斯特分校);Ohio State University(俄亥俄州立大学);Chinese Academy of Sciences(中国科学院);University of California, Riverside(加州大学河滨分校);Microsoft Research(微软研究院)
最近的趋势是越来越多的大型机器学习模型需要分布训练和推理任务。考虑到训练这些模型的巨大成本,必须在计算和通信方面进行优化,以获得最佳性能。然而,当前深度学习框架中计算和通信内核之间的逻辑分离错过了跨越这种障碍的优化机会。通过整体考虑打破这种抽象可以提供许多优化,从而提高分布式工作负载的性能。手动应用这些优化需要为每个场景修改底层计算和通信库,这既耗时又容易出错。因此,我们提出了CoCoNeT,用DSL来表达一个既有计算又有通信的程序。CoCoNeT包含几个机器学习感知的转换来优化程序和编译器以生成高性能内核。将计算和通信作为第一类结构提供,允许用户在高级抽象上工作并应用强大的优化,例如通信和计算的融合或重叠。CoCoNeT使我们能够在大语言模型中优化数据、模型和流水线并行工作负载,只需几行代码。实验表明,CoCoNeT显著优于最先进的分布式机器学习实现。
2022-03-26 cs.DC cs.LG cs.PL
[AAFLOW+] Stateful Operator Abstraction with Zero-Copy Distributed KV Cache Orchestration for Multi-Agent Workflows
University of Virginia, Biocomplexity Institute and Initiative(弗吉尼亚大学生物复杂性研究所与倡议);Rutgers University(罗格斯大学);Princeton Plasma Physics Laboratory(普林斯顿等离子体物理实验室)
研究多智能体语言模型系统文本中心问题,提出AAFLOW+扩展,构建通信感知图并提供多种算子,实现零拷贝执行,通过分析成本模型验证,大幅降低TTFT、计算成本、键值内存并提高吞吐量,提升多智能体系统效率
2026-07-14 cs.DC
Methods and Experiences for Developing Abstractions for Data-intensive, Scientific Applications
为需要集成各种类型的计算、仪器和数据的科学应用开发软件提出了与商业软件不同的挑战。这些应用程序需要规模,并需要将各种编程和计算模型与不断发展的异构基础设施集成在一起。因此,分布式基础设施的普遍和有效的抽象是至关重要的,然而,科学应用和基础设施的抽象开发过程并没有得到很好的理解。虽然基于理论的系统开发方法适用于定义良好的封闭环境,但它们在为科学系统和应用程序设计抽象方面有严重的局限性。设计科学研究(DSR)方法为设计能够在各个层面处理现实世界复杂性的实用系统提供了基础。与以理论为中心的方法相比,DSR通过构建和严格评估所有工件来强调实践相关性和知识创造。我们展示了DSR如何提供一个定义良好的框架,为分布式系统开发抽象和中间件系统。具体来说,我们解决的关键问题,分布式资源管理异构基础设施的动态范围内的规模,目前限制了许多科学应用的挑战。我们使用的试点抽象,广泛使用的资源管理抽象的高性能,高吞吐量,大数据和流应用程序,作为一个案例研究评估DSR活动。为此,我们分析了研究过程中产生的文物的设计和评估的试点抽象。我们发现DSR为迭代设计和评估系统提供了一个简洁的框架。最后,我们总结经验,总结不同的教训。
2020-03-25 cs.DC cs.SE
D$^2$ABS: A Framework for Dynamic Dependence Abstraction of Distributed Programs
随着现代软件系统越来越多地在分布式环境中运行,提供诸如依赖分析之类的基本技术来检查、诊断和演化这些系统是至关重要的。然而,传统的依赖分析是不适用的或非常有限的效用,由于这些程序的解耦组件,运行在并发进程在物理上分离的机器上的分布式程序。基于分布式软件依赖分析的需要和基于依赖的应用程序的不同成本效益的需求,本文提出了D $^2$ ABS,一个分布式程序的动态依赖抽象框架。通过对分布式方法执行事件进行部分排序并从排序的事件中推断因果关系,D $^2$ ABS抽象了过程边界内和过程边界之间的方法级依赖关系。此外,通过利用跨进程的消息传递语义,并将静态依赖关系和语句覆盖范围内的各个组件,我们提出了三个额外的实例D $^2$ ABS的贸易效率更好的精度。我们提出了设计的D $^2$ ABS框架和评估的四个实例的D $^2$ ABS分布式系统的各种架构和规模使用我们的Java实现。我们的实证结果表明,D $^2$ ABS是显着更有效的比现有的选项,同时提供不同程度的成本效益权衡。由于我们的框架本质上是计算整个系统的运行时依赖关系,因此它自然会支持一系列其他基于依赖关系的应用程序。
2021-11-08 cs.DC cs.PL cs.SE
Counter Attack on Byzantine Generals: Parameterized Model Checking of Fault-tolerant Distributed Algorithms
我们介绍了一种用于容错分布式算法(FTDA)的自动参数化验证方法。FTDA由进程数和假定的拜占庭故障进程的最大数目参数化。在我们的技术的中心是一个参数区间抽象(PIA)的区间边界是参数的算术表达式。使用PIA的数据抽象和一种新形式的计数器抽象,我们减少了参数化的问题,有限状态模型检验。我们证明了我们的方法的实际可行性,通过验证Srikanth和Toueg著名的分布式算法的几个变种。我们的半决策程序的补充和动机的不可判定性证明FTDA验证,即使在没有进程间通信。据我们所知,这是第一篇实现拜占庭FTDA参数化自动验证的论文。
2013-02-03 cs.DC cs.LO
Object as a Service (OaaS): Enabling Object Abstraction in Serverless Clouds
针对FaaS在数据管理和工作流方面的不足,提出对象即服务(OaaS)抽象,封装数据与函数,支持数据流编程,原型评估显示低开销、高可扩展性。
2023-09-05 cs.DC cs.PL cs.SE
Closing the Performance Gap with Modern C++
在通往Exascale的道路上,程序员面临着越来越大的挑战,即必须从同一代码库支持多种硬件架构。与此同时,随着硬件架构变得越来越多样化,代码的可移植性和性能越来越难以实现。当今的异构系统通常包括两个或更多个完全不同且不兼容的硬件执行模型,诸如GPGPU、SIMD向量单元和通用核,其常规上必须使用表示非重叠编程模型的单独工具链来编程。最近工业界和更广泛的社区对C++语言的兴趣复苏,在并发和并行领域激发了大量的标准化建议和技术规范。这包括最近越来越多的讨论,围绕需要一个统一的,更高层次的抽象和编程模型的并行性在C++标准的目标异构和分布式计算。这种抽象应该与现有的、已经标准化的语言和库功能完美融合,但也应该足够通用,以支持未来的硬件开发。在本文中,我们提出了这样一个更高层次的编程抽象的并行性在C++,其目的是使代码和性能的可移植性在广泛的体系结构和各种类型的并行性的结果。我们提出并比较从运行著名的STREAM基准移植到我们的更高级别的C++抽象与相应的结果从运行它本机获得的性能数据。我们表明,我们的抽象,使性能至少一样好的可比基线基准,同时提供一个统一的编程API的所有比较的目标体系结构。
2022-05-30 cs.DC cs.PL
Programming Distributed Collective Processes in the eXchange Calculus
Università di Torino(都灵大学);Alma Mater Studiorum—Università di Bologna(博洛尼亚大学)
针对物联网设备集体自适应编程难题,提出基于交换演算的分布式集体过程抽象,统一整体形成与任务,经案例验证适用于分布式计算。
2025-10-02 cs.AI cs.DC cs.MA
Programming Requests/Responses with GreatFree in the Cloud Environment
GreatFree编程请求是一种在云计算环境下实现分布式轮询的高效编程技术。GreatFree是一个分布式编程环境,通过它可以通过编程而不是配置或脚本来建立各种分布式系统。GreatFree强调编程的重要性,因为它为开发人员提供了利用其分布式知识和编程技能的机会。此外,编程是构造创造性的、自适应的和灵活的系统以适应各种分布式计算环境的唯一方式。在GreatFree代码级分布式基础架构模式、分布式操作模式和API的支持下,以可编程、快速和高度模式化的方式完成了困难的过程,即,编程行为被简化为复制-粘贴-替换的可重复操作。由于分布式轮询是构建分布式系统的基本技术之一,GreatFree为开发人员提供了相关的API和模式,以在新的编程环境中编写请求/响应。
2018-02-09 cs.DC cs.PL cs.SE
Distributed Programming via Safe Closure Passing
包含函数式编程的编程系统,例如,高阶函数对于大规模分布式编程来说正变得越来越流行。Apache Spark等新框架利用功能技术为内存数据分析提供高级声明式API,通常优于Hadoop MapReduce等传统的“大数据”框架。然而,广泛使用的编程模型仍然相当ad-hoc;实现权衡,静态类型和语义等方面尚未得到很好的理解。我们提出了一个新的异步编程模型,其核心有几个原则,促进分布式数据的功能处理。我们的模型的重点是简单性,性能和表现力。通信的主要方式是将函数(闭包)传递给分布式的、不可变的数据。为了确保闭包的安全和有效分布,我们的模型利用了语法和基于类型的限制。我们报告在Scala中的原型实现。最后,我们提出了初步的实验结果评估的静态,基于类型的优化序列化的性能影响。
2016-02-11 cs.DC cs.PL
A Semantics Comparison Workbench for a Concurrent, Asynchronous, Distributed Programming Language
已经提出了许多高级语言和库,它们为并发、异步和分布式编程提供了新颖且易于使用的抽象。然而,实现它们的执行模型经常会随着时间的推移而改变--无论是为了提高性能,还是为了将它们扩展到新的语言功能--这可能会影响现有程序的行为和安全属性。SCOOP是一种并发面向对象编程的消息传递方法,它已经提出并实现了多个更改,并对其核心抽象的惯用用法产生了明显的影响。我们提出了一个语义比较工作台SCOOP与全自动和半自动的工具,用于分析和比较不同的执行模型或语义的程序的状态空间。我们证明了它的使用,在检查整个语义的属性的一致性,通过将其应用到一组代表性的程序,并突出了死锁相关的差异之间的主要执行模型的SCOOP。此外,我们证明了工作台的可扩展性,通过概括的形式化的执行模型,以支持最近提出的扩展分布式编程。我们的工作台是基于一个模块化的和参数化的图形转换语义中实现的GROOVE工具。我们将讨论如何利用图转换来原子地对复杂的语言抽象建模,如何使用模型的视觉和代数性质来确定合理性,并强调该方法如何应用于类似的语言。
2017-10-11 cs.DC cs.LO cs.PL
Locally-Oriented Programming: A Simple Programming Model for Stencil-Based Computations on Multi-Level Distributed Memory Architectures
用于高性能计算的新兴混合加速器架构通常适合于使用数据并行编程模型。不幸的是,这些体系结构的程序员面临着陡峭的学习曲线,其经常需要学习新的语言(例如,OpenCL)。此外,这些机器的集群的存储器组织的分布式(并且经常是多级)性质提供了额外的复杂性。本文介绍了初步的工作,研究如何编程与本地定位可以提供更简单的访问加速器架构。面向本地的编程模型对于需要应用模板或卷积内核的算法的解决方案特别有用。在这种编程模型中,程序员通过仅修改单个数组元素(称为局部元素)来编写算法,但对局部元素周围的小型子数组具有只读访问权限。我们演示了如何一个面向本地的编程模型可以通过使用源到源程序转换作为语言扩展。
2015-02-12 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
The distributed Language Hello White Paper
Hello是一种通用的、面向对象的、与协议无关的分布式程序设计语言。本文阐述了指导Hello设计的思想。它使用两个简短的表达程序展示了Hello的精神,并提供了语言特性的总结。此外,它还探讨了早期计算机的二进制编程和现代网络的分布式编程之间的历史相似之处。
2014-09-14 cs.DC cs.PL
Dfuntest: A Testing Framework for Distributed Applications
分布式系统中的新思想(算法或协议)通常通过模拟来测试,因为在现实平台上部署原型的实验很麻烦。然而,原型不仅测量性能,而且还验证关于底层系统的假设。我们开发了dfuntest -一个分布式应用程序的测试框架,定义了抽象和测试结构,并在分布式平台上自动化实验。Dfuntest的目标是成为分布式应用程序的jUnit模拟;一个框架,使程序员能够编写健壮和灵活的实验场景。Dfuntest需要最少的绑定来指定如何部署应用程序以及如何与应用程序交互。Dfuntest的抽象允许在单机、集群、云或任何其他分布式基础设施上执行场景,例如PlanetLab。一个场景是一个过程,因此,我们的框架可以用于功能测试和性能测量。我们展示了如何使用dfuntest在60个PlanetLab节点上部署我们的DHT原型,并验证原型是否保持正确的拓扑结构。
2018-03-12 cs.DC 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
Memory Reduction using a Ring Abstraction over GPU RDMA for Distributed Quantum Monte Carlo Solver
在领导力计算设施上运行的科学应用程序通常面临的挑战是,由于内存限制(内存限制应用程序),无法将领先的科学案例安装到加速器设备上。在这项工作中,作者研究了这样一个美国能源部的关键任务凝聚态物理应用程序,动态集群近似(DCA++),本文讨论了如何通过提出一种有效的“所有对所有”的通信方法-环形通信算法,成功地减少了设备内存限制的挑战。此实现利用GPU上的加速和远程直接内存访问(RDMA)来实现GPU之间的快速数据交换。此外,通过子环通信器和多线程支持对环算法进行了优化,以分别进一步减少通信开销和暴露更多并发性。利用APEX工具分析了环形算法的计算和通信性能,并进一步讨论了环形算法实现的性能权衡。对环形算法的内存分析表明,作者的每个GPU的内存密集型数据结构的分配大小现在减少到原始大小的1/p,其中p是环形通信器中的GPU数量。通信分析表明,分布式量子蒙特卡罗执行时间随着子环大小的增加而线性增长,并且消息通过网络接口连接器的成本可能是一个限制因素。
2021-05-13 cond-mat.mtrl-sci cond-mat.str-el cond-mat.supr-con
Distributed dynamic load balancing for task parallel programming
在本文中,我们推导和研究的方法,动态负载平衡的分布式任务并行应用软件。负载均衡策略是基于任务迁移的。忙进程将其就绪任务队列的一部分导出到空闲进程。空闲-忙碌的进程对通过随机搜索过程找到彼此,该过程在几个步骤内以高概率成功。我们评估的负载均衡的方法块Cholesky分解实现,并观察到在所选的测试用例的顺序上的5\%的执行时间减少。
2018-01-14 cs.DC cs.MS cs.PF