Performance Evaluation of Unified Parallel C for Molecular Dynamics
分区全局地址空间(PGAS)将共享内存编程的概念以及消息传递提供的数据分布和局部性控制集成到单个并行编程模型中。将分布式数据与共享内存结合起来的目的是培养一种局部感知的共享内存范例。PGAS由单个共享地址空间组成,该空间在线程之间进行分区。每个线程在本地内存中都有一部分共享地址空间,因此它可以通过主要对本地数据进行计算来利用数据局部性。统一并行C(UPC)是ISO C的并行扩展和PGAS模型的实现。在本文中,我们评估UPC的性能的基础上,从分子动力学的真实世界的情况。
2016-03-12 cs.DC
Shared-Memory Parallel Maximal Clique Enumeration from Static and Dynamic Graphs
最大团枚举(MCE)是一个基本的图挖掘问题,并作为一个原语在识别图中的密集结构是有用的。由于MCE的高计算成本,并行方法是必不可少的处理大型图。我们提出了MCE的共享内存并行算法,具有以下特性:(1)并行算法相对于最先进的顺序算法是可证明的工作高效的(2)算法具有可证明的小并行深度,表明它们可以扩展到大量处理器,以及(3)我们在多核机器上的实现随着核数量的增加而显示出良好的加速和扩展行为,并且比用于MCE的现有共享存储器并行算法快得多;例如,在某些输入图上,虽然先前的工作要么耗尽存储器,要么在5小时内完成,但我们的实现使用32个核心在一分钟内完成。我们还提出了工作效率的并行算法,用于维护一个动态图中的所有最大集团,是通过添加边的变化。
2020-01-30 cs.DC
Parallel and distributed Gröbner bases computation in JAS
本文研究了多核计算节点的分布式并行计算机上的并行格罗布纳基算法。总结了三种不同的格罗布纳基实现:共享内存并行、纯分布内存并行和分布内存与共享内存相结合的并行。最后一种算法称为分布式混合算法,在主节点和工作节点之间只使用一个控制通信信道,并将多项式保存在节点上的共享内存中。多项式在单独的分布式数据结构中被异步传输到算法的控制流。实现是通用的,适用于所有实现的(精确)字段。我们提出了新的性能测量和讨论的算法的性能。
2010-07-30 cs.DC
Temporal Parallelization of Bayesian Smoothers
本文提出了贝叶斯平滑的时间并行化算法。我们定义的元素和运营商提出这些问题的解决方案,所有前缀和操作,有效的并行扫描算法。我们提出了一般贝叶斯滤波和平滑方程的时间并行化,并将其专门用于线性/高斯模型。所提出的算法的优点是,它们降低了标准平滑算法的线性复杂度相对于时间对数。
2020-02-20 cs.DC math.DS stat.CO
Shared memory parallelism in Modern C++ and HPX
本文概述了现代C++标准中用于单节点共享内存并行编程的语言与库特性,并介绍了HPX库如何提前实现这些标准及扩展,使开发者无需自定义扩展即可编写高性能并行代码。
2023-08-09 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
Multicore-aware parallel temporal blocking of stencil codes for shared and distributed memory
需要新的算法和优化技术来平衡带宽匮乏的多核芯片的加速趋势。众所周知,模板代码的性能可以通过时间分块来改善,从而减轻对存储器接口的压力。我们介绍了一种新的流水线的方法,使显式使用共享缓存在多核环境中,最大限度地减少同步和边界开销。对于共享内存节点的集群,我们演示了如何在混合共享/分布式内存环境中成功地采用时间块。
2009-12-22 cs.DC cs.PF
An Optimal Level-synchronous Shared-memory Parallel BFS Algorithm with Optimal parallel Prefix-sum Algorithm and its Implications for Energy Consumption
我们提出了一种高效的并行级同步宽度优先搜索(BFS)算法的共享存储器架构,实现了理论上的并行运行时间的下限。无论图的形状如何,最优性都保持不变。我们还证明了这一最优方案的能源消耗经验的含义。关键的想法是永远不要使用超过必要的处理核心来有效地完成任何计算步骤中的工作。我们保持其余的核空闲以节省能量并减少其他资源争用(例如,带宽、共享高速缓存等)。我们的BFS不使用锁和原子指令,并且很容易扩展到共享内存协处理器。
2022-09-19 cs.CC cs.DC cs.DS
QuickSched: Task-based parallelism with dependencies and conflicts
本文介绍了QuickSched,一个紧凑,高效的开源C语言库的基于任务的共享内存并行编程。QuickSched用任务冲突的概念扩展了基于任务的编程的标准依赖方案,即~可以以任何顺序执行但不能同时执行的任务集。这些冲突使用专门可锁定的分层资源进行建模。调度器本身优先级的任务沿执行的关键路线,并表现出良好的64核并行共享内存机器上的两个例子的问题:一个平铺QR分解和基于任务的巴恩斯-赫特树代码。
2016-01-20 cs.DC
Parallelization of the LBG Vector Quantization Algorithm for Shared Memory Systems
International Institute of Information Technology - Bangalore(班加罗尔国际信息技术学院)
针对图像处理中的矢量量化(VQ)问题,提出了一种并行化方法.矢量量化处理从输入训练数据集生成码本,并用最近的码矢量替换任意数据。在矢量量化的大部分努力已被导向设计并行搜索算法的码本,迄今为止,很少有人做了发展的并行程序,以获得最佳的码本。这种并行算法解决了使用传统的LBG类型的矢量量化算法的共享存储器系统和有效地使用并行处理器的最佳码书的设计问题。使用从训练集形成的码本,任何任意输入数据被替换为来自码本的最近码矢量。该算法的有效性表明。
2009-10-26 cs.CV cs.DC
Optimization and parallelization of B-spline based orbital evaluations in QMC on multi/many-core shared memory processors
基于B样条的轨道表示被广泛地用于固体的量子蒙特卡罗(QMC)模拟,历史上占据总运行时间的多达50%。对大型四维数组的随机访问使得有效利用现代CPU的高速缓存和宽向量单元变得具有挑战性。我们提出了多/众核共享内存处理器上的B样条评估的节点级优化。为了提高SIMD效率和带宽利用率,我们首先应用数据布局转换从数组的结构(SoA)。然后通过阻塞SoA对象,我们优化了缓存重用,并为一系列问题大小获得持续的吞吐量。我们在B样条轨道评估内核中实现了高效的嵌套线程,为实现QMC模拟的强大扩展铺平了道路。这些优化可移植到四种不同的高速缓存一致性架构上,在英特尔至强融核处理器7250 P(KNL)上可实现高达5.6倍的性能增强,在英特尔至强融核协处理器7120 P上可实现5.7倍的性能增强,在英特尔至强处理器E5 v4 CPU上可实现10倍的性能增强,在BlueGene/Q处理器上可实现9.5倍的性能增强。我们的嵌套线程实现在KNL上显示出接近理想的并行效率,最多可达16个线程。我们采用车顶性能分析来模拟我们的优化的影响。这项工作与我们目前优化其他QMC内核的努力相结合,导致miniQMC在KNL上的加速比超过4.5倍。
2016-11-08 cs.DC
An Asynchronous Many-Task Algorithm for Unstructured $S_{N}$ Transport on Shared Memory Systems
针对非结构化网格离散纵标 $S_N$ 输运求解器在共享内存众核架构上的扩展性瓶颈,提出一种新的异步多任务(AMT)算法,显著提升了计算性能并分析了改善原因。
2025-10-13 cs.DC
Shared Arrangements: practical inter-query sharing for streaming dataflows
目前的系统,数据并行,增量处理和视图维护高速率流隔离独立查询的执行。这在存在并发增量维护的查询时产生了不必要的冗余和开销:每个查询必须独立地在相同的输入流上维护相同的索引状态,并且新查询必须在开始发出其第一个结果之前从头开始构建此状态。本文介绍了共享的安排:索引视图的维护状态,允许并发查询重用相同的内存中的状态,而不损害数据并行性能和伸缩。我们实现了共享的安排在一个现代的流处理器,并显示了数量级的改进,查询响应时间和资源消耗的交互式查询对高吞吐量的流,同时也显着提高性能,在其他领域,包括业务分析,图形处理,和程序分析。
2020-06-11 cs.DC
Algorithms for Parallel Shared-Memory Sparse Matrix-Vector Multiplication on Unstructured Matrices
针对非结构化稀疏矩阵,提出六种混合SpMV算法,结合并行化、存储格式和非零排序优化,其中一种在多CPU架构上性能提升19%,并分析存储格式转换开销。
2025-02-26 cs.DC
AutOMP: An Automatic OpenMP Parallelization Generator for Variable-Oriented High-Performance Scientific Codes
OpenMP是一个跨平台的API,它扩展了C、C++和Fortran,并为这些语言提供了共享内存并行平台。自20世纪90年代以来,许多核心和HPC技术在科学计算中的使用已经普及,现在已经参与了许多研究领域。相对容易实现的OpenMP,以及多核共享内存处理器(如英特尔至强融核)的发展,使OpenMP的并行化在现代化的过程中遗留代码的有利方法。传统的科学代码通常包含大量的物理数组,这些数组被代码例程使用和更新。在大多数情况下,这种代码的并行化集中在循环并行化上。这种并行化的一个关键步骤是决定并行化作用域中的哪些变量应该是私有的(因此每个线程将持有它们的副本),以及哪些变量应该在线程之间共享。另一个重要的步骤是在循环执行后找出哪些变量应该同步。在这项工作中,我们提出了一个自动的预处理器,这些阶段- AutOMP(自动OpenMP)。AutOMP识别循环中的所有变量赋值。这些变量将是私有的,除非赋值是依赖于循环索引变量的数组元素。然后,AutOMP会找到需要线程同步的位置,以及要使用哪个归约运算符。最后,程序提供了并行化命令,用于并行化循环。
2017-07-22 cs.DC
Leveraging shared caches for parallel temporal blocking of stencil codes on multicore processors and clusters
带宽匮乏的多核芯片已经变得无处不在。众所周知,模板代码的性能可以通过时间分块来改善,从而减轻对存储器接口的压力。我们介绍了一种新的流水线的方法,使显式使用共享缓存在多核环境中,最大限度地减少同步和边界开销。基准测试结果目前的三个基于x86的微处理器,清楚地表明,我们的优化工程最好的设计与高速共享高速缓存和低内存带宽每核心。此外,我们证明,简单的基于带宽的性能模型是不准确的这种算法,并采用更精细的,合成的建模过程。最后,我们表明,时间块可以成功地采用在一个混合共享/分布式内存环境中,虽然在强大的规模有限的好处。
2010-06-16 cs.DC cs.PF
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
Fault-tolerant parallel scheduling of arbitrary length jobs on a shared channel
我们研究的问题,通过一个共享的通道,也被称为多路访问通道通信的故障倾向的机器上的调度作业。我们有$n$任意长度的作业要在$m$相同的机器上调度,其中$f$容易被对手崩溃。一台机器可以在没有冲突检测的情况下通过通道通知其他机器完成作业。性能通过整个执行过程中可用的机器步骤的总数来衡量。我们的目标是研究抢占的影响(即,中断作业的执行并稍后在相同或不同的机器中恢复)以及作业处理的工作性能上的故障。新颖性是识别决定问题复杂性(难度)的特征的能力。我们表明,这个问题变得困难时,抢占是不允许的,通过显示相应的下限和上限,后者与算法达到他们。我们还证明了随机化的帮助更大,但只对非自适应对手,在更严重的自适应对手的存在下,随机化并没有帮助在任何设置。我们的工作已经从以前的工作,重点是设置,包括:调度多路访问通道没有机器故障,完整的信息故障,或不完整的信息故障(如在这项工作中),但单位长度的工作,因此,不考虑抢占。
2018-07-24 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
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
Parallel Algorithms for Densest Subgraph Discovery Using Shared Memory Model
寻找图的稠密成分的问题是数据分析中广泛探索的领域,在社区挖掘,垃圾邮件检测,计算机安全和生物信息学等领域和分支研究中具有不同的应用。该研究项目探索了以前可用的算法,以研究它们并确定可能导致改进版本的潜在修改,从而实现相当大的性能和效率飞跃。此外,努力也转向设计一个新的算法的问题的denominant子图发现。本文提出了一种改进的实现,广泛使用的dennial子图发现算法和一种新的并行算法,产生更好的结果比2-近似。
2021-02-27 cs.DC cs.IR
A Scalable Shared-Memory Parallel Simplex for Large-Scale Linear Programming
单纯形表在工业界和学术界得到了广泛的应用和研究。随着大数据时代的到来,越来越大的问题需要在越来越大的机器中解决,这些机器的架构类型在该算法的概念中并不存在。在本文中,我们提出了一个共享内存并行实现的单纯形表算法密集的大规模线性规划(LP)的问题,用于现代多核架构。我们提出的一般计划,并解释了并行化的标准单纯形算法的每一步所采取的策略,强调解决性能瓶颈的解决方案。我们分析了加速比和并行效率相对于标准的单纯形算法,使用64个处理核心的共享存储器系统的建议的实施。实验进行了几个不同的问题,多达8192个变量和约束,在其原始和对偶配方。结果表明,当我们使用更多的变量比不等式约束的配方的性能大多是好得多。此外,他们表明,并行化策略,以避免瓶颈导致的实施规模以及与问题的大小和核心数达到一定的限制问题的大小。进一步的分析表明,这一比例限制是资源限制的结果。尽管如此,我们的实现还是能够达到19倍左右的加速。
2019-05-27 cs.DC cs.MS
Robust Numerical Tracking of One Path of a Polynomial Homotopy on Parallel Shared Memory Computers
我们考虑在一台并行共享内存计算机上跟踪由多项式同伦定义的一条解路径的问题。我们的鲁棒路径跟踪应用牛顿法的幂级数,以找到最接近的奇异参数值。在此基础上,计算同伦中多项式的Hessian函数的奇异值来估计到最近的不同路径的距离,并利用这些估计值来计算合适的自适应步长。对于n维问题,我们的鲁棒路径跟踪器的成本开销是O(n),相比常用的预估校正法。这种开销可以通过在并行共享内存计算机上的多线程程序来减少。
2020-07-29 cs.DC cs.NA cs.SC
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
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
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
Scheduling Task-parallel Applications in Dynamically Asymmetric Environments
共享资源干扰被应用程序观察为动态性能不对称。现有技术已经开发了主要在操作系统和体系结构级减少性能不对称的影响的方法。在这项工作中,我们研究如何应用程序级调度技术可以利用可塑性(即工作的灵活性,无论是单线程或多线程任务)和明确的知识任务的关键性,以处理的情况下,系统性能不仅是未知的,而且随着时间的推移而变化。我们提出的任务调度器动态地学习底层平台的性能特征,并使用这些知识来设计更好的时间表,了解动态性能不对称性,从而减少干扰的影响。我们的评估表明,关键感知调度和并行性调整都是解决共享和分布式内存应用中干扰的有效方案
2020-09-22 cs.DC
On the Analysis of Parallel Real-Time Tasks with Spin Locks
锁协议是实时的【形】系统资源管理的重要组成部分,它协调不同任务对共享资源的互斥访问。虽然针对顺序实时的【形】任务的锁协议的设计和分析已经得到了深入的研究,但是针对并行实时的【形】任务的锁协议的设计和分析还很少。在本文中,我们研究了并行实时的【形】任务的分析,使用自旋锁来保护访问共享资源在三个常用的请求服务顺序(无序,FIFO顺序和优先级顺序)。一个显着的特点,使我们的分析方法更准确的是,系统地分析阻塞时间,可能会延迟一个任务的完成时间,其中的影响,总的工作量和最长的路径长度是共同考虑的,而不是单独分析它们和计数的阻塞时间作为工作量,延迟一个任务的完成时间,因为通常假设在国家的最先进的。
2020-03-18 cs.DC
Distributed Semi-Speculative Parallel Anisotropic Mesh Adaptation
Center for Real-time Computing, Old Dominion University(实时计算中心,老道明大学)
本文提出一种分布式内存方法,通过分离网格生成与性能,实现高效各向异性网格自适应,生成高质量网格并保持性能优势。
2026-02-16 cs.DC
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
Parallel Data Distribution Management on Shared-Memory Multiprocessors
在基于智能体的仿真研究中,两组d维轴平行矩形的交点识别问题经常出现。为此,高层体系结构(HLA)规范--模拟器之间互操作性的标准框架--包括数据分发管理(DDM)服务,其职责是报告一组订阅和更新区域之间的所有交叉点。DDM服务的核心算法是CPU密集型的,并且可以极大地受益于现代多核处理器的大计算能力。在本文中,我们提出了两个并行解决方案的DDM问题,可以有效地运行在共享内存的多处理器。第一种解决方案基于数据结构(间隔树),它允许并发计算订阅和更新区域之间的交集。第二种解决方案是基于一种新的并行扩展的排序匹配算法,其顺序版本被认为是最有效的解决方案的DDM问题。广泛的实验评估所提出的算法确认其有效性上利用多个执行单元在共享内存架构。
2020-02-26 cs.DC cs.DS cs.PF
A Blackbox Polynomial System Solver on Parallel Shared Memory Computers
University of Illinois at Chicago(伊利诺伊大学芝加哥分校)
本文提出一种并行算法用于求解多项式系统,通过数值不可约分解分离解集,并在循环n根问题中验证其有效性。
2018-06-17 cs.DC cs.MS cs.NA
Scalable Shared-Memory Hypergraph Partitioning
超图划分是高性能计算应用中优化数据布局和最小化通信量的重要预处理步骤。为了应对日益增长的问题规模,它已成为越来越重要的是开发快速并行分割算法的解决方案的质量是有竞争力的现有的顺序算法。为此,我们提出了Mt-KaHyPar,第一个共享内存多级超图分区器,并行实现了顺序,高质量分区系统所使用的许多技术:使用并行社区发现作为指导的并行粗化算法,通过具有工作窃取的并行递归二分区的初始分区,可缩放标签传播细化算法,以及经典FM算法的第一个完全并行的直接$k$路公式。在不同应用领域的大量基准测试实例集上进行的实验表明了该方法的可扩展性和有效性。在64个核心的情况下,我们观察到高达51的自相关加速比和23.5的谐波平均加速比。在解决方案质量方面,我们在95%的实例上优于分布式超图分区器Zoltan,同时也快了2.1倍。只有四个核心,Mt-KaHyPar也比最快的顺序多级分区器PaToH稍快,同时在所有实例的83%上产生更好的解决方案。顺序高质量分区器KaHyPar仍然比我们的并行方法找到更好的解决方案,特别是在使用基于最大流的细化时。然而,这是以相当长的运行时间为代价的。
2020-10-21 cs.DC cs.DS
Hybrid MPI/StarSs - a case study
混合并行编程模型结合了分布式和共享内存的范例,在高性能计算中得到了很好的建立。HPC中混合编程的经典原型是MPI/OpenMP,但许多其他组合正在研究中。最近,数据依赖性驱动,任务并行模型共享内存并行命名StarSs已被建议与MPI结合使用。在本文中,我们应用混合MPI/StarSs的格子玻尔兹曼代码。特别是,我们提出的混合编程模型,我们期望的好处,在移植的挑战,最后比较MPI/StarSs混合,MPI/OpenMP混合和原来的MPI只有版本的相同的代码的性能。
2012-04-18 cs.DC
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
Sequential and Shared-Memory Parallel Algorithms for Partitioned Local Depths
Wake Forest University(维克森林大学)
本文设计并优化了Partitioned Local Depths的顺序与共享内存并行算法,通过三元组比较进行社区结构分析,证明了顺序算法的通信最优性,并在多核CPU上实现了显著的加速效果。
2023-07-31 cs.DC cs.LG stat.ML
Parallel Sort-Based Matching for Data Distribution Management on Shared-Memory Multiprocessors
本文研究了两组d维轴平行矩形的交点识别问题。这是一个常见的问题,出现在许多基于代理的仿真研究,并在高层体系结构(HLA)的背景下,它是在数据分布管理(DDM)服务的核心是至关重要的。已经提出了几种DDM服务的实现;然而,它们中的许多要么效率低下,要么固有地是顺序的。这些都是严重的限制,因为多核处理器现在无处不在,而DDM算法-CPU密集型-可以从额外的计算能力中受益。我们提出了一个并行版本的基于排序的匹配算法的共享内存多处理器。基于排序的匹配算法是解决DDM问题的最有效的串行算法之一,但由于数据依赖性,并行化非常困难。我们描述的算法,并计算其渐近运行时间,我们完成了分析,通过评估其性能和可扩展性,通过广泛的实验两个商品多核系统的基础上双插槽英特尔至强处理器,和单插槽英特尔酷睿i7处理器。
2018-08-07 cs.DC cs.DS cs.MA
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
Temporal Parallelization of Inference in Hidden Markov Models
本文提出了隐马尔可夫模型(HMRM)的并行推理算法。特别是,我们提出了并行向后-向前型滤波和平滑算法以及并行维特比型最大后验概率(MAP)算法。我们定义关联元素和运营商提出这些推理问题的并行前缀和计算的总和产品和最大产品的算法和并行化,使用并行扫描算法。所提出的算法的优点是,它们是计算效率的HMM推理问题与长时间的视野。我们经验比较所提出的方法的性能,经典的方法在一个高度并行的图形处理单元(GPU)。
2021-09-04 cs.DC stat.ML
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
Efficient and Scalable Algorithms for Smoothed Particle Hydrodynamics on Hybrid Shared/Distributed-Memory Architectures
本文介绍了一种新的快速和隐式并行的方法来寻找邻居的多分辨率光滑粒子流体动力学(SPH)模拟。这种新方法是基于分层细胞分解和排序的相互作用,在一个基于任务的配方。它被证明是比传统的基于树的代码更快,并扩展比域分解为基础的方法在混合共享/分布式存储器并行架构,例如集群的多核,实现了$40\times$加速的小工具-2模拟代码。
2014-04-08 astro-ph.IM cs.DC physics.comp-ph
Efficient System-Enforced Deterministic Parallelism
确定性执行为调试、容错和安全性提供了许多好处。然而,确定性地运行并行程序通常是困难和昂贵的-特别是如果我们希望系统强制的确定性,确保任意错误或恶意软件的精确可重复性。Determinator是一个新颖的操作系统,它在多线程和多进程计算中强制执行确定性。Determinator的内核只提供单线程的、“无共享”的地址空间,通过确定性同步进行交互。不受信任的用户级运行时使用分布式计算技术来模拟熟悉的抽象,如Unix进程、文件系统和共享内存多线程。该系统在多核PC上和集群中的节点上确定性地运行并行应用程序。粗粒度的并行基准测试可以执行并扩展到常规系统,有时甚至比常规系统更好,尽管确定性对于细粒度的并行应用程序来说代价很高。
2010-05-19 cs.DC cs.OS
PPT-SASMM: Scalable Analytical Shared Memory Model: Predicting the Performance of Multicore Caches from a Single-Threaded Execution Trace
由于多核处理器设计的复杂性,多核处理器上并行应用的性能建模一直是计算协同设计中的一个难题。多核包括复杂的私有和共享存储层次结构。我们提出了一个可扩展的分析共享内存模型(SASMM)。SASMM可以预测在多核上运行的并行应用程序的性能。SASMM使用概率和计算效率高的方法来预测多核缓存的重用距离配置文件。SASMM依赖于对重用配置文件的随机、静态的基本块级分析。配置文件是根据顺序运行的应用程序的内存跟踪计算的,而不是使用多线程跟踪。实验结果表明,该模型可以预测私有L1缓存命中率为2.12%,共享L2缓存命中率为1.50%左右的出错率。
2021-03-19 cs.DC cs.PF
An Efficient Shared-memory Parallel Sinkhorn-Knopp Algorithm to Compute the Word Mover's Distance
Parallel Computing Labs(并行计算实验室);Intel(英特尔公司)
词移动器距离(WMD)是通过计算将源/查询文档的所有词最优地移动到目标文档的最相似词的成本来测量两个文本文档之间的语义不相似性的度量。计算两个文档之间的WMD是昂贵的,因为它需要解决花费\(O(V^3log(V))\)的优化问题,其中\(V\)是文档中唯一单词的数量。幸运的是,大规模杀伤性武器可以被定义为地球移动者距离(EMD)(也称为最佳运输距离),已经表明,通过向优化问题添加熵惩罚,算法复杂度可以降低到\(O(V^2)\),并且类似的想法可以适用于有效地计算大规模杀伤性武器。另外,可以通过一次针对多个目标文档计算单个查询文档的WMD(例如,发现给定的推文是否与一天中发生的任何其他推文相似)。本文采用\(O(V^2)\) EMD算法,提出了一种共享内存并行Sinkhorn-Knopp算法来计算一个文档对多个文档的WMD。我们使用算法转换将原始的密集计算内核更改为稀疏计算内核,并在最先进的英特尔\textregistered{} 4插槽Cascade Lake机器w.r. t上使用\(96\)内核获得\(67\times\)加速。其连续运行。我们的并行算法比内部使用优化矩阵库调用的朴素并行Python代码快\(700\times\)。
2021-03-22 cs.DC cs.LG stat.ML
PALS: Efficient Or-Parallelism on Beowulf Clusters
本文介绍了PALS系统的发展,Prolog的实现能够有效地利用或分布式存储器平台上的并行性-特别是Beowulf集群。PALS使用了一种新的技术,称为增量堆栈分裂。所提出的技术建立在堆栈分裂方法的基础上,该方法先前由作者描述并在共享内存系统上进行了实验验证,这反过来又是在各种并行逻辑和约束系统中使用的堆栈复制方法的演变-例如,缪斯,雅普,和佩妮。PALS系统是第一个基于栈分裂方法的Prolog分布式或并行实现。给出的结果证实了这种方法的优越性,作为一个简单而有效的技术,从共享内存到分布式内存系统的过渡。PALS扩展堆栈分裂相结合,它与增量复制,该文件提供了一个描述的PALS的实施,包括如何处理分布式调度的细节。我们还研究了有效支持顺序敏感谓词的方法(例如,副作用)在堆栈分裂方案的上下文中。从运行PALS共享内存和Beowulf系统的实验结果进行了介绍和分析。
2006-07-09 cs.DC cs.PL
RegDem: Increasing GPU Performance via Shared Memory Register Spilling
GPU利用率(以占用率衡量)受到并行线程对片上资源(如寄存器和程序员管理的共享内存)的组合使用的限制。更高的资源需求意味着更低的有效并行线程数,从而降低程序性能。我们的调查发现,登记册往往是占用限制器。事实上,基于nvcc编译器的方法将过多的寄存器溢出到片外存储器,忽略了共享存储器,使片内资源未得到充分利用。为了减轻寄存器的需求,本文提出了一种二进制翻译技术,称为RegDem,溢出过多的寄存器,未充分利用的共享内存通过转换GPU汇编代码(SASS)。大多数GPU程序不完全使用共享内存,因此允许RegDem使用它进行寄存器溢出。RegDem实现的更高占用率超过了访问共享内存而不是将数据放置在寄存器中的略高成本。本文还提出了一个编译时的性能预测模型,从一组程序变量中选择最佳版本的指令失速。累积起来,这些技术以9%的几何平均值优于nvcc编译器,最高观察到18%。
2019-07-05 cs.DC cs.PF
Parallel Iterated Extended and Sigma-point Kalman Smoothers
加性噪声非线性模型的贝叶斯滤波和平滑问题是一个活跃的研究领域。经典的泰勒级数以及最近的sigma点为基础的方法是两个众所周知的策略来处理这些问题。然而,这些方法本质上是顺序的,并且在它们的标准公式中不允许时域中的并行化。在本文中,我们提出了一组并行公式,取代现有的顺序,以实现较低的时间(跨度)复杂度。我们的实验结果与图形处理单元(GPU)说明了所提出的方法的效率超过他们的顺序对应。
2021-01-31 cs.DC stat.CO
Parallelizing Word2Vec in Shared and Distributed Memory
Parallel Computing Lab, Intel Labs(英特尔实验室并行计算实验室)
Word 2 Vec是一种广泛使用的用于提取词的低维向量表示的算法。它在机器学习和自然语言处理(NLP)社区中产生了相当大的兴奋,最近由于其在许多NLP应用中的出色表现,例如命名实体识别,情感分析,机器翻译和问答。包括Mikolov等人的那些算法在内的最先进的算法已经被并行化用于多核CPU架构,但是基于向量-向量运算,其是存储器带宽密集型的并且不能有效地使用计算资源。在本文中,我们提高了重用的各种数据结构的算法,通过使用minimirs,从而使我们能够表达的问题,使用矩阵乘法运算。我们还探讨了不同的技术来分配word 2 vec计算在计算集群中的节点,并表现出良好的强大的可扩展性高达32个节点。结合起来,这些技术使我们能够在核心和节点之间近似线性地扩展计算,每秒处理数亿个单词,这是我们所知最快的word 2 vec实现。
2016-08-08 cs.CL cs.DC stat.ML
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
Scalable data abstractions for distributed parallel computations
将程序表示为部件的分层组合的能力是管理软件复杂性的重要工具,并且这提供的关键抽象是将数据的表示与计算分离。许多当前的并行编程模型使用共享存储器模型来提供数据抽象,但是由于非确定性和访问延迟,这不能很好地与大量核一起扩展。本文提出了一个简单的编程模型,允许可扩展的并行程序表示与分布式表示的数据,它提供了程序员的灵活性,采用共享或分布式风格的数据并行在适用的情况下。它能够有效地实现,并且在硬件中提供一小部分原始功能,它可以被编译为直接在硬件上操作,就像基于堆栈的分配在顺序机中的子程序中操作一样。
2012-10-03 cs.DC cs.PL
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
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
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