Abstract
Practical and efficient algorithms for concurrent data structures are difficult to construct and modify. Algorithms in the literature are often optimized for a specific setting, making it hard to separate the algorithmic insights from implementation details. The goal of this work is to systematically construct algorithms for a concurrent data structure starting from its sequential implementation. Towards that goal, we follow a construction process that combines manual steps corresponding to high-level insights with automatic exploration of implementation details. To assist us in this process, we built a new tool called Paraglider. The tool quickly explores large spaces of algorithms and uses bounded model checking to check linearizability of algorithms.
Starting from a sequential implementation and assisted by the tool, we present the steps that we used to derive various highly-concurrent algorithms. Among these algorithms is a new fine-grained set data structure that provides a wait-free contains operation, and uses only the compare-and-swap (CAS) primitive for synchronization.
- Abrial, J.-R., and Cansell, D. Formal construction of a non-blocking concurrent queue algorithm (a case study in atomicity). J. UCS 11, 5 (2005), 744--770.Google Scholar
- Amit, D., Rinetzky, N., Reps, T. W., Sagiv, M., and Yahav, E. Comparison under abstraction for verifying linearizability. In CAV (2007), vol. 4590 of LNCS, Springer, pp. 477--490. Google Scholar
Digital Library
- Bansal, S., and Aiken, A. Automatic generation of peephole superoptimizers. SIGOPS Oper. Syst. Rev. 40, 5 (2006), 394--403. Google Scholar
Digital Library
- Bar-David, Y., and Taubenfeld, G. Automatic discovery of mutual exclusion algorithms. In Proc. of the symp. on Principles of Distributed Computing (2003), pp. 305--305. Google Scholar
Digital Library
- Burckhardt, S., Alur, R., and Martin, M. M. K. Bounded model checking of concurrent data types on relaxed memory models: A case study. In CAV (2006). Google Scholar
Digital Library
- Burckhardt, S., Alur, R., and Martin, M. M. K. Checkfence: checking consistency of concurrent data types on relaxed memory models. SIGPLAN Not. 42, 6 (2007), 12--21. Google Scholar
Digital Library
- Colvin, R., Groves, L., Luchangco, V., and Moir, M. Formal verification of a lazy concurrent list-based set algorithm. In CAV (2006). Google Scholar
Digital Library
- Doherty, S., Detlefs, D. L., Groves, L., Flood, C. H., Luchangco, V., Martin, P. A., Moir, M., Shavit, N., and Guy L. Steele, J. Dcas is not a silver bullet for nonblocking algorithm design. In SPAA (2004), pp. 216--224. Google Scholar
Digital Library
- Elmas, T., Tasiran, S., and Qadeer, S. Vyrd: verifying concurrent programs by runtime refinement-violation detection. In PLDI (2005), pp. 27--37. Google Scholar
Digital Library
- Flanagan, C. Verifying commit-atomicity using model-checking. In SPIN (2004).Google Scholar
- Harris, T., and Fraser, K. Language support for lightweight transactions. SIGPLAN Not. 38, 11 (2003), 388--402. Google Scholar
Digital Library
- Harris, T. L. A pragmatic implementation of non-blocking linked-lists. In DISC '01: Proc. of conf. on Distributed Computing (London, UK, 2001), Springer, pp. 300--314. Google Scholar
Digital Library
- Heller, S., Herlihy, M., Luchangco, V., Moir, M., Scherer, W., and Shavit, N. A lazy concurrent list-based set algorithm. In Proc. of conf. On Principles Of Distributed Systems (OPODIS 2005) (2005), pp. 3--16. Google Scholar
Digital Library
- Herlihy, M. A methodology for implementing highly concurrent data objects. ACM Trans. Program. Lang. Syst. 15, 5 (1993), 745--770. Google Scholar
Digital Library
- Herlihy, M. P., and Wing, J. M. Linearizability: a correctness condition for concurrent objects. Trans. on Prog. Lang. and Syst. 12, 3 (1990). Google Scholar
Digital Library
- Kung, H. T., and Robinson, J. T. On optimistic methods for concurrency control. ACM Trans. Database Syst. 6, 2 (1981), 213--226. Google Scholar
Digital Library
- Lamport, L. How to make a multiprocessor computer that correctly executes multiprocess progranm. IEEE Trans. Comput. 28, 9 (1979), 690--691. Google Scholar
Digital Library
- Michael, M. Personal communication.Google Scholar
- Massalin, H. Superoptimizer: a look at the smallest program. In ASPLOS-II: Proc. of conf. on Architectual support for programming languages and operating systems (1987), IEEE, pp. 122--126. Google Scholar
Digital Library
- Michael, M., and Scott, M. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In PODC (1996). Google Scholar
Digital Library
- Michael, M. M. High performance dynamic lock-free hash tables and list-based sets. In SPAA (2002), pp. 73--82. Google Scholar
Digital Library
- Papadimitriou, C. H. The serializability of concurrent database updates. J. ACM 26, 4 (1979), 631--653. Google Scholar
Digital Library
- Prakash, S., Lee, Y. H., and Johnson, T. A nonblocking algorithm for shared queues using compare-and-swap. IEEE Trans. Comput. 43, 5 (1994), 548--559. Google Scholar
Digital Library
- Solar-Lezama, A., Arnold, G., Tancau, L., Bodík, R., Saraswat, V. A., and Seshia, S. A. Sketching stencils. In PLDI (2007), pp. 167--178. Google Scholar
Digital Library
- Solar-Lezama, A., Rabbah, R. M., Bodík, R., and Ebcioglu, K. Programming by sketching for bit-streaming programs. In PLDI (2005), ACM, pp. 281--294. Google Scholar
Digital Library
- Solar-Lezama, A., Tancau, L., Bodík, R., Seshia, S. A., and Saraswat, V. A. Combinatorial sketching for finite programs. In ASPLOS (2006), pp. 404--415. Google Scholar
Digital Library
- Treiber, R. K. Systems programming: Coping with parallelism. Tech. Rep. RJ 5118, IBM Almaden Research Center, APR 1986.Google Scholar
- Vafeiadis, V., Herlihy, M., Hoare, T., and Shapiro, M. Proving correctness of highly-concurrent linearisable objects. In PPoPP (2006). Google Scholar
Digital Library
- Vechev, M. T., Yahav, E., Bacon, D. F., and Rinetzky, N. CGCExplorer: a semi-automated search procedure for provably correct concurrent collectors. In PLDI (2007), pp. 456--467. Google Scholar
Digital Library
- Wing, J. M., and Gong, C. Testing and verifying concurrent objects. J. Parallel Distrib. Comput. 17, 1-2 (1993), 164--182. Google Scholar
Digital Library
Index Terms
Deriving linearizable fine-grained concurrent objects
Recommendations
Deriving linearizable fine-grained concurrent objects
PLDI '08: Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and ImplementationPractical and efficient algorithms for concurrent data structures are difficult to construct and modify. Algorithms in the literature are often optimized for a specific setting, making it hard to separate the algorithmic insights from implementation ...
Looking for efficient implementations of concurrent objects
PaCT'11: Proceedings of the 11th international conference on Parallel computing technologiesAs introduced by Taubenfeld, a contention-sensitive implementation of a concurrent object is an implementation such that the overhead introduced by locking is eliminated in the common cases, i.e., when there is no contention or when the operations ...
Linearizable counting networks
SummaryThe counting problem requires n asynchronous processes to assign themselves successive values. A solution is linearizable if the order of the values assigned reflects the real-time order in which they were requested. Linearizable counting lies at ...







Comments