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 ScholarDigital Library
- Bansal, S., and Aiken, A. Automatic generation of peephole superoptimizers. SIGOPS Oper. Syst. Rev. 40, 5 (2006), 394--403. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- Colvin, R., Groves, L., Luchangco, V., and Moir, M. Formal verification of a lazy concurrent list-based set algorithm. In CAV (2006). Google ScholarDigital 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 ScholarDigital Library
- Elmas, T., Tasiran, S., and Qadeer, S. Vyrd: verifying concurrent programs by runtime refinement-violation detection. In PLDI (2005), pp. 27--37. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- Herlihy, M. A methodology for implementing highly concurrent data objects. ACM Trans. Program. Lang. Syst. 15, 5 (1993), 745--770. Google ScholarDigital 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 ScholarDigital Library
- Kung, H. T., and Robinson, J. T. On optimistic methods for concurrency control. ACM Trans. Database Syst. 6, 2 (1981), 213--226. Google ScholarDigital Library
- Lamport, L. How to make a multiprocessor computer that correctly executes multiprocess progranm. IEEE Trans. Comput. 28, 9 (1979), 690--691. Google ScholarDigital 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 ScholarCross Ref
- Michael, M., and Scott, M. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In PODC (1996). Google ScholarDigital Library
- Michael, M. M. High performance dynamic lock-free hash tables and list-based sets. In SPAA (2002), pp. 73--82. Google ScholarDigital Library
- Papadimitriou, C. H. The serializability of concurrent database updates. J. ACM 26, 4 (1979), 631--653. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- Wing, J. M., and Gong, C. Testing and verifying concurrent objects. J. Parallel Distrib. Comput. 17, 1-2 (1993), 164--182. Google ScholarDigital Library
Index Terms
- Deriving linearizable fine-grained concurrent objects
Recommendations
Deriving linearizable fine-grained concurrent objects
PLDI '08Practical 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