An Introduction to hpxMP: A Modern OpenMP Implementation Leveraging HPX, An Asynchronous Many-Task System
异步多任务(AMT)运行时系统由于细粒度任务运行时系统提供的性能改进而在HPC社区中获得越来越多的接受。与此同时,C++标准化工作的重点是创建更高级别的接口,以取代现代C++代码中的OpenMP或OpenACC。这些更高级别的函数已经在符合标准的运行时系统(如HPX)中采用,使用户能够在自己的代码中简单地利用fork-join并行性。尽管在运行时系统和标准化工作方面有创新,但用户在移植遗留应用程序时仍面临巨大挑战。用户不仅必须移植自己的代码,而且通常依赖于高度优化的库,如BLAS和LAPACK,它们使用OpenMP进行并行化。当前创建平滑迁移路径的努力一直在努力应对这些挑战,特别是AMT库的线程系统经常与OpenMP的线程系统竞争。为了克服这些问题,我们的团队开发了hpxMP,这是一种OpenMP标准的实现,它利用底层AMT系统来调度和管理任务。这种方法利用了HPX公开的C++接口,并允许用户在AMT系统上执行他们的应用程序,而无需更改他们的代码。在这项工作中,我们比较hpxMP与Clang的OpenMP库与Blaze C++库的四个线性代数基准。虽然hpxMP往往无法达到相同的性能,我们证明了可行性,为应用程序提供一个顺利的迁移,但必须扩展到受益于更一般的基于任务的编程模型。
2019-07-05 cs.DC
HPX Smart Executors
Center for Computation;Technology Louisiana State University The STE || AR Group, http://stellar-group.org Baton Rouge, LA, USA;Technology Louisiana State University The STE || AR Group, http://stellar-group.org
许多并行应用程序的性能依赖于循环级并行性。然而,手动并行化所有循环可能会导致并行性能下降,因为其中一些循环无法按需要扩展到大量线程。此外,手动调优循环参数的开销可能会阻止应用程序达到其最大并行性能。我们说明了如何机器学习技术可以应用于解决这些挑战。在本研究中,我们开发了一个能够自动捕获循环的静态和动态信息的框架。此外,我们提倡一种新的方法,通过引入HPX智能执行器来确定HPX循环的执行策略,块大小和预取距离,以通过将编译期间捕获的静态信息和基于运行时的动态信息馈送到我们的学习模型来实现更高的性能。我们评估的执行结果表明,与手动设置HPX循环的执行策略/参数或使用HPX自动并行化技术相比,使用这些智能执行器可以将HPX执行过程的矩阵乘法,流和$2D$ Stenchmark基准加速约12%-35%。
2017-11-05 cs.AI cs.DC cs.LG
Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HPX, Go, Julia, Python, Rust, Swift, and Java
本文在 Intel、AMD 和 ARM64FX 架构上基准测试十种语言实现的共享内存并行一维热扩散求解器,发现 C++、Rust、Chapel、Charm++ 和 HPX 性能领先。
2023-07-10 cs.DC
Code modernization strategies for short-range non-bonded molecular dynamics simulations
针对现代HPC硬件特性,对ESPResSo++分子动力学模拟包进行代码现代化改造,通过数据布局优化、向量化及基于HPX的细粒度并行实现了显著性能提升。
2023-06-15 cs.DC physics.comp-ph
STRETCH: Virtual Shared-Nothing Parallelism for Scalable and Elastic Stream Processing
流处理应用程序通过数据分析任务的有向无环图从原始数据中提取价值。无共享(SN)并行是扩展流处理应用的事实标准。给定一个应用程序,SN并行实例化每个分析任务的几个副本,使每个实例负责整个分析的专用部分,并依赖于专用队列在连接的实例之间交换数据。一方面,SN并行性可以向上和向外扩展应用程序的执行,因为线程可以在进程/节点内和跨进程/节点运行任务实例。另一方面,它缺乏共享可能会导致不必要的开销,并阻碍扩展时,线程操作的数据,可以共同访问共享内存。这种权衡促使我们研究一种流处理应用程序利用共享内存并增强扩展(在横向扩展之前)的方法,同时坚持流处理应用程序广泛采用的基于SN的API。我们介绍了STRETCH,一个框架,最大限度地扩大规模,并提供即时的弹性重新配置(无状态转移)的流处理应用程序。我们提出了虚拟无共享(VSN)的并行性和弹性的概念,并提供了正式的定义和正确性证明的语义分析任务支持的STRETCH,显示他们扩展了常见的流处理引擎。我们还提供了一个完全实现的原型,并表明STRETCH的性能超过了最先进的框架,如Apache Flink,并提供了前所未有的超快重新配置,即使在配置数十个新任务实例时也不到40毫秒。
2022-04-29 cs.DC
QuickSched: Task-based parallelism with dependencies and conflicts
本文介绍了QuickSched,一个紧凑,高效的开源C语言库的基于任务的共享内存并行编程。QuickSched用任务冲突的概念扩展了基于任务的编程的标准依赖方案,即~可以以任何顺序执行但不能同时执行的任务集。这些冲突使用专门可锁定的分层资源进行建模。调度器本身优先级的任务沿执行的关键路线,并表现出良好的64核并行共享内存机器上的两个例子的问题:一个平铺QR分解和基于任务的巴恩斯-赫特树代码。
2016-01-20 cs.DC
Parallel image thinning through topological operators on shared memory parallel machines
在本文中,我们提出了一个强大的拓扑细化算子的并发实现。该算子能够直接作用于灰度图像而不修改其拓扑结构。我们介绍了一种适应并行化方法,它结合了分裂,分布和合并(SDM)的战略和混合并行技术(数据和线程并行)。引入的策略允许有效的并行化的一大类拓扑算子,主要包括,λ-leveling,crossonization和波峰恢复算法。为了实现良好的加速,我们关心线程的协调。细化过程中的分布式工作由可变数量的线程完成。在2D灰度图像(512*512)上的测试,使用具有8个CPU内核(2个Xeon E5405,以2 GHz的频率运行)的共享内存并行机(SMPM),显示出6.2的增强,使用8个线程最大实现125张图像/秒的节奏。
2016-03-30 cs.DC
Handling Nested Parallelism and Extreme Load Imbalance in an Orbital Analysis Code
嵌套并行存在于搜索多维空间的科学代码中。然而,嵌套并行的实现通常具有开销和负载平衡问题。我们提出的轨道分析代码表现出稀疏的搜索空间,显着的负载不平衡,并停止时,达到第一个解决方案。算法的所有这些方面都加剧了有效使用嵌套并行的问题。在本文中,我们提出了一个检查员/执行者的策略分块到并行波前这样的计算。所提出的共享内存并行不再嵌套,并表现出显着更少的负载不平衡。我们评估这种方法的轨道分析代码,我们从原来的执行时间提高了一个数量级。作为并行编程模型研究生计算机科学课程的一部分,我们展示了如何在并行Perl,Python,Chapel,Pthreads和OpenMP中实现该方法。未来的工作包括研究如何自动化和推广的并行化方法。
2017-07-30 cs.DC
Pragma driven shared memory parallelism in Zig by supporting OpenMP loop directives
本文通过为 Zig 编译器添加 OpenMP 循环指令支持,弥补其在 HPC 领域缺少共享内存并行的不足,并利用 NAS 并行基准测试验证其扩展性与 Fortran/C 相当且性能最高提升 1.25 倍。
2024-09-30 cs.DC cs.PL
Exploiting Parallelism on Shared Memory in the QED Particle-in-Cell Code PICADOR with Greedy Load Balancing
采用粒子网格法对激光等离子体进行数值模拟,计算量非常大。因此,越来越需要开发有效利用现代超级计算机资源的方法。在本文中,我们解决的问题,一个基本上不均匀的和动态变化的宏观粒子分布在一个计算区域中模拟量子电动力学(QED)级联。我们提出并评估了共享内存系统的负载平衡方案,它允许将计算域的各个单元细分为工作部分,随后动态分配这些部分之间的OpenMP线程。一维,二维和三维QED模拟的计算实验表明,该方案优于先前开发的标准和自定义计划的PICADOR代码的2.1至10倍时,采用几个英特尔级联湖CPU。
2019-05-20 cs.DC cs.PF physics.comp-ph
PALS: Efficient Or-Parallelism on Beowulf Clusters
本文介绍了PALS系统的发展,Prolog的实现能够有效地利用或分布式存储器平台上的并行性-特别是Beowulf集群。PALS使用了一种新的技术,称为增量堆栈分裂。所提出的技术建立在堆栈分裂方法的基础上,该方法先前由作者描述并在共享内存系统上进行了实验验证,这反过来又是在各种并行逻辑和约束系统中使用的堆栈复制方法的演变-例如,缪斯,雅普,和佩妮。PALS系统是第一个基于栈分裂方法的Prolog分布式或并行实现。给出的结果证实了这种方法的优越性,作为一个简单而有效的技术,从共享内存到分布式内存系统的过渡。PALS扩展堆栈分裂相结合,它与增量复制,该文件提供了一个描述的PALS的实施,包括如何处理分布式调度的细节。我们还研究了有效支持顺序敏感谓词的方法(例如,副作用)在堆栈分裂方案的上下文中。从运行PALS共享内存和Beowulf系统的实验结果进行了介绍和分析。
2006-07-09 cs.DC cs.PL
Efficient System-Enforced Deterministic Parallelism
确定性执行为调试、容错和安全性提供了许多好处。然而,确定性地运行并行程序通常是困难和昂贵的-特别是如果我们希望系统强制的确定性,确保任意错误或恶意软件的精确可重复性。Determinator是一个新颖的操作系统,它在多线程和多进程计算中强制执行确定性。Determinator的内核只提供单线程的、“无共享”的地址空间,通过确定性同步进行交互。不受信任的用户级运行时使用分布式计算技术来模拟熟悉的抽象,如Unix进程、文件系统和共享内存多线程。该系统在多核PC上和集群中的节点上确定性地运行并行应用程序。粗粒度的并行基准测试可以执行并扩展到常规系统,有时甚至比常规系统更好,尽管确定性对于细粒度的并行应用程序来说代价很高。
2010-05-19 cs.DC cs.OS
A shared compilation stack for distributed-memory parallelism in stencil DSLs
通过将 MLIR 框架适配到 HPC,为 stencil DSL 引入分布式内存并行性的共享编译栈,解决了编译器孤立设计问题,并在 Devito、PSyclone 和 Open Earth Compiler 上验证了其高性能。
2025-03-07 cs.DC cs.MS
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
An Asynchronous Many-Task Algorithm for Unstructured $S_{N}$ Transport on Shared Memory Systems
针对非结构化网格离散纵标 $S_N$ 输运求解器在共享内存众核架构上的扩展性瓶颈,提出一种新的异步多任务(AMT)算法,显著提升了计算性能并分析了改善原因。
2025-10-13 cs.DC
Parallel and distributed Gröbner bases computation in JAS
本文研究了多核计算节点的分布式并行计算机上的并行格罗布纳基算法。总结了三种不同的格罗布纳基实现:共享内存并行、纯分布内存并行和分布内存与共享内存相结合的并行。最后一种算法称为分布式混合算法,在主节点和工作节点之间只使用一个控制通信信道,并将多项式保存在节点上的共享内存中。多项式在单独的分布式数据结构中被异步传输到算法的控制流。实现是通用的,适用于所有实现的(精确)字段。我们提出了新的性能测量和讨论的算法的性能。
2010-07-30 cs.DC
From Prompts to Performance: Evaluating LLMs for Task-based Parallel Code Generation
Institute for Parallel and Distributed Systems(并行与分布式系统研究所)
本文评估了LLM在基于任务的并行代码生成中的表现,通过三种输入提示和三个编程框架,分析了LLM在正确性和可扩展性方面的优缺点。
2026-02-24 cs.AI cs.DC cs.PL
MPI Collectives for Multi-core Clusters: Optimized Performance of the Hybrid MPI+MPI Parallel Codes
集群中多核/众核处理器的出现倡导混合并行编程,其将用于节点间并行的消息传递接口(MPI)与用于节点上并行的共享存储器模型相结合。与传统的MPI + OpenMP混合方法相比,一种新的、但很有前途的MPI + MPI-3共享内存扩展(MPI+MPI)混合方法正受到越来越多的关注。我们描述了一种算法的集体操作(与allgather和广播作为具体的例子)的混合MPI+MPI的上下文中,以尽量减少内存消耗和内存副本。使用这种方法,只有一个内存副本由节点上的进程维护和共享。这允许删除在纯MPI上下文中调用集合时MPI进程之间所需的复制数据的不必要的节点上副本。我们比较了混合MPI+MPI和传统MPI的集体方法,并讨论了保证数据完整性所需的同步。我们的方法的性能已在Cray XC 40系统(Cray MPI)和NEC集群(OpenMPI)上进行了验证,表明它实现了可比或更好的性能allgather操作。我们进一步验证了我们的方法与标准的计算内核,即分布式矩阵乘法,和贝叶斯概率矩阵分解代码。
2020-07-14 cs.DC
SiDP: Memory-Efficient Data Parallelism for Offline LLM Inference
scitix
提出SiDP,一种将权重视为带宽支持的共享资源的内存高效数据并行范式,通过Weight-as-a-Service和Compute-as-a-Service两种模式,在相同配置下将可用KV容量提升至1.8倍,端到端吞吐量提升至1.5倍。
2026-05-27 cs.DC
BatchLayout: A Batch-Parallel Force-Directed Graph Layout Algorithm in Shared Memory
力导向算法被广泛用于生成美观的图形或网络布局,出现在许多科学学科中。为了实现大规模图形的可视化,文献中讨论了几种并行算法。然而,现有的并行算法不能有效地利用存储层次结构,并且通常提供有限的并行性。本文使用BatchLayout解决了这些限制,BatchLayout是一种将顶点分组为minibatch并并行处理它们的算法。BatchLayout还使用缓存阻塞技术来有效地利用存储层次结构。更多的并行性和改进的内存访问,再加上强制近似技术,更好的初始化和优化的学习率,使BatchLayout比其他最先进的算法(如ForceLayout 2和OpenOrd)快得多。BatchLayout中布局的可视化质量与类似的可视化工具相当或更好。我们所有的源代码、数据集链接、结果和日志文件都可以在https://github.com/khaled-rahman/BatchLayout上找到。
2020-02-11 cs.DC cs.SI
Faabric: Fine-Grained Distribution of Scientific Workloads in the Cloud
由于其高度并行性和资源需求,许多科学应用程序都受益于云部署。如今,科学应用程序在专用的虚拟机池上执行,导致资源碎片化:用户为未充分利用的资源付费,而提供商无法在应用程序之间重新分配未使用的资源。虽然无服务器云计算可以解决这些问题,但其编程模型与科学应用程序中共享内存和消息传递的使用不兼容:无服务器函数在动态调度函数时不直接在同一VM上共享内存或支持消息传递语义。我们描述了Faabric,一个新的无服务器云运行时,透明地分发应用程序与共享内存和消息传递跨虚拟机。Faabric通过一种称为Granules的新执行抽象,以细粒度(线程/进程)的方式调度计算来实现这一点。为了支持共享内存,Granules使用WebAssembly隔离,但直接共享内存;为了支持消息传递,Granules提供异步点对点通信。Faabric调度Granules以满足应用程序的并行性需求。它还将更改同步到Granule的共享内存,并迁移Granule以提高局部性。
2023-02-22 cs.DC cs.OS
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
BACKUS: Comprehensive High-Performance Research Software Engineering Approach for Simulations in Supercomputing Systems
高性能计算(HPC)平台通过采用研究软件工程(RSE)技术,使科学软件在许多研究领域(如物理学、生物学和化学)中实现突破。这些包括1)新颖的并行范例,如共享内存并行主义(例如,使用OpenMP 4.5);分布式存储器架构(例如MPI 4);将它们组合在一起的混合并行性;以及异构并行性2)引入先进的软件工程概念,如面向对象的并行编程(OOP)、并行单元测试、并行I/O接口;混合并行可视化; 3)在其他必要领域选择最佳实践,如用户界面;自动文档;版本控制和项目管理。在这项工作中,我们提出了一种综合性的高性能研究软件工程方法在超级计算系统中的模拟,我们发现它最适合于长寿命的并行科学代码。
2019-10-14 cs.DC cs.SE
More Parallelism in Dijkstra's Single-Source Shortest Path Algorithm
Dijkstra的单源最短路径(SSSP)问题的算法在$o(n)$深度($n$是输入图中的顶点数)上很难并行化,而不会不合理地增加所需的并行工作。克劳泽等人(1998)提出的观察结果允许一次识别多于一个的顶点作为正确的,并且相应地同时放松更多的边。他们的算法在并行阶段中运行,并且对于某些随机图,他们表明阶段的数量是$O(n^{1/3})$,具有很高的概率。一个工作效率的CRCW PRAM与此深度,但没有实现一个真正的,并行系统。在本文中,我们加强了克劳泽等人的标准,并讨论在其实施过程中工作和阶段数之间的权衡。我们目前的模拟结果与一系列常见的输入图形的深度,一个理想的并行算法,可以应用的标准,在没有成本和并行松弛没有冲突可以实现。这些结果表明,相位数确实是$n$的一个小根,但仍然偏离也可以计算的最短路径长度下限。我们给出了一个共享内存并行实现的最有效的工作版本的Dijkstra的算法运行在并行阶段,我们比较自己的实现著名的$Δ$步进算法。我们可以证明,采用Crauser等人的标准的工作效率SSSP算法与$Δ$ -在我们选择的输入图上步进有竞争力,并且往往更好。尽管没有提供关于所需相位数量的$o(n)$保证,但允许许多正确顶点的并发松弛的标准可能是实际快速并行SSSP实现的可行方法。
2019-05-08 cs.DC
Scheduling Task-parallel Applications in Dynamically Asymmetric Environments
共享资源干扰被应用程序观察为动态性能不对称。现有技术已经开发了主要在操作系统和体系结构级减少性能不对称的影响的方法。在这项工作中,我们研究如何应用程序级调度技术可以利用可塑性(即工作的灵活性,无论是单线程或多线程任务)和明确的知识任务的关键性,以处理的情况下,系统性能不仅是未知的,而且随着时间的推移而变化。我们提出的任务调度器动态地学习底层平台的性能特征,并使用这些知识来设计更好的时间表,了解动态性能不对称性,从而减少干扰的影响。我们的评估表明,关键感知调度和并行性调整都是解决共享和分布式内存应用中干扰的有效方案
2020-09-22 cs.DC
SWARM Parallelism: Training Large Models Can Be Surprisingly Communication-Efficient
HSE University(高等经济大学);Yandex(扬克斯);University of Washington(华盛顿大学)
提出SWARM parallelism模型并行训练算法,通过在节点间创建临时随机流水线并在故障时重平衡,使在连接差、异构且不可靠的设备上高效训练大模型成为可能。
2023-06-29 cs.DC cs.LG
An Improved and Optimized Practical Non-Blocking PageRank Algorithm for Massive Graphs
PageRank是一个众所周知的算法,其鲁棒性有助于在处理图形和分析问题时设置标准基准。PageRank算法是许多图分析的标准,也是在推荐系统中提取图特征和预测用户评级的基础。PageRank算法不断迭代,更新页面的排名,直到达到收敛。然而,PageRank算法在大规模图上的实现是一个困难的任务,在共享内存架构上利用细粒度并行。并行PageRank内核在大型图形和共享内存架构上使用不同的编程模型的实验研究和分析已经得到了广泛的研究。本文提出了异步执行的PageRank算法,以利用计算上的海量图形,特别是在共享内存架构。我们评估了我们提出的非阻塞算法的性能,用于在真实世界和合成数据集上使用Posix多线程库在56核英特尔(R)至强处理器上进行PageRank计算。我们观察到,我们的异步实现相对于顺序运行实现了10倍到30倍的加速,相对于同步变体实现了5倍到10倍的改进。
2021-09-26 cs.DC
Shared Memory-Aware Latency-Sensitive Message Aggregation for Fine-Grained Communication
本研究针对HPC中细粒度通信,提出共享内存感知的消息聚合方案,以降低消息开销和延迟,并通过代理应用验证其有效性。
2024-11-05 cs.DC
Benchmarking mixed-mode PETSc performance on high-performance architectures
高度并行多处理的趋势在所有现代计算机体系结构中无处不在,从手持设备到大规模HPC系统;但许多应用程序正在努力充分利用现代高性能平台中暴露的多个并行级别。为了实现最新硬件进步的全部潜力,可以采用共享存储器编程技术和节点间消息传递之间的混合模式,其以最小的开销提供高水平的并行性。对于科学应用来说,这不仅意味着模拟代码本身,而且整个软件堆栈都需要发展。在本文中,我们评估的混合模式性能的PETSc,一个广泛使用的科学图书馆的可扩展的偏微分方程的解决方案。我们描述了在库中添加的OpenMP线程功能,重点是稀疏矩阵向量乘法。我们强调实现良好的并行性能,如显式通信重叠使用基于任务的并行性的关键挑战,并展示了如何进一步提高性能显式负载均衡线程MPI进程。使用一组从Fluidity中提取的矩阵,一个CFD应用程序代码,使用该库作为其线性求解器引擎,然后,我们在几个现代HPC架构的多个节点上对混合模式PETSc的并行性能进行基准测试。我们评估的并行可扩展性的统一内存访问(UMA)系统,如富士通PRIMEHPC FX 10和IBM BlueGene/Q,以及非统一内存访问(NUMA)Cray XE 6平台。一个详细的比较,突出了每个特定的架构的特点,在证明有效的强大的可扩展性的稀疏矩阵向量乘法显着的加速比纯MPI模式。
2013-07-17 cs.DC
Scalable Triadic Analysis of Large-Scale Graphs: Multi-Core vs. Multi- Processor vs. Multi-Threaded Shared Memory Architectures
三元分析包含一组有用的图挖掘方法,这些方法以三元组的概念为中心,三元组是三个节点的子图。这些方法经常应用于社会科学以及许多其他不同的领域。三元组方法通常对三元组普查进行操作,该普查对图中每个可能的边配置的三元组的数量进行计数。与其他图算法一样,三元普查算法在图达到数千万到数十亿个节点时不能很好地扩展。为了实现大规模图的三元分析,我们开发并优化了一个三元普查算法,以有效地执行共享内存架构。然后,我们进行了性能评估的三个特定的系统:Cray XMT,HP Superdome,和AMD多核NUMA机的并行三元普查算法。这三个系统具有共享的内存架构,但具有明显不同的硬件能力来管理并行性。
2012-09-27 cs.DC cs.SI
A Bit-Compatible Shared Memory Parallelization for ILU(k) Preconditioning and a Bit-Compatible Generalization to Distributed Memory
ILU(k)是稀疏、非对称系统的迭代线性求解器的常用预处理器。它通常是为了它的稳定性。我们提出了TPILU(k),第一个有效的并行ILU(k)预条件,保持这一重要的稳定性。甚至更好的是,TPILU(k)预处理产生与顺序ILU(k)预处理位兼容的答案。在性能方面,TPILU(k)预处理被证明运行更快,只要更多的核心提供给它-同时继续作为顺序ILU(k)的稳定。这与一些竞争方法形成对比,如果线程并行度提高太多,这些方法可能会变得不稳定。如果Block Jacobi ILU(k)在应用中失败,则可以用TPILU(k)代替,以保持良好的性能,同时还实现完全的稳定性。作为进一步的优化,TPILU(k)提供了一个可选的基于水平的不完全逆方法,作为对原始ILU(k)预处理矩阵的快速近似。虽然这种增强与经典的ILU(k)不是位兼容的,但它与来自相同算法的单线程版本的输出是位兼容的。在16核计算机上的实验中,增强的基于TPILU(k)的迭代线性求解器的执行速度提高了9倍。随着我们进入众核计算时代,有效利用多核的能力将变得越来越重要。TPILU(k)在集群或网格上也表现出良好的性能。例如,新算法实现了50倍的加速与80个节点的一般稀疏矩阵的维数为160,000,是对角占优。
2011-05-12 cs.DC
A Parallel and Highly-Portable HPC Poisson Solver: Preconditioned Bi-CGSTAB with alpaka
本文提出一种基于alpaka和MPI的并行GPU泊松求解器,采用预条件Bi-CGSTAB方法,其中切比雪夫迭代预条件器可加速6倍以上,并在64设备上实现超90%的强扩展效率。
2025-03-11 cs.DC
Heterogeneous Parallelism for Multimodal Large Language Model Training
NVIDIA
针对多模态大语言模型训练中单一LLM中心并行布局导致的吞吐量瓶颈,提出异构并行抽象,允许各模块独立布局和放置,并通过边界通信器实现张量语义保持,实验表明可提升TFLOPS/GPU最高49.3%。
2026-05-26 cs.DC cs.LG
Libfork: portable continuation-stealing with stackless coroutines
本文提出 libfork,利用 C++20 无栈协程和用户态几何分段栈实现可移植、无锁的续体窃取,并在基准测试中显著优于 openMP 与 TBB。
2024-02-28 cs.DC
On the Implementation of an Or-Parallel Prolog System for Clusters of Multicores
如今,集群的多核正在成为常态,虽然,许多或并行Prolog系统已经在过去开发,据我们所知,他们都不是专门设计来探索共享和分布式存储器架构的结合。在最近的工作中,我们提出了一种新的计算模型专门设计的这种组合,它引入了一个分层模型,两个调度级别,一个工人共享内存资源,我们命名为一个团队的工人,另一个团队的工人(不共享内存资源)。在这项工作中,我们提出了这样的模型的第一个实现,我们恢复和扩展的YapOr系统,利用或并行工作团队之间。我们还提出了一套新的内置谓词,构成语法与我们的平台或并行引擎进行交互。实验结果表明,我们的实现是能够提高加速比,因为我们增加了每个团队的工人的数量,从而利用在一台机器中的核心的最大数量,并增加加速比,因为我们增加了团队的数量,从而利用增加更多的计算机节点到一个集群。因此,我们认为,我们的平台是一个有效的和可行的替代利用隐式或并行在目前可用的低成本多核架构的集群。
2016-08-04 cs.DC
Accelerating Deep Neural Network guided MCTS using Adaptive Parallelism
针对DNN-MCTS中CPU端搜索树运算串行导致的瓶颈问题,提出自适应选择最优并行方案及高效搜索通信批量大小的方法,在Alphazero棋类基准上实现1.5×-3×加速。
2023-10-09 cs.DC cs.PF
Shared-Memory n-level Hypergraph Partitioning
我们提出了一个共享内存算法来计算高质量的平衡$k$ -路超图划分问题的解决方案。该问题要求将顶点集划分为最小化连通性度量的有界大小的$k$不相交块(即,由每个超边连接的不同块的数目的总和)。高质量的解决方案是通过并行化的核心技术,目前最好的顺序分区KaHyPar:最极端的$n$级版本的广泛使用的多级范例,其中只有一个顶点是收缩在每个级别。这种方法通过侵入式算法和数据结构实现快速和可伸缩性,这些算法和数据结构允许通过原子操作和细粒度锁定精确控制并行性。我们进行了广泛的实验,超过500现实世界的超图高达$140$百万顶点和20亿针(超边大小的总和)。我们发现,我们的算法计算的解决方案,相当于一个可比的配置KaHyPar,而平均速度快一个数量级。此外,我们表明,最近的非多级算法专门设计用于划分大型实例有相当大的质量处罚,并没有明显的优势,在运行时间。
2021-04-16 cs.DC cs.DS
ZNN - A Fast and Scalable Algorithm for Training 3D Convolutional Networks on Multi-Core and Many-Core Shared Memory Machines
Massachusetts Institute of Technology(麻省理工学院);Princeton University(普林斯顿大学)
卷积网络(ConvNets)已经成为计算机视觉的一种流行方法。加速ConvNet训练是很重要的,这是计算成本很高的。我们提出了一种新的并行算法的基础上分解成一组任务,其中大部分是卷积或FFT。应用布伦特定理的任务依赖图意味着线性加速与处理器的数量是可实现的PRAM模型的并行计算,广泛的网络架构。为了在真正的共享内存机器上实现这样的性能,我们的算法计算收敛在网络的同一节点上的卷积,具有时间局部性,以减少缓存未命中,并通过几乎无等待的并发方法对收敛卷积输出进行求和,以减少在关键部分花费的时间。我们实现了一个公开的软件包称为ZNN的算法。多核CPU的基准测试表明,ZNN可以达到大约等于物理核数量的加速比。我们还表明,ZNN可以在多核CPU(Xeon Phi Knights Corner)上获得超过90倍的加速比。这些加速比是针对具有常用宽度的网络架构实现的。ZNN算法的任务并行性适合于CPU,而以前算法的SIMD并行性与GPU兼容。通过示例,我们表明ZNN可以比某些GPU实现更快或更慢,这取决于网络架构,内核大小以及输出补丁的密度和大小。由于通用CPU编程相对容易,ZNN的开发和维护成本可能更低。
2015-10-22 cs.CV cs.DC cs.LG
Shared Memory Parallel Subgraph Enumeration
子图枚举问题要求我们找到目标图中与给定模式图同构的所有子图。确定是否存在一个这样的同构子图是NP-完全的,因此找到所有这样的子图(如果它们存在)是一项耗时的任务。子图枚举在许多领域都有应用,包括生物化学和社交网络,有趣的是,解决生化输入问题的最快算法是顺序的。由于它们依赖于深度优先的树遍历,因此高效的并行化远非微不足道。然而,由于重要的应用程序产生的数据集越来越困难,并行似乎是有益的。因此,我们在这里提出了Bonnici等人[BMC Bioinformatics,2013]的最先进的子图枚举算法RI和RI-DS(用于密集图的RI变体)的共享内存并行化。我们的策略使用工作窃取,我们的实现在现实世界的生化数据上显示出显着的加速-尽管数据访问模式非常不规则。我们还通过更好地修剪搜索空间来改进RI-DS;与已经高度调优的RI-DS相比,这进一步改善了经验运行时间。
2017-05-25 cs.DC cs.DS
Parallel String Sample Sort
我们讨论如何字符串排序算法可以在现代多核共享内存机器上并行化。作为对原子对象的最佳顺序字符串排序算法和成功的并行排序算法的综合,我们提出了字符串样本排序。该算法有效地利用了存储层次结构,使用额外的字级并行,并在很大程度上避免了分支误预测。此外,我们并行化多键快速排序和基数排序的变体,这些变体在某些情况下也很有用。
2013-05-06 cs.DC cs.DS
Scalable data abstractions for distributed parallel computations
将程序表示为部件的分层组合的能力是管理软件复杂性的重要工具,并且这提供的关键抽象是将数据的表示与计算分离。许多当前的并行编程模型使用共享存储器模型来提供数据抽象,但是由于非确定性和访问延迟,这不能很好地与大量核一起扩展。本文提出了一个简单的编程模型,允许可扩展的并行程序表示与分布式表示的数据,它提供了程序员的灵活性,采用共享或分布式风格的数据并行在适用的情况下。它能够有效地实现,并且在硬件中提供一小部分原始功能,它可以被编译为直接在硬件上操作,就像基于堆栈的分配在顺序机中的子程序中操作一样。
2012-10-03 cs.DC cs.PL
Flexible Support for Fast Parallel Commutative Updates
私有化数据是增加共享内存多线程程序中并行性的一种有用策略。独立核可以独立地计算共享数据的副本,在计算结束时组合它们的结果。然而,私有化的常规方法依赖于针对重复状态的显式静态或动态存储器分配,从而增加存储器占用和对高速缓存资源的争用,特别是在共享高速缓存中。在这项工作中,我们描述了CCache,按需私有化的交换操作操作的数据系统。CCache获得了私有化的好处,而不会增加内存占用或缓存占用。CCache中的每个核心动态地私有化可交换操作的数据,对副本进行操作。核心会定期或在计算结束时将其值与内存中的值合并,当所有核心合并后,内存中的副本将包含最新值。我们描述了一个低复杂度的架构实现CCache,扩展了传统的多核,以支持按需私有化,而不使用额外的内存私有副本。我们在几个高价值的应用程序上评估了CCache,包括随机访问键值存储,聚类,广度优先搜索和图排名,显示加速高达3.2倍。
2017-09-26 cs.AR cs.DC
DuctTeip: An efficient programming model for distributed task based parallel computing
用于科学计算的当前高性能计算机系统通常在分布式存储器环境中组合共享存储器计算节点。从这些复杂的系统中提取高性能需要量身定制的方法。基于任务的并行编程在简化编程和利用共享存储器系统的硬件并行性方面都取得了成功。本文重点讨论如何将任务并行编程扩展到分布式内存系统。我们使用任务和数据的分层分解,以适应不同级别的硬件。我们测试所提出的编程模型在两个不同的应用程序,Cholesky分解,和浅水方程求解器。我们还比较了我们的实现与其他框架的分布式任务并行编程的性能,并表明它是有竞争力的。
2018-01-10 cs.CE cs.DC cs.PF
Parallel performance of shared memory parallel spectral deferred corrections
Hamburg University of Technology(汉堡工业大学);Univ. Grenoble Alpes / Laboratoire Jean Kuntzmann / Inria(格勒诺布尔阿尔卑斯大学/让·孔特实验室/法国国家信息与自动化研究所);Technical University of Munich(慕尼黑工业大学)
本文研究了共享内存中并行谱延迟校正方法的性能,通过OpenMP实现并对比了不同积分器的速度提升。
2026-03-03 cs.CE cs.DC cs.NA
DXML: Distributed Extreme Multilabel Classification
International Institute of Information Technology, Hyderabad(海得拉巴国际信息技术学院)
作为一种大数据应用,极端多标签分类已经成为一个重要的研究课题,其应用于产品和项目的排名和推荐。提出了一种可扩展的混合分布式共享内存的极端分类大规模排名和推荐的实现。具体而言,该实现是使用MPI跨节点传递消息和使用OpenMP在节点上使用多线程的混合。推导了通信延迟和通信量的表达式。针对共享内存体系结构,提出了基于工作跨度模型的并行计算方法。这揭示了类似极端分类方法的预期可扩展性。实验结果表明,该方法在大数据集上的训练和测试速度都比较快。在某些情况下,模型尺寸相对较小。
2021-10-20 cs.AI cs.DC cs.IR
Distributed computation of persistent homology
持久同源性是一个流行的和强大的工具,用于捕获数据的拓扑特征。计算持久同源性的算法的进步已经大大减少了计算时间-只要算法不耗尽可用的内存。最近提出的并行方法持久性计算共享内存系统,我们证明了一个简单的适应标准的减少算法导致分布式系统的一个变种。我们的算法设计确保数据分布在节点上,没有冗余;这允许计算比单个机器大得多的实例。此外,我们观察到,并行至少补偿了节点之间的通信所造成的开销,并且与顺序甚至并行共享内存算法相比,通常甚至加快了计算速度。在我们的实验中,我们能够在一个具有32个节点的集群上,使用每个节点不到10GB的内存,在几秒钟内计算出具有超过10亿(10^9)个元素的过滤的持久同源性。
2013-10-02 cs.CG cs.DC math.AT
Long range forces in a performance portable Molecular Dynamics framework
分子动力学(MD)代码通过跟踪一组相互作用的模型粒子的轨迹来预测物质的基本性质。为了利用各种现代众核硬件,高效的代码必须使用所有可用的并行性。同时,它们需要是便携式的,并且可以由领域专家(物理学家/化学家)轻松扩展,而无需详细了解该硬件。为了应对这一挑战,我们最近描述了一种新的领域特定语言(DSL),用于开发基于“关注点分离”的性能可移植MD代码:Python框架自动为一系列目标体系结构生成高效的并行代码。带电粒子之间的静电相互作用在许多物理系统中很重要,并且通常主导运行时间。在这里,我们讨论在我们的代码生成框架中包含远程交互算法。这些算法需要全球通信和仔细考虑,必须考虑到并行可扩展性的任何影响。我们实现了Ewald求和算法的静电力,目前缩放比较不同的系统大小和现有代码的性能比较。我们还报告了使用OpenMP共享内存并行提供的进一步性能优化。
2017-08-03 cs.DC cs.SE physics.comp-ph
Engineering Parallel String Sorting
我们讨论如何字符串排序算法可以在现代多核共享内存机器上并行化。作为最好的顺序字符串排序算法和原子对象的成功的并行排序算法的综合,我们首先提出了字符串样本排序。该算法有效地利用了存储层次结构,使用了额外的字级并行性,并在很大程度上避免了分支误预测。然后,我们专注于NUMA架构,并开发并行多路LCP合并和合并排序,以减少随机访问远程节点的内存访问的数量。此外,我们并行化多键快速排序和基数排序的变体,这些变体在某些情况下也很有用。五个当前的多核平台上的综合实验,然后报告和讨论。实验表明,我们的实现规模非常好的现实世界的输入和现代机器。
2014-03-09 cs.DC cs.DS
Accelerating Fortran Codes: A Method for Integrating Coarray Fortran with CUDA Fortran and OpenMP
本研究提出融合Intel Coarray Fortran、Nvidia CUDA Fortran与OpenMP的并行编程方法,优化内存管理、CPU-GPU亲和性等,经并行泊松求解器验证,其性能与MPI相近且更易实现,可助力新老代码高效迁移至并行计算。
2024-09-03 astro-ph.IM astro-ph.SR cs.DC