A new and five older Concurrent Memory Reclamation Schemes in Comparison (Stamp-it)
存储管理是几乎所有共享存储器、并发数据结构和算法中的关键组件,包括共享存储器资源的有效分配和随后的回收。本文贡献了一个新的,无锁,摊销的恒定时间的内存回收计划称为\emph{Stamp-it},并比较它的五个著名的,选择性有效的计划,从文献中,即无锁引用计数,危险指针,基于静态的回收,基于纪元的回收,和新的基于纪元的回收。提供了一个广泛的,实验评估与新的和常用的基准,在四个不同的共享内存系统的硬件支持的线程数范围从48到512,显示邮票,它是有竞争力的,在许多情况下和方面优于其他计划。
2017-12-17 cs.DC
Lazy object copy as a platform for population-based probabilistic programming
这项工作认为动态存储管理人口为基础的概率程序,如使用粒子方法进行推理。这样的程序表现出一种模式,即通过连续的几代来分配、复制、潜在地改变和释放类似对象的集合。这些对象可以组装数据结构,诸如栈、队列、列表、不规则数组和树,其可以具有随机的并且可能无限的大小。对于$N$粒子、$T$代、$D$对象和在每代上的重传的简单情况,基于现有的理论结果,密集表示需要$O(DNT)$内存,而稀疏表示仅需要$O(DT+DN\log DN)$内存。这项工作描述了一个对象的写时复制平台,以自动保存程序员。其核心思想是形式化使用标记有向多重图,其中顶点表示对象,边之间的指针,并标记必要的簿记。为了在激励模式下获得更高的性能,提出了一种特定的标记方案。该平台是为Birch概率程序设计语言实现的,使用智能指针、哈希表和引用计数垃圾回收。它是经验上的一些现实的概率程序进行测试,并显着减少内存使用和执行时间的方式与理论预期一致。这为命令式程序员提供了写时复制,为面向对象程序员提供了延迟深度复制,为函数式程序员提供了就地写入优化。
2020-01-09 cs.DC
Persistent Memory Programming Abstractions in Context of Concurrent Applications
非易失性存储器(NVM)技术如PCM、STT、忆阻器和Fe-RAM的出现被认为通过减少存储器和存储器之间的间隙而摆脱传统的存储层次结构来增强系统性能。这种存储器技术被认为具有DRAM的性能和磁盘的持久性。因此,它还将为大数据应用程序提供显着的性能优势,允许以最低的持久化延迟在内存中处理大型数据。通过传统的存储器编程来利用这种以存储器为中心的计算技术的性能优势并不是微不足道的,并且对于并行/并发应用来说,挑战加剧了。为此,已经提出了几种编程抽象,如NVthreads,Mnemosyne和Intel的NVML。然而,决定一个编程抽象,这是更容易编程,并在同一时间确保一致性和平衡各种软件和架构的权衡是公开的有争议的和活跃的研究领域的NVM社区。我们通过建立一个并发和持久集以及开放寻址的哈希表数据结构应用程序来研究NVthreads、Mnemosyne和NVML库。在这个过程中,我们探索和报告各种权衡和隐藏的成本,涉及建立并发应用程序的持久性方面实现效率,一致性和易于编程与这些NVM编程抽象。最后,我们评估了集合和哈希表数据结构应用程序的性能。我们观察到,NVML是最容易编程,但效率最低,Mnemosyne是最性能友好的,但涉及重大的编程工作,以建立并发和持久的应用程序。
2017-12-13 cs.DC
Efficient Concurrent Execution of Smart Contracts in Blockchains using Object-based Transactional Memory
本文提出了一种基于对象语义的智能合约事务(SCT)并发执行的有效框架,使用乐观的单版本基于对象的软件事务存储系统(SVOSTM)和多版本OSTM(MVOSTM)。在我们的框架中,一个多线程的矿工构造一个块图(BG),捕获SCT之间的对象冲突关系,并将其存储在块中。稍后,验证器根据这个BG并发地、确定性地重新执行相同的SCT。恶意矿工可以修改BG以损害区块链,例如,造成双重消费为了识别恶意矿工,我们提出了智能多线程验证器(SMV)。实验分析表明,所提出的多线程的矿工和验证器实现了显着的性能增益比国家的最先进的SCT执行框架。
2020-03-27 cs.DC
On the (Non-)Applicability of a Small Model Theorem to Model Checking STMs
软件事务存储器(STM)算法为程序员提供了一种同步机制,用于并发访问共享变量。基本上,程序员可以指定“看似”原子执行的事务(从共享状态读取和向共享状态写入)。这个属性在一个称为不透明度的正确性标准中被捕获。对于STM算法的模型检验不透明性,原则上,我们需要检查对潜在无限多变量进行读写的事务的所有可能组合的不透明性。为了仍然将自动模型检验技术应用于不透明性检验,已经证明了所谓的小模型定理,该小模型定理指出,对两个变量和两个事务的模型检验足以用于STM的正确性验证。在本文中,我们重新审视这个小模型定理,并探讨其适用性STM算法的不透明性检查。
2021-07-01 cs.DC
Concurrent Scheduling of High-Level Parallel Programs on Multi-GPU Systems
本文提出指令图这一低级中间表示,将SYCL分布式程序中的内存管理、数据传输、MPI通信与内核调用的调度分析移出关键路径,并在Celerity运行时中实现并发调度与内存分配优化,在多达128个GPU上验证了强扩展性能。
2025-03-13 cs.DC
Memory Bounds for Concurrent Bounded Queues
本文研究无阻塞有界队列的内存最优性,证明在一般情形下其内存开销与并发进程数成线性关系,为并发数据结构内存优化提供理论界限。
2024-01-16 cs.DC cs.DS
Causal Linearizability
大多数关于共享内存的并发对象的验证工作都假设顺序一致性,但大多数多核处理器只支持不提供顺序一致性的弱内存模型。此外,大多数验证工作都集中在并发对象的线性化上,但是现有的实现被优化为在不可线性化的弱内存模型上运行。在本文中,我们解决这些问题,通过引入因果线性化,并发对象运行在弱内存模型的正确性条件。像线性化本身一样,因果线性化允许在对客户端行为的弱约束下组合并发对象。我们指定这些限制,通过引入一个概念的操作种族自由,在那里的程序,满足此属性的行为保证,如果他们的共享对象实际上是线性化的。我们将这些想法应用于Linux内核中的对象,这些对象经过优化以在x86处理器系列的内存模型TSO上运行。
2016-04-22 cs.DC
An Efficient Approach to Achieve Compositionality using Optimized Multi-Version Object Based Transactional Systems
在多核系统的现代时代,主要目标是正确地利用内核。这种利用可以通过并发编程来完成。但是开发一个完美的、组织良好的并发程序是困难的。软件事务存储器系统(STM)是一个方便的编程接口,它可以帮助程序员同时访问共享内存,而不必担心诸如优先级反转、死锁、活锁等一致性问题。STM促进的另一个重要特征是并发程序的组合性。它通过将不同的并发操作封装在一个事务中,将它们组合在一个原子单元中。文献中可用的许多STM在存储器缓冲器上执行读/写原语操作。我们将它们表示为读写STM或RWSTM。然而,存在一些STM(transactional boosting及其变体),它们在哈希表上工作于更高级别的操作,例如插入,删除,查找等。我们将这些STM称为基于对象的STM或OSTM。数据库和RWSTM的文献表明,维护多个版本可以确保更大的并发性。这促使我们维护多个版本在更高的层次上与对象语义,并实现更大的并发性。因此,本文提出了优化的多版本基于对象的STM或OPT-MVOSTM的概念,它封装了多个版本的OSTM的思想,以有效地利用更大的并发性。
2019-05-03 cs.DC
Turning Manual Concurrent Memory Reclamation into Automatic Reference Counting
安全内存回收(SMR)方案是无锁数据结构和并发编程的重要工具。然而,手动SMR方案是出了名的难以正确应用,而自动方案,如引用计数,十多年来一直被认为对于实际目的来说太慢。最近的一波工作已经推翻了这个长期持有的概念,并表明引用计数可以像危险指针一样可扩展,危险指针是最常见的手动技术之一。尽管有这些巨大的改进,但这些方案与更快的手动技术(如基于时期的回收(EBR))之间的性能差距仍高达2倍或更多。在这项工作中,我们首先提出这些想法,并表明在许多情况下,自动引用计数实际上可以像最快的手动SMR技术一样快。我们概括了我们以前的并发延迟引用计数(CDRC)算法,以获得一种方法,用于将任何标准的手动SMR技术转换为具有类似性能的自动引用计数技术。我们的第二个贡献是扩展了这个框架,以支持弱指针,这是引用计数指针,自动打破指针周期不贡献的引用计数,从而解决了一个常见的弱点,引用计数垃圾回收。我们的C++库实现的实验表明,我们的自动技术与他们的手动同行,我们的弱指针实现优于最知名的原子弱指针库的数量级高线程数。总之,我们表明,可以实现自动存储管理的易用性,而不显着的成本,实际性能或一般适用性。
2022-04-12 cs.DC
Native Dual Pools or Shared Paging? Memory Organization for Concurrent Hybrid LLM Serving
Electronics and Telecommunications Research Institute (ETRI)(电子电信研究所)
该研究对比了四种内存组织方案,优化混合LLM服务的内存管理,发现S0-S1-S2优化可提升吞吐量与完成时间,D0性能随内存等因素变化,为相关内存管理设计提供依据。
2026-10-15 cs.DC
Lock-free Concurrent Data Structures
并发数据结构是并行编程的数据共享方面。数据结构为程序提供了存储数据的方法,但也为程序提供了访问和操作这些数据的操作。这些操作是通过必须高效的算法实现的。在顺序设置中,数据结构对于相应计算的性能至关重要。在并行编程环境中,它们的重要性变得更加关键,因为越来越多地使用数据和资源共享来利用并行。本章的第一个也是主要目标是提供足够的背景知识和直观性,以帮助感兴趣的读者在无锁数据结构的复杂研究领域中导航。第二个目标是让程序员熟悉这个主题,从而允许她使用真正的并发方法。
2013-02-12 cs.DC cs.DS cs.PL
Concurrent Reference Counting and Resource Management in Wait-free Constant Time
实现并发程序时的一个常见问题是有效地防止读取然后使用资源的进程之间的不安全竞争(例如,存储器块、文件描述符或网络连接)和其它进程,这些进程同时被销毁然后销毁相同的资源。这样的读-销毁竞争可以用锁来保护,或者用无锁的解决方案来保护,比如危险指针或读-复制-更新(RCU)。在本文中,我们描述了一种方法,用于保护读销毁比赛与预期的恒定时间开销,$O(P^2)$空间和$O(P^2)$延迟销毁,只有一个字的原子内存操作(读,写,CAS)。它基于一个有四个原语的接口,一个获取-释放对用于保护访问,一个退出-弹出对用于延迟销毁直到安全。我们称之为获取-退休接口。使用获取-引退接口,我们为三个常见用例开发了简单的实现:(1)应用程序到堆栈和队列的内存回收,(2)引用计数对象,以及(3)通过移动,复制和析构的所有权管理对象。前两个结果显着改善了以前的结果,第三个应用程序是原始的。重要的是,所有操作都预期有恒定的时间开销。
2020-02-29 cs.DC
TaskUniVerse: A Task-Based Unified Interface for Versatile Parallel Execution
基于任务的并行编程在并行编程的效率、性能、生产力和可扩展性等方面都表现出了竞争力。不同的软件开发框架使用不同的方法来向程序员提供这些结果,同时使底层硬件架构对她透明。然而,由于程序在这些框架之间是不可移植的,因此使用一个框架或另一个框架仍然是程序员的重要决定,程序员关心的是程序的可扩展性,自适应性,可维护性和互操作性。在这项工作中,我们提出了一个统一的编程接口,程序员可以使用不同的基于任务的并行框架透明地工作。在这种方法中,我们抽象的任务为基础的并行编程的共同概念,并提供给程序员在一个单一的编程接口统一的所有框架。我们已经通过运行程序来测试该接口,该程序在针对共享和分布式内存架构和加速器进行优化的框架内实现矩阵运算,而框架之间的合作是在外部配置的,无需修改程序。进一步可能的扩展的接口和未来的潜在研究也被描述。
2017-05-08 cs.DC
Delay-Free Concurrency on Faulty Persistent Memory
非易失性存储器(NVM)承诺持久的主存储器,即使断电也能保持正确。这引发了一系列研究算法,可以从系统崩溃中恢复。由于高速缓存预计将保持易失性,因此必须重新设计并发数据结构和算法,以保证它们在系统崩溃后保持一致的状态,并且在恢复时可以继续执行。然而,在每个并发数据结构或算法可以用于NVM体系结构之前对其进行重新设计的前景是令人生畏的。在本文中,我们提出了一个结构,采取任何并发程序的读,写和CAS到共享内存,并使其持久化,即,可以在一个或多个进程出现故障并必须重新启动后继续。重要的是,转换后的算法具有恒定的计算延迟(将每个进程上的指令计数保留在恒定因子内),以及恒定的恢复延迟(进程可以在恒定数量的指令中从故障中恢复)。我们首先展示了一个简单的变换,然后提出优化,使其更实用,允许权衡更好的常数因子的计算延迟,有时增加恢复延迟。我们还提供了一个优化的转换,适用于任何规范化的无锁数据结构,从而允许更有效的构造一个大类的并发算法。我们实验性地通过将它们应用于队列来评估我们的转换。
2020-06-18 cs.DC
Dynamic Checking of Safe Concurrent Memory Access using Shared Ownership
在共享存储器并发编程中,可以使用诸如监视器或通道之类的同步机制来保护共享资源。然而,这些机制和它们所保护的资源之间的联系只是隐含地给出的;这使得程序员很难正确地应用这些机制,编译器也很难检查资源是否得到了适当的保护。本文提出了一种自动检查共享内存是否被正确访问的机制,使用一种称为共享所有权的方法。与传统的所有权相比,共享所有权允许多个所有者拥有资源,从而提供了更大的灵活性。在此方法的基础上,我们定义了一个抽象的资源访问模型,提供操作来管理数据依赖关系,以及共享和访问权限的转移。该模型是严格定义的使用正式的语义,并显示是免费的数据竞争。当模拟模型和程序执行时,此属性可用于检测不安全的内存访问。该方法的表现力和效率证明了各种程序使用常见的同步机制。
2014-07-04 cs.DC cs.SE
Concurrent Deterministic Skiplist and Other Data Structures
Illinois Institute of Technology(伊利诺伊理工学院);Riken Chicago(理化学研究所芝加哥分所)
本文提出了一种并发确定性跳表及其他数据结构的实现,旨在通过减少远程NUMA节点的内存访问来提高内存性能。
2026-08-12 cs.DC cs.DS cs.PF
Inferring Fences in a Concurrent Program Using SC proof of Correctness
大多数并发程序的证明系统假设底层的内存模型是顺序一致的(SC),这一假设不适用于现代多核处理器。出于性能原因,这些处理器实现了宽松的内存模型。作为这种放松的结果,一个程序,在SC内存模型上被证明是正确的,可能会错误地执行。为了保证其在松弛条件下的正确性,在代码中插入了栅栏指令。在本文中,我们表明,SC证明的算法的正确性,在[Sou84]的证明系统中进行,确定每个线程的指令排序足够的SC证明。此外,为了在底层松弛存储器模型上正确地执行该算法,通过插入栅栏指令仅尊重这些排序就足够了。
2013-04-10 cs.DC cs.LO
Bridging Cache-Friendliness and Concurrency: A Locality-Optimized In-Memory B-Skiplist
本文提出一种局部性优化的并发内存 B-skiplist,通过自顶向下单趟插入算法与并发控制方案提升缓存局部性,在 128 线程下吞吐量较现有并发 Skiplist 提升 2x-9x,且延迟显著降低。
2025-09-16 cs.DC
A Concurrent Language with a Uniform Treatment of Regions and Locks
程序设计语言研究的一个挑战是设计和实现多线程低级语言,为存储器安全和数据竞争提供静态保证。为了实现这一目标,我们提出了一个并发语言采用安全区域为基础的存储管理和层次锁定的区域。区域和锁都是统一处理的,并且语言支持所有权转移,区域的早期释放和以安全的方式提前释放锁。
2010-02-04 cs.DC cs.PL
Parallel Work Inflation, Memory Effects, and their Empirical Analysis
在本文中,我们提出了一个经验的方法来评估并行代码的性能。我们的方法是基于一个简单的想法,这是令人惊讶的有效帮助确定性能不佳的原因,如高并行化开销,缺乏足够的并行性,和内存的影响。我们的方法只依赖于基线顺序程序的运行时间的测量,并行程序的运行时间,并行程序的单处理器运行时间,以及处理器空闲等待工作的总时间。在我们提出的方法中,我们建立了一个平等的观察到的并行加速和三个术语,我们称之为并行工作,空闲时间,和工作通货膨胀,除了工作通货膨胀的所有条款可以凭经验测量,精度。然后,我们使用等式来计算难以测量的工作膨胀项,其中包括由于并行执行而增加的通信成本和内存效应。通过隔离性能差的主要因素,我们的方法使程序员能够将责任归咎于代码的某些属性,如并行粒度,并行量和内存使用。我们提出了一个数学模型,灵感来自工作跨度模型,使我们能够证明我们的测量的解释。我们还介绍了一种方法,以帮助程序员可视化的相对影响的各种原因的性能不佳和缩放趋势的原因性能不佳。我们的方法适合在最先进的分析和可视化工具之间的最佳点。我们说明了我们的方法,通过几个实证研究,我们描述了一些实验,强调的照顾,需要准确地解释加速图。
2017-09-13 cs.DC
Concurrent Fixed-Size Allocation and Free in Constant Time
我们的目标是有效地解决动态内存分配问题,在并发设置的进程异步运行。在$p$进程上,我们可以支持分配和释放固定大小的块,其中$O(1)$为每个操作的最坏情况时间,$Θ(p^2)$附加空间开销,并且仅使用单个字的读、写和CAS。虽然许多算法依赖于具有恒定时间的固定大小的分配和释放,我们提出了这两个操作的第一个实现,这是恒定的时间与合理的空间开销。
2020-08-10 cs.DC
Maintenance of Strongly Connected Component in Shared-memory Graph
在本文中,我们提出了一个在线的全动态算法,以维护强连通组件的有向图在共享存储器结构。边和顶点通过固定数量的线程同时添加或删除。据我们所知,这是第一个提出使用线性并发有向图的工作,并且使用有序和无序的基于列表的集合来构建。我们提供了一个经验比较顺序和粗粒度。结果表明,根据不同的工作负载分布和应用程序,我们的算法的吞吐量增加了3到6倍。我们相信在线图有巨大的应用。最后,我们展示了如何将该算法扩展到在线图中的社区发现。
2018-04-10 cs.DC
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
Regional Consistency: Programmability and Performance for Non-Cache-Coherent Systems
并行程序员面临着可编程性和性能这两个经常不可调和的目标。HPC系统使用分布式存储器来实现可扩展性,从而牺牲了共享存储器编程模型的可编程性优势。此外,异构体系结构的快速采用(通常具有非高速缓存一致性存储器系统)进一步增加了支持共享存储器编程模型的挑战。我们的主要目标是定义一个内存一致性模型,提出了熟悉的基于线程的共享内存编程模型,但允许良好的应用程序性能的非缓存一致性系统,包括分布式内存集群和基于加速器的系统。我们提出了区域一致性(RegC),一个新的一致性模型,实现这一目标。在多达256个处理器的代表性基准测试的结果表明,在我们的原型分布式共享内存系统的背景下,RegC的潜力。
2013-01-18 cs.DC
DeltaTree: A Practical Locality-aware Concurrent Search Tree
作为节能计算中的其他基本编程抽象,搜索树被期望同时支持高并行性和数据局部性。然而,现有的高度并发的搜索树,如红黑树和AVL树不考虑数据的局部性,而现有的局部感知的搜索树,如那些基于van Emde Boas布局(vEB为基础的树),不支持并发(更新)操作。本文介绍了DeltaTree,一个实用的本地感知并发搜索树,结合了本地优化技术从基于vEB的树和并发优化技术从非阻塞高度并发搜索树。DeltaTree是DeltaNode的$k$ -ary面向叶子的树,其中每个DeltaNode是具有van Emde Boas布局的大小固定的树容器。DeltaTree的搜索、插入和删除操作的预期内存传输成本为$O(\log_B N)$,其中$N, B$分别是理想缓存模型中的树大小和未知内存块大小。DeltaTree的搜索操作是无等待的,为搜索操作提供优先通道,搜索操作是搜索树中的主要操作。它的插入和{ \em删除}操作对其他搜索、插入和删除操作是非阻塞的,但它们可能偶尔会被维护操作阻塞,这些维护操作有时会被触发以保持DeltaTree处于良好状态。我们的实验评估使用最新实现的AVL,红-黑,投机友好的树从Synchrobench基准测试表明,DeltaTree是5倍以上的搜索操作,更新操作时,更新竞争不是太高的速度比所有三个并发搜索树快1.6倍。
2013-12-09 cs.DC
The ERA Theorem for Safe Memory Reclamation
并发数据结构的安全内存回收(SMR)方案提供了三个理想属性之间的权衡:易于集成,鲁棒性和适用性。在本文中,我们严格定义SMR和这三个属性,我们提出了ERA定理,断言任何SMR计划只能提供最多两个三个属性。
2022-11-08 cs.DC
RECIPE : Converting Concurrent DRAM Indexes to Persistent-Memory Indexes
我们提出了食谱,一个原则性的方法,用于将并发DRAM索引转换为持久性内存(PM)的崩溃一致性索引。Recipe背后的主要观点是,当PM中使用相同的索引时,可以通过对崩溃一致性的微小更改来转换由某类并发内存索引提供的隔离。我们提出了一组条件,使这类DRAM索引的识别,并采取行动将每个索引转换为持久性。基于这些条件和转换动作,我们将基于B+树、尝试、基数树和哈希表的五种不同的DRAM索引修改为它们的崩溃一致性PM对应物。这种转换所涉及的工作量很小,只需要30-200行代码。我们评估了英特尔DC持久内存上转换后的PM索引,发现它们在多线程工作负载中的性能最高可达手工制作的最先进PM索引的5.2倍。例如,我们构建了P-CLHT,这是CLHT哈希表的PM实现,只修改了30个字节。当运行YCSB工作负载时,P-CLHT的性能比最先进的PM哈希表Cacheline-Conscious Extendible Hashing(CCEH)高2.4倍。
2019-11-08 cs.DB cs.DC cs.DS
Optimism for Boosting Concurrency
现代并发编程受益于大量的同步技术。这些技术包括传统的悲观锁定,以及基于条件同步原语或事务内存的乐观技术。然而,目前尚不清楚这些方法中哪种更好地利用了多核固有的并发性。在本文中,我们比较的并发水平,可以通过转换一个顺序的程序到一个并发使用乐观或悲观的技术。为了建立这样的实现公平的比较,我们引入了一个新的并发程序的正确性标准,定义独立的同步技术,他们使用。我们将程序的并发性视为其接受并发调度的能力,这是一个受数据库和事务内存理论启发的度量。我们表明,悲观锁可以提供严格更高的并发性比事务的一些应用程序,而事务可以提供严格更高的并发性比悲观锁的其他。最后,我们表明,结合这两种同步技术的好处,可以提供严格的并发性比他们单独。我们提出了一个基于列表的集合算法,在这个意义上,它接受所有正确的并发时间表是最优的。正如我们通过实验所示,并发性方面的最优性反映在可伸缩性方面。
2015-10-13 cs.DC
Arcadia: A Fast and Reliable Persistent Memory Replicated Log
字节可寻址持久存储器(PMEM)的性能特性有可能在广泛的应用范围内显着提高系统性能。但是持久存储器给程序员带来了相当大的新挑战:只有8字节的写原子性,乱序刷新和节点故障限制的可用性。通过仔细地对存储操作的顺序进行排序,并在每个排序点插入显式的刷新和栅栏操作,可以直接使用PMEM的原子性和排序约束。但这是乏味的,而且容易出错:太多的刷新操作会使PMEM的性能优势失效,即使大量使用,也很难证明给定的程序是崩溃一致的。日志记录是处理这些问题的一个很好的抽象,但是之前关于PMEM日志记录的工作并没有成功地隐藏PMEM的特性。此外,日志接口和设计中的缺点已经阻止了完全PMEM性能的实现。我们相信,在提供完整性能的同时向程序员隐藏特性的日志设计是成功的关键。在本文中,我们提出了阿卡迪亚的设计和实现,一个通用的复制日志PMEM来解决这些问题。Arcadia处理日志记录的原子性、完整性和复制,以减轻程序员的负担。我们的设计有几个新颖的方面,包括具有有序提交的并发日志写入、本地和远程PMEM写入的原子性和完整性原语,以及基于频率的日志强制策略,用于提供低开销持久性,并保证未提交记录的有界丢失。我们的评估表明,Arcadia的性能比最先进的PMEM日志(如PMDK的libpmemlog、FLEX和Query Fresh)高出数倍,同时提供了更强的日志记录持久性保证。我们希望阿卡迪亚成为领先的现成的PM…
2022-06-24 cs.DC cs.PF
Order out of Chaos: Proving Linearizability Using Local Views
证明高度并发数据结构(例如使用乐观并发控制的数据结构)的线性化是一项具有挑战性的任务。主要的困难在于推理线程获得的内存视图,因为当它们执行时,线程从不同的时间点观察不同的内存片段。直到今天,每一个线性化证明都是从零开始解决这个挑战的。我们提出了一个统一的证明参数的正确性的非同步遍历,并将其应用于证明线性化的几个高度并发的搜索数据结构,包括乐观的自平衡二叉搜索树,懒惰列表和无锁跳表。我们的框架利用{ \em顺序推理}关于线程的视图,考虑线程,如果它遍历数据结构没有其他操作的干扰。我们的主要贡献是显示沿搜索路径的可达性的属性可以推导出并发遍历从这样的无干扰遍历,当某些直观的条件得到满足。基于这种\emph{local view arguments}的遍历的正确性大大简化了线性化证明。为了应用我们的框架,用户证明数据结构满足两个条件:(1)存储器上的顺序的非循环性,即使在跨中间存储器状态考虑时也是如此,以及(2)保留搜索路径到被干扰写入修改的位置。建立的条件,以及充分的线性化证明,利用我们的证明论点,减少到简单的并发推理。其结果是一个清晰和可理解的正确性证明,并阐明了几个现有的数据结构的基础上的共同模式。
2018-08-05 cs.DC
Shared Memory-contention-aware Concurrent DNN Execution for Diversely Heterogeneous System-on-Chips
Colorado School of Mines(科罗拉多矿业学院)
针对多DNN并发推理的异构SoC,提出HaX-CoNN调度方案,考虑层特征、共享内存争用和加速器转换,在Orin、Xavier和Snapdragon 865上实现内存争用降低45%,延迟和吞吐量分别提升32%和29%。
2024-02-07 cs.AI cs.DC cs.PF
Defining and Verifying Durable Opacity: Correctness for Persistent Software Transactional Memory
非易失性存储器(NVM),又称持久性存储器,是一种新的存储器范例,即使在断电后也能保存其内容。NVM的预期无处不在,激发了人们对设计新概念的兴趣,以确保并发编程抽象在持久性方面的正确性。到目前为止,这已经导致了许多持久并发数据结构的设计,这些数据结构是为了满足与正确性相关的概念:持久线性化。本文将持久并发正确性的原理转移到软件事务存储器(STM)领域。软件事务存储器算法允许对共享状态的并发访问。像并发数据结构的线性化一样,不透明性是STM正确性的既定概念。首先,我们提供了一个新的定义持久的不透明度扩展不透明度处理崩溃和恢复的NVM的上下文中。其次,我们开发了一个持久的不透明版本的现有STM算法,即transmitted互斥锁(TML)。第三,我们设计了一个持久的不透明性的证明技术的基础上改进TML和持久的不透明性的操作特性,通过适应TMS 2规范。最后,我们应用这种证明技术表明,TML的持久版本确实是持久不透明的。正确性证明在Isabelle中是机械化的。
2020-04-17 cs.DC cs.LO cs.PL
Concurrent Processing Memory
本研究提出一种内嵌处理能力与近邻连接的并发处理内存,通过多代器件验证其细粒度大规模SIMD方案,可大幅降低各类数组操作的指令周期数,兼容传统架构且具备实用落地路径。
2026-08-03 cs.AR cs.DC cs.PF
A Non-blocking Buddy System for Scalable Memory Allocation on Multi-core Machines
核心内存分配组件的常见实现(如Linux buddy系统)通过自旋锁同步线程来处理并发分配/释放请求。很明显,这种方法不适合大线程数的扩展,这个问题已经在文献中通过引入分层分配服务或复制核心分配器(分层架构中最底层的分配器)来解决。这两种解决方案都倾向于减少对每个单独的核心分配器的实际并发访问的压力。在这篇文章中,我们探讨了一种替代方法,内存分配/释放的可扩展性,它仍然可以结合这些文献的建议。冲突检测依赖于读-修改-写(RMW)类中的常规原子机器指令。此外,除了提高可伸缩性和性能之外,它还可以避免浪费线程的自旋锁操作的时钟周期,这些线程原则上可以完全并发地执行其内存分配/释放。因此,它是弹性的性能下降-在面对并发访问-独立的处理内存块的碎片的当前水平。
2018-05-19 cs.DC cs.DS
History-Independent Concurrent Hash Tables
Technion, Israel(以色列理工学院);Stony Brook University, USA(纽约州立大学石溪分校);New York University, USA(纽约大学);Tel-Aviv University, Israel(特拉维夫大学)
本文研究了与历史无关的并发字典,特别是哈希表,建立了其空间需求的内在界限。提出了一种无锁的与历史无关的并发哈希表,基于Robin Hood哈希,每个内存单元存储两个元素和两个位,并证明了其空间效率。
2025-03-26 cs.DC cs.DS
BOOST: Concurrent Access to Host Memory and HBM to Accelerate LLM Inference
Georgia Tech(佐治亚理工学院);Nvidia Research(英伟达研究院);Stanford(斯坦福大学)
BOOST通过波次感知的页面分配和运行时数据管理,实现GPU对HBM和主机内存的并发按比例访问,无需修改内核即可提升LLM推理吞吐量,在Grace Hopper上平均提升31%。
2026-09-15 cs.AR cs.DC cs.LG
A Practical Analysis of Rust's Concurrency Story
正确的并发程序很难编写;当多个线程改变共享数据时,它们可能会丢失写入、损坏数据或产生不稳定的程序行为。虽然并发性的许多数据竞争问题可以通过在代码中放置锁来避免,但这些问题通常会使程序执行串行化,并且会显着降低性能关键型应用程序的速度。程序员也会犯错误,并且经常忘记执行较少的代码路径中的锁,这导致程序仅在极少数情况下行为不当。Rust是Mozilla最近推出的一种程序设计语言,它试图通过在编译时检测数据竞争来解决这些相互交织的问题。Rust的类型系统编码了数据结构在类型系统中的线程之间共享的能力,这反过来允许编译器拒绝线程直接改变共享状态而没有锁或其他保护机制的程序。在这项工作中,我们研究了Rust类型系统的这一方面如何影响并发数据结构的开发和改进,以及它适应正确性由低级不变量保证的情况的能力(例如,在无锁算法中)不能直接在类型系统本身中表达。我们详细介绍了并发无锁散列表的实现,以描述Rust语言的这些特性。我们的代码可以在https://github.com/saligrama/concache上公开获得,并且是Rust语言中最快的并发散列表之一,这导致了并发程序中的瓶颈。
2019-04-27 cs.DC cs.PL
Flat-Combining-Based Persistent Data Structures for Non-Volatile Memory
平面合并(Flat Combining,FC)是一种同步模式,其中单个线程持有全局锁,收集多个线程访问并发数据结构的请求,并将它们的合并请求应用于该结构。虽然FC是顺序的,但它显著减少了同步开销和缓存无效,因此通常提供比无锁实现更好的性能。非易失性存储器(NVM)技术的出现增加了对持久并发对象开发的兴趣。这些对象能够从系统故障中恢复,并通过在NVM中保留它们的状态并在恢复时根据需要修复它来确保一致性。特别令人感兴趣的是可检测的对象,除了确保一致性之外,还允许恢复代码推断失败的操作是否在崩溃之前生效,如果生效,则获得其响应。在这项工作中,我们提出了第一个基于FC的持久化对象实现。具体来说,我们介绍了一个可检测的FC的并发后进先出堆栈,并发FIFO队列,和双端队列的实现。我们的经验评估确定,由于平面组合,新的实现需要比竞争算法少得多的昂贵的持久性指令,因此能够显着优于它们。
2021-12-08 cs.DC cs.OS
ZeroLock: Concurrent Memory-Efficient LLM Training via Modular Update Decoupling
Southern University of Science and Technology(南方科技大学);Montclair State University(蒙特克莱尔州立大学)
针对边缘LLM微调的BP训练存在更新锁定瓶颈,本研究提出ZeroLock无BP算法,通过模块化更新解耦突破局限,经实验验证可降内存26.5%、提吞吐量4.9%。
2026-08-11 cs.DC cs.LG
Introducing Molly: Distributed Memory Parallelization with LLVM
为分布式内存机器编程一直是一项乏味的任务,但这是必要的,因为编译器本身还没有足够的能力为这样的机器进行优化。Molly是LLVM编译器工具链的一个扩展,如果程序被组织在静态确定的循环控制流中,它能够分发和重组工作负载和数据。这些被表示为多面体整数点集,允许应用于它们的程序转换。程序员可以根据需要声明内存分布和布局,并自动生成必要的异步MPI通信。主要动机是在IBM Blue Gene/Q超级计算机上运行Lattice QCD模拟,但由于实施尚未完成,本文展示了Conway生命游戏的功能。
2014-09-07 cs.DC cs.PL
PhoenixOS: Concurrent OS-level GPU Checkpoint and Restore with Validated Speculation
本文提出 PhoenixOS,通过基于 kernel 启动参数的推测与二进制插桩验证检测 GPU 内存访问,并以软写时复制等软件机制实现并发 OS 级 GPU C/R,性能显著优于现有系统。
2025-09-01 cs.DC cs.OS
COSM: A Cooperative Scheduling Framework for Concurrent PIM and CPU Execution on Mobile Devices
Shanghai Jiao Tong University(上海交通大学);Shanghai Qi Zhi Institute(上海人工智能实验室);ETH Zurich(苏黎世联邦理工学院);Tsinghua University(清华大学);Beihang University(北京航空航天大学);Huawei Technologies Co., Ltd(华为技术有限公司)
提出COSM框架,通过低干扰PIM控制接口和空闲感知调度方法,实现移动设备上PIM与CPU的并发执行,提升PIM吞吐量达2.8倍且CPU性能损失小于2.0%。
2026-07-01 cs.AR cs.DC
Publish on Ping: A Better Way to Publish Reservations in Memory Reclamation for Concurrent Data Structures
本文提出 publish-on-ping 内存回收方法,结合 POSIX 信号与延迟回收,让线程按需发布保留信息以替代风险指针,并构建 EpochPOP 变体,在多种数据结构和负载下实现 1.2-4 倍性能提升。
2025-06-04 cs.DC cs.PL
Encoding fairness in a synchronous concurrent program algebra: extended version with proofs
并发程序精化代数为支持共享内存并发程序的组合式机械推理提供了一个合适的基础,例如,它支持Jones的依赖/保证方法。该代数利用了Aczel的并发跟踪模型和Milner的SCCS相似的同步并行操作符。本文着眼于在程序代数中定义一种形式的公平性。编码允许一个原因,公平执行一个单独的进程,以及定义公平并行的基本并行运算符,其中没有公平性的假设。建立了支持公平性和公平并行的代数理论。
2018-05-04 cs.DC cs.LO
Worst-Case Input Generation for Concurrent Programs under Non-Monotone Resource Metrics
本文提出首个针对并发程序在内存等非单调资源度量下的可靠且相对完备的最坏情况输入生成算法,通过资源标注会话类型与符号执行识别最坏执行路径,并用Web服务器内存案例验证其有效性。
2024-12-21 cs.DC cs.LO cs.PL
Reducing Opacity to Linearizability: A Sound and Complete Method
事务内存是一种代表程序员管理线程同步的机制,以便代码块以原子性的假象执行。事务内存的主要安全标准是不透明性,它定义了串行化并发事务的条件。证明不透明性是复杂的,因为它允许并发事务观察不同的内存状态,而TM实现通常基于一个共享存储。本文提出了一个健全的和完整的方法,基于粗粒度的抽象,减少证明的不透明性相对简单的正确性条件:线性化。我们使用我们的方法来验证TML和NORec从文献中,并显示我们的技术扩展到宽松的内存模型,表明这两个TSO下是不透明的,而不需要额外的围栏。我们的方法还阐明了TM设计在更高的抽象层次,作为一个应用程序,我们开发了一个变化的NORec与快速路径读取事务。我们所有的证明都是机械化的,无论是在Isabelle定理证明器还是PAT模型检查器中。
2016-10-04 cs.DC cs.DS cs.LO