中文

NB-FEB:一种用于并行编程的易用且可扩展的通用同步原语

分布式、并行与集群计算 2008-11-11 v1 硬件体系结构 数据结构与算法

摘要

本文探讨了能够为大规模众核架构支持可扩展线程同步的通用同步原语问题。在向具有数千个核心的众核架构演进过程中,像CAS和LL/SC这样已广泛应用于传统架构的通用同步原语预计将达到其可扩展性极限。我们引入了一种非阻塞满/空位原语(non-blocking full/empty bit primitive,简称NB-FEB),作为在众核架构上进行并行编程的一种有前景的同步原语。我们表明,NB-FEB原语是通用的、可扩展的、可行的且易于使用的。NB-FEB与寄存器结合,可以解决任意数量进程的共识问题(通用性)。NB-FEB是可组合的,即其对同一内存位置的内存请求可以合并为仅一个内存请求,从而减轻由于同步“热点”导致的性能下降(可扩展性)。由于NB-FEB是原始满/空位的一种变体,它总是返回一个值而不是等待条件标志,因此它与已在许多计算机系统中实现的原始满/空位一样可行(可行性)。原始满/空位作为用于快速生产者-消费者同步的专用原语而闻名,并已广泛应用于特定应用领域。在本文中,我们表明NB-FEB可以很容易地作为通用原语部署。使用NB-FEB,我们构建了一个名为NBFEB-STM的非阻塞软件事务内存系统,可用于方便地处理并发线程。NBFEB-STM具有空间效率:由NN个并发线程/事务更新的每个对象的空间复杂度为Θ(N)\Theta(N),是最优的。

关键词

引用

@article{arxiv.0811.1304,
  title  = {NB-FEB: An Easy-to-Use and Scalable Universal Synchronization Primitive for Parallel Programming},
  author = {Phuong Hoai Ha and Philippas Tsigas and Otto J. Anshus},
  journal= {arXiv preprint arXiv:0811.1304},
  year   = {2008}
}