Abstract This paper describes XCilk, a runtime-system design forsoftware transactional memory in a Cilk-like parallel programming language, which uses a work-stealing sched-uler. XCilk supports transactions that themselves can contain nested parallelism and nested transactions, both of un-bounded nesting depth. Thus, XCilk allows users to call a library function within a transaction, even if that func-tion itself exploits concurrency and uses transactions. XCilk provides transactional memory with strong atomicity, eagerupdates, eager conflict detection and lazy cleanup on aborts. XCilk uses a new algorithm and data structure, calledXConflict, to facilitate conflict detection between transactions. Using XConflict, XCilk guarantees provably good per-formance for closed-nested transactions of arbitrary depth in the special case when all accesses are writes and there is nomemory contention. More precisely, XCilk executes a program with work T1 and critical-path length Te ^ in O(T1/p +pT e^) time on p processors if all memory accesses are writesand all concurrent paths of the XCilk program access disjoint sets of memory locations. Although this bound holdsonly under rather optimistic assumptions, to our knowledge, this result is the first theoretical performance bound on a TMsystem that supports transactions with nested parallelism
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.