Shared memory parallelism in Modern C++ and HPX
本文概述了现代C++标准中用于单节点共享内存并行编程的语言与库特性,并介绍了HPX库如何提前实现这些标准及扩展,使开发者无需自定义扩展即可编写高性能并行代码。
2023-08-09 cs.DC
Exact Optimality of Communication-Privacy-Utility Tradeoffs in Distributed Mean Estimation
Stanford University(斯坦福大学);Hongik University(弘益大学)
本文研究通信与本地差分隐私约束下的均值估计问题,证明精确最优需使用旋转对称共享随机码本,并提出基于随机旋转单纯形和k-最近编码的机制,实现非渐近精确最优。
2023-10-29 cs.CR cs.DC cs.IT
Adjusted Objects: An Efficient and Principled Approach to Scalable Programming (Extended Version)
本文提出adjusted objects原则,通过为特定用途定制共享对象以提升性能,并引入DEGO库在Java程序中注入此类对象,使标准JDK共享对象性能提升多达两个数量级,基准测试性能提升达1.7倍。
2025-04-29 cs.DC
DuctTeip: An efficient programming model for distributed task based parallel computing
用于科学计算的当前高性能计算机系统通常在分布式存储器环境中组合共享存储器计算节点。从这些复杂的系统中提取高性能需要量身定制的方法。基于任务的并行编程在简化编程和利用共享存储器系统的硬件并行性方面都取得了成功。本文重点讨论如何将任务并行编程扩展到分布式内存系统。我们使用任务和数据的分层分解,以适应不同级别的硬件。我们测试所提出的编程模型在两个不同的应用程序,Cholesky分解,和浅水方程求解器。我们还比较了我们的实现与其他框架的分布式任务并行编程的性能,并表明它是有竞争力的。
2018-01-10 cs.CE 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
Performance Evaluation of Unified Parallel C for Molecular Dynamics
分区全局地址空间(PGAS)将共享内存编程的概念以及消息传递提供的数据分布和局部性控制集成到单个并行编程模型中。将分布式数据与共享内存结合起来的目的是培养一种局部感知的共享内存范例。PGAS由单个共享地址空间组成,该空间在线程之间进行分区。每个线程在本地内存中都有一部分共享地址空间,因此它可以通过主要对本地数据进行计算来利用数据局部性。统一并行C(UPC)是ISO C的并行扩展和PGAS模型的实现。在本文中,我们评估UPC的性能的基础上,从分子动力学的真实世界的情况。
2016-03-12 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
Hybrid MPI/StarSs - a case study
混合并行编程模型结合了分布式和共享内存的范例,在高性能计算中得到了很好的建立。HPC中混合编程的经典原型是MPI/OpenMP,但许多其他组合正在研究中。最近,数据依赖性驱动,任务并行模型共享内存并行命名StarSs已被建议与MPI结合使用。在本文中,我们应用混合MPI/StarSs的格子玻尔兹曼代码。特别是,我们提出的混合编程模型,我们期望的好处,在移植的挑战,最后比较MPI/StarSs混合,MPI/OpenMP混合和原来的MPI只有版本的相同的代码的性能。
2012-04-18 cs.DC
Paving the way for Distributed Non-Blocking Algorithms and Data Structures in the Partitioned Global Address Space
分区的全局地址空间在共享内存和分布式内存之间架起了一座桥梁,通过这座桥梁,共享内存概念(如非阻塞编程)能够适应分布式系统(如超级计算机)。为了实现非阻塞算法,我们提出了通过远程直接内存地址和指针压缩对远程内存中的对象执行可扩展原子操作的方法。为了解决分布式系统中并发安全的内存回收问题,我们将基于历元的内存回收方法应用于分布式内存,并以支持全局视图编程的方式实现。这个结构是为Chapel程序设计语言设计和实现的,但是可以进行调整和推广,以适用于其他语言和库。
2020-03-15 cs.DC
GPU Fast Convolution via the Overlap-and-Save Method in Shared Memory
我们提出了一种实现的和保存的方法,非常长的信号与短的响应函数,这是专门为GPU的卷积的方法。我们已经实现了几个FFT算法(使用CUDA程序设计语言),利用GPU共享内存,允许GPU加速卷积。我们比较我们的实现与实现的的快速和保存算法,利用NVIDIA FFT库(cuFFT)。我们证明,通过使用基于共享内存的FFT,我们可以实现显着的速度为某些问题的大小,并降低GPU上的存储和保存方法的内存要求。
2020-04-10 cs.DC cs.MS cs.PF
Global-Local View: Scalable Consistency for Concurrent Data Types
在高争用工作负载下,对共享对象的并发可线性化访问可能代价高昂。许多应用程序应用ad-hoc技术来消除同步原子更新的需要,这可能导致非线性实现。我们提出了一个新的编程模型,利用这种模式的并发访问对象在共享内存系统。在这个模型中,每个线程维护共享对象的不同视图-线程本地视图和全局视图。由于线程本地视图不是共享的,因此可以在不产生同步开销的情况下对其进行更新。只有在线程本地视图与全局视图合并后,这些本地更新才对其他线程可见。这以牺牲线性化能力为代价实现了更好的性能。我们表明,它是可能的,以保持线程的本地视图,并有效地执行合并的几个数据类型,并评估其性能和可扩展性相比,线性化的实现。此外,我们讨论了数据类型和相关的编程模型的一致性语义。
2017-05-10 cs.DC
QuickSched: Task-based parallelism with dependencies and conflicts
本文介绍了QuickSched,一个紧凑,高效的开源C语言库的基于任务的共享内存并行编程。QuickSched用任务冲突的概念扩展了基于任务的编程的标准依赖方案,即~可以以任何顺序执行但不能同时执行的任务集。这些冲突使用专门可锁定的分层资源进行建模。调度器本身优先级的任务沿执行的关键路线,并表现出良好的64核并行共享内存机器上的两个例子的问题:一个平铺QR分解和基于任务的巴恩斯-赫特树代码。
2016-01-20 cs.DC
ParaWeb: Parallel Programming Patterns for Web Development
Blekinge Institute of Technology(布莱金厄理工学院)
本文提出TypeScript库ParaWeb,为Web开发实现十种并行编程模式,含三种变体,实验显示其CPU变体最高加速11.6倍、GPU变体最高达414倍加速,性能优异。
2026-08-21 cs.DC
Multi-threaded Graph Coloring Algorithm for Shared Memory Architecture
在本文中,我们提出了多线程算法的图着色适用于共享内存编程模型。我们对文献中广泛使用的现有算法进行了修改,并证明了修改后算法的正确性。我们还提出了一种新的方法来解决着色使用锁的问题。使用来自真实世界图的数据集,我们评估了算法在英特尔平台上的性能。我们比较的顺序方法V/S我们提出的方法的性能,并分析了现有的算法从文献中获得的加速比。结果表明,所获得的加速比是相应的。我们还提供了一个方向,为今后的工作,进一步提高性能方面的不同指标。
2015-10-04 cs.DC
Design and Evaluation of a Collective IO Model for Loosely Coupled Petascale Programming
松耦合编程是一种强大的范例,用于在千万亿次系统上从科学程序快速创建更高级别的应用程序,通常使用脚本语言。这种范例是多任务计算(MTC)的一种形式,它专注于程序之间的数据传递,作为普通文件而不是消息。虽然它具有解耦生产者和消费者并允许现有应用程序并行执行而无需重新编码的显著优点,但其使用共享文件系统的典型实现方式对整个系统以及将分析和消费下游数据的用户造成了高性能负担。以前的工作在松散耦合的程序中实现了很大的加速,但是在所有共享文件系统访问中都进行了仔细的手动调优。在这项工作中,我们评估了一个原型集体IO模型为基础的文件MTC。该模型使输入数据文件能够高效且容易地分发到计算节点,并从计算节点收集输出结果。它消除了这种手动调优的需要,并使使用松散耦合模型的大规模集群编程变得更容易。我们的方法,灵感来自内存中的方法,集体操作的并行编程,建立在快速本地文件系统提供高速本地文件缓存的并行脚本,使用广播的方法来处理常见的输入数据的分布,并使用有效的分散/收集和缓存技术的输入和输出。我们描述的原型模型的设计,其实施的蓝色基因/P超级计算机,并提出了初步测量其性能的合成基准和大规模的分子动力学应用。
2008-12-31 cs.DC
Scaling Shared-Memory Data Structures as Distributed Global-View Data Structures in the Partitioned Global Address Space model
分区全局地址空间(PGAS)是一种内存模型,其中全局地址空间在集群中的计算节点之间显式分区,致力于弥合共享内存和分布式内存编程之间的差距。为了进一步弥合这一差距,已经采用了全局视图分布式数据结构,例如“全局数组”或“分布式数组”。这项工作演示了如何共享内存数据结构可以修改,以规模在分布式内存。本文提出了一种分布式互锁哈希表(DIHT),它是从互锁哈希表(IHT)中引入的全局视图分布式映射数据结构。在64个节点上,每个节点44个核心,DIHT提供了高达110倍的Chapel标准库HashedDist的性能。
2021-11-30 cs.DC cs.DS
Collectives in hybrid MPI+MPI code: design, practice and performance
结合用于节点间并行性的消息传递编程模型和用于节点级并行性的共享存储器编程模型的混合方案的使用被广泛传播。混合消息传递接口(MPI)加上开放多处理(OpenMP)编程的现有广泛实践说明了它的流行。然而,需要强大的编程工作来从MPI + OpenMP代码中获得性能优势。一种新兴的混合方法,结合MPI和MPI共享内存模型(MPI + MPI)是很有前途的。然而,编写一个高效的混合MPI + MPI程序--特别是当涉及到集体通信操作时--并不是理所当然的。本文提出了一种新的设计方法来实现混合MPI + MPI基于上下文的集体通信操作。我们的方法避免了纯MPI中语义所需的节点上内存复制(节点上通信开销)。我们还提供了对用户隐藏所有设计细节的包装器原语,以及如何使用这些原语构建混合MPI + MPI代码的实践。微基准测试表明,我们的集体是可比的或优于那些在纯MPI的背景。我们进一步验证了混合MPI + MPI模型(使用我们的包装原语)在三个计算内核的有效性,通过比较纯MPI和混合MPI + OpenMP模型。
2020-07-22 cs.DC
Shared Virtual Memory: Its Design and Performance Implications for Diverse Applications
本文细粒度剖析AMD GPU的Shared Virtual Memory设计及其与应用访问模式的交互,揭示超额订阅下激进预取与驱逐策略导致的颠簸瓶颈,并提出缓解算法与设计改进。
2024-05-10 cs.DC
FastFlow: Efficient Parallel Streaming Applications on Multi-core
由于商品多核架构的迅速普及,共享内存多处理器又重新流行起来。和以往一样,共享内存程序很容易编写,但很难优化;为多核程序员提供优化工具和编程框架是当今的挑战。在这些体系结构上支持有效的流应用程序的努力很少。在本文中,我们介绍FastFlow,一个低层次的编程框架的基础上无锁队列明确设计支持流应用程序的高级语言。我们将FastFlow与最先进的编程框架(如Cilk、OpenMP和Intel TBB)进行比较。我们通过实验证明,在一组微基准测试和实际应用中,FastFlow总是比所有解决方案都更有效; FastFlow相对于其他解决方案的加速优势对于细粒度任务来说可能是大胆的,例如,使用Smith-Waterman算法将蛋白质P01111与UniProt DB进行比对时,在OpenMP上为+35%,在Cilk上为+226%,在TBB上为+96%。
2009-09-07 cs.DC cs.PL
Dynamic Checking of Safe Concurrent Memory Access using Shared Ownership
在共享存储器并发编程中,可以使用诸如监视器或通道之类的同步机制来保护共享资源。然而,这些机制和它们所保护的资源之间的联系只是隐含地给出的;这使得程序员很难正确地应用这些机制,编译器也很难检查资源是否得到了适当的保护。本文提出了一种自动检查共享内存是否被正确访问的机制,使用一种称为共享所有权的方法。与传统的所有权相比,共享所有权允许多个所有者拥有资源,从而提供了更大的灵活性。在此方法的基础上,我们定义了一个抽象的资源访问模型,提供操作来管理数据依赖关系,以及共享和访问权限的转移。该模型是严格定义的使用正式的语义,并显示是免费的数据竞争。当模拟模型和程序执行时,此属性可用于检测不安全的内存访问。该方法的表现力和效率证明了各种程序使用常见的同步机制。
2014-07-04 cs.DC cs.SE
Cache-aware Parallel Programming for Manycore Processors
随着技术的快速发展,多核和众核处理器已经成为受益于晶体管数量增加的有前途的架构。向这些并行架构的过渡使今天成为研究并行计算挑战的激动人心的时刻。TILEPro64是一个众核加速器,由64个通过多个8x8网格网络互连的瓦片组成。默认情况下,它包含每瓦片缓存并支持缓存一致性共享内存。在本文中,我们提出了一种编程技术,以利用分布式缓存设施在众核处理器。然而,与这一领域的其他工作不同,我们的方法不使用特定于体系结构的库。相反,我们为程序员提供了一种新的技术,如何规划未来的非均匀缓存架构(NUCA)众核系统,铭记他们的缓存组织。我们表明,我们的本地化编程方法可以导致并行化效率(加速)的显着提高。
2014-03-31 cs.DC cs.PF
OMPILOT: Harnessing Transformer Models for Auto Parallelization to Shared Memory Computing Paradigms
Department of Computer Science, Iowa State University, Ames, IA, USA(伊阿华州立大学计算机科学系);Mako AI, USA(Mako AI公司);Argonne National Laboratory, USA(阿贡国家实验室);Code Metal, USA(Code Metal公司);Intel Labs, USA(英特尔实验室);Cisco Outshift, USA(Cisco Outshift公司)
针对代码翻译中共享内存并行化的需求,本文提出领域特定编码器-解码器Transformer模型OMPILOT,通过自定义预训练目标与函数级语义捕捉,实现C++到OpenMP的转换,并设计OMPBLEU指标评估其性能。
2025-11-11 cs.AI cs.DC cs.LG