Abstract
Speculative execution is a promising approach for exploiting parallelism in many programs, but it requires efficient schemes for detecting conflicts between concurrently executing threads. Prior work has argued that checking semantic commutativity of method invocations is the right way to detect conflicts for complex data structures such as kd-trees. Several ad hoc ways of checking commutativity have been proposed in the literature, but there is no systematic approach for producing implementations.
In this paper, we describe a novel framework for reasoning about commutativity conditions: the commutativity lattice. We show how commutativity specifications from this lattice can be systematically implemented in one of three different schemes: abstract locking, forward gatekeeping and general gatekeeping. We also discuss a disciplined approach to exploiting the lattice to find different implementations that trade off precision in conflict detection for performance. Finally, we show that our novel conflict detection schemes are practical and can deliver speedup on three real-world applications.
- Synthetic maximum flow families. http://www.avglab.com/andrew/CATS/maxflow_synthetic.htm.Google Scholar
- A. Bondavalli, N. De Francesco, D. Latella, and G. Vaglini. Shared abstract data type: an algebraic methodology for their specification. In MFDBS 89, 1989. Google Scholar
Digital Library
- J. Burnim, G. Necula, and K. Sen. Specifying and checking semantic atomicity for multithreaded programs. In ASPLOS'11: Proceedings of the 16th International Conference on Architectural Support for Programming Languages and Operating Systems, 2011. Google Scholar
Digital Library
- B. D. Carlstrom, A. McDonald, C. Kozyrakis, and K. Olukotun. Transactional collection classes. In PPoPP, 2007. Google Scholar
Digital Library
- B. Demsky and P. Lam. Views: object-inspired concurrency control. In ICSE, 2010. Google Scholar
Digital Library
- K. P. Eswaran, J. N. Gray, R. A. Lorie, and I. L. Traiger. The notions of consistency and predicate locks in a database system. Commun. ACM, 19(11):624--633, 1976. Google Scholar
Digital Library
- A. V. Goldberg and R. E. Tarjan. A new approach to the maximum-flow problem. J. ACM, 35(4):921--940, 1988. Google Scholar
Digital Library
- J. Gray and A. Reuter. Transaction Processing: Concepts and Techniques. Morgan Kaufmann Publishers Inc., 1992. Google Scholar
Digital Library
- T. Harris and K. Fraser. Language support for lightweight transactions. In OOPSLA. Oct 2003. Google Scholar
Digital Library
- M. Herlihy and E. Koskinen. Transactional boosting: a methodology for highly-concurrent transactional objects. In PPoPP, 2008. Google Scholar
Digital Library
- M. Herlihy, V. Luchangco, and M. Moir. A flexible framework for implementing software transactional memory. In OOPSLA, 2006. Google Scholar
Digital Library
- M. Herlihy and J. E. B. Moss. Transactional memory: architectural support for lock-free data structures. In ISCA, 1993. Google Scholar
Digital Library
- M. P. Herlihy and J. M. Wing. Linearizability: a correctness condition for concurrent objects. TOPLAS, 12(3):463--492, 1990. Google Scholar
Digital Library
- D. Kim and M. Rinard. Verification of semantic commutativity conditions and inverse operations on linked data structures. In PLDI, 2011. Google Scholar
Digital Library
- E. Koskinen, M. Parkinson, and M. Herlihy. Coarse-grained transactions. In POPL, 2010. Google Scholar
Digital Library
- M. Kulkarni, M. Burtscher, R. Inkulu, K. Pingali, and C. Casçaval. How much parallelism is there in irregular applications? In PPoPP, 2009. Google Scholar
Digital Library
- M. Kulkarni, K. Pingali, G. Ramanarayanan, B. Walter, K. Bala, and L. P. Chew. Optimistic parallelism benefits from data partitioning. In ASPLOS, 2008. Google Scholar
Digital Library
- M. Kulkarni, K. Pingali, B. Walter, G. Ramanarayanan, K. Bala, and L. P. Chew. Optimistic parallelism requires abstractions. In PLDI, 2007. Google Scholar
Digital Library
- J. Larus and R. Rajwar. Transactional Memory (Synthesis Lectures on Computer Architecture). Morgan & Claypool Publishers, 2007. Google Scholar
Digital Library
- Y. Ni, V. Menon, A.-R. Adl-Tabatabai, A. L. Hosking, R. Hudson, J. E. B. Moss, B. Saha, and T. Shpeisman. Open nesting in software transactional memory. In PPoPP, 2007. Google Scholar
Digital Library
- C. H. Papadimitriou. The serializability of concurrent database updates. J. ACM, 26(4):631--653, 1979. Google Scholar
Digital Library
- L. Rauchwerger and D. Padua. The LRPD test: Speculative run-time parallelization of loops with privatization and reduction parallelization. In PLDI, 1995. Google Scholar
Digital Library
- P. M. Schwarz and A. Z. Spector. Synchronizing shared abstract types. ACM Trans. Comput. Syst., 2(3):223--250, 1984. Google Scholar
Digital Library
- B. Walter, K. Bala, M. Kulkarni, and K. Pingali. Fast agglomerative clustering for rendering. In Interactive Ray Tracing, 2008.Google Scholar
Cross Ref
- W. Weihl. Commutativity-based concurrency control for abstract data types. IEEE Transactions on Computers, 37(12), 1988. Google Scholar
Digital Library
Index Terms
Exploiting the commutativity lattice
Recommendations
Exploiting the commutativity lattice
PLDI '11: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and ImplementationSpeculative execution is a promising approach for exploiting parallelism in many programs, but it requires efficient schemes for detecting conflicts between concurrently executing threads. Prior work has argued that checking semantic commutativity of ...
Exploiting semantic commutativity in hardware speculation
MICRO-49: The 49th Annual IEEE/ACM International Symposium on MicroarchitectureHardware speculative execution schemes such as hardware transactional memory (HTM) enjoy low run-time overheads but suffer from limited concurrency because they rely on reads and writes to detect conflicts. By contrast, software speculation schemes can ...
Versioned boxes as the basis for memory transactions
Special issue: Synchronization and concurrency in object-oriented languagesIn this paper, we propose the use of Versioned Boxes, which keep a history of values, as the basis for language-level memory transactions. Unlike previous work on software transactional memory, in our proposal read-only transactions never conflict with ...







Comments