English
Related papers

Related papers: A more Pragmatic Implementation of the Lock-free, …

200 papers

As file systems are increasingly being deployed on ever larger systems with many cores and multi-gigabytes of memory, scaling the internal data structures of file systems has taken greater importance and urgency. A doubly-linked list is a…

Data Structures and Algorithms · Computer Science 2011-12-07 Nitin Garg , Ed Zhu , Fabiano C. Botelho

We propose a novel notion of pointer race for concurrent programs manipulating a shared heap. A pointer race is an access to a memory address which was freed, and it is out of the accessor's control whether or not the cell has been…

Programming Languages · Computer Science 2015-11-12 Frédéric Haziza , Lukáš Holík , Roland Meyer , Sebastian Wolff

Memory caches are being aggressively used in today's data-parallel frameworks such as Spark, Tez and Storm. By caching input and intermediate data in memory, compute tasks can witness speedup by orders of magnitude. To maximize the chance…

Distributed, Parallel, and Cluster Computing · Computer Science 2017-08-29 Yinghao Yu , Wei Wang , Jun Zhang , Khaled B. Letaief

This paper presents a new and practical approach to lock-free locks based on helping, which allows the user to write code using fine-grained locks, but run it in a lock-free manner. Although lock-free locks have been suggested in the past,…

Distributed, Parallel, and Cluster Computing · Computer Science 2022-02-01 Naama Ben-David , Guy E. Blelloch , Yuanhao Wei

A key part of implementing high-level languages is providing built-in and default data structures. Yet selecting good defaults is hard. A mutable data structure's workload is not known in advance, and it may shift over its lifetime - e.g.,…

Programming Languages · Computer Science 2017-08-09 Chao-Hong Chen , Vikraman Choudhury , Ryan R. Newton

The lock is a building-block synchronization primitive that enables mutually exclusive access to shared data in shared-memory parallel programs. Mutual exclusion is typically achieved by guarding the code that accesses the shared data with…

Distributed, Parallel, and Cluster Computing · Computer Science 2023-04-25 Vivek Shahare , Milind Chabbi , Nikhil Hegde

Index structures are important for efficient data access, which have been widely used to improve the performance in many in-memory systems. Due to high in-memory overheads, traditional index structures become difficult to process the…

Databases · Computer Science 2019-05-16 Pengfei Li , Yu Hua , Pengfei Zuo , Jingnan Jia

We present the Cuckoo Trie, a fast, memory-efficient ordered index structure. The Cuckoo Trie is designed to have memory-level parallelism -- which a modern out-of-order processor can exploit to execute DRAM accesses in parallel -- without…

Data Structures and Algorithms · Computer Science 2022-01-25 Adar Zeitak , Adam Morrison

Common implementations of core memory allocation components, like the Linux buddy system, handle concurrent allocation/release requests by synchronizing threads via spin-locks. This approach is clearly not prone to scale with large thread…

Distributed, Parallel, and Cluster Computing · Computer Science 2018-05-22 Romolo Marotta , Mauro Ianni , Alessandro Pellegrini , Andrea Scarselli , Francesco Quaglia

We present a randomized approach for wait-free locks with strong bounds on time and fairness in a context in which any process can be arbitrarily delayed. Our approach supports a tryLock operation that is given a set of locks, and code to…

Distributed, Parallel, and Cluster Computing · Computer Science 2022-11-01 Naama Ben-David , Guy E. Blelloch

Work-stealing is a widely used technique for balancing irregular parallel workloads, and most modern runtime systems adopt lock-free work-stealing deques to reduce contention and improve scalability. However, existing algorithms are…

Distributed, Parallel, and Cluster Computing · Computer Science 2026-03-09 Raja Sai Nandhan Yadav Kataru , Danial Davarnia , Ali Jannesari

Modern concurrent programming benefits from a large variety of synchronization techniques. These include conventional pessimistic locking, as well as optimistic techniques based on conditional synchronization primitives or transactional…

Distributed, Parallel, and Cluster Computing · Computer Science 2015-10-15 Vincent Gramoli , Petr Kuznetsov , Srivatsan Ravi

In this paper we present two analytical frameworks for calculating the performance of lock-free data structures. Lock-free data structures are based on retry loops and are called by application-specific routines. In contrast to previous…

Distributed, Parallel, and Cluster Computing · Computer Science 2016-11-18 Aras Atalar , Paul Renaud-Goud , Philippas Tsigas

Memory management is a critical component in almost all shared-memory, concurrent data structures and algorithms, consisting in the efficient allocation and the subsequent reclamation of shared memory resources. This paper contributes a…

Distributed, Parallel, and Cluster Computing · Computer Science 2017-12-19 Manuel Pöter , Jesper Larsson Träff

While the cost of computation is an easy to understand local property, the cost of data movement on cached architectures depends on global state, does not compose, and is hard to predict. As a result, programmers often fail to consider the…

Performance · Computer Science 2020-01-07 Tobias Gysi , Tobias Grosser , Laurin Brandner , Torsten Hoefler

Most work on the verification of concurrent objects for shared memory assumes sequential consistency, but most multicore processors support only weak memory models that do not provide sequential consistency. Furthermore, most verification…

Distributed, Parallel, and Cluster Computing · Computer Science 2016-04-25 Simon Doherty , John Derrick

Memory reclamation for lock-based data structures is typically easy. However, it is a significant challenge for lock-free data structures. Automatic techniques such as garbage collection are inefficient or use locks, and non-automatic…

Distributed, Parallel, and Cluster Computing · Computer Science 2017-12-05 Trevor Brown

Proving the linearizability of highly concurrent data structures, such as those using optimistic concurrency control, is a challenging task. The main difficulty is in reasoning about the view of the memory obtained by the threads, because…

Distributed, Parallel, and Cluster Computing · Computer Science 2018-08-07 Yotam M. Y. Feldman , Constantin Enea , Adam Morrison , Noam Rinetzky , Sharon Shoham

Developers of low-level systems code providing core functionality for operating systems and kernels must address hardware-level features of modern multicore architectures. A particular feature is pipelined "out-of-order execution" of the…

Logic in Computer Science · Computer Science 2024-07-31 Robert J. Colvin , Ian J. Hayes , Scott Heiner , Peter Höfner , Larissa Meinicke , Roger C. Su

The array is a fundamental data structure that provides an efficient way to store and retrieve non-sparse data contiguous in memory. Arrays are important for the performance of many memory-intensive applications due to the design of modern…

Programming Languages · Computer Science 2019-08-06 Beatrice à kerblom , Elias Castegren , Tobias Wrigstad