Existing parallel programming approaches require the programmer to manage concurrency directly, by creating and synchronizing parallel threads. Transactional coherence and consistency (TCC) offers a way to simplify parallel programming by executing all code within transactions. Such a system handles data synchronization correctly without programmer intervention.
To gain the benefits of this approach, the program must be decomposed into transactions. The authors of this paper describe two basic programming language constructs for decomposing programs into transactions: a loop conversion syntax and a general transaction-forking mechanism. With these constructs, writing correct parallel programs requires only small incremental changes to correct sequential programs. The performance of these programs can then easily be optimized based on a few simple techniques.
Section 1 of the paper is introductory. Section 2 provides an overview of the operation of a transactional parallel system. Section 3 presents transactional coherence and consistency programming techniques, and discusses correctness and performance tuning. In section 4, the use of these techniques in parallelizing a diverse set of applications is demonstrated. Section 5 discusses related work. Section 6 concludes the paper.
The authors work at the Computer Systems Laboratory at Stanford University. Their work was supported by US National Science Foundation (NSF) and Defense Advanced Research Projects Agency (DARPA) program grants.