Title
Concurrent Cilk: Lazy Promotion from Tasks to Threads in C/C++
Abstract
Library and language support for scheduling non-blocking tasks has greatly improved, as have lightweight user threading packages. However, there is a significant gap between the two developments. In previous work--and in﾿today's software packages--lightweight thread creation incurs much larger overheads than tasking libraries, even on tasks that end up never blocking. This limitation can be removed. To that end, we describe an extension to the Intel Cilk Plus runtime system, Concurrent Cilk, where tasks are lazily promoted to threads. Concurrent Cilk removes the overhead of thread creation on threads which end up calling no blocking operations, and is the first system to do so for C/C++ with legacy support standard calling conventions and stack representations. We demonstrate that Concurrent Cilk adds negligible overhead to existing Cilk programs, while its promoted threads remain more efficient than OS threads in terms of context-switch overhead and blocking communication. Further, it enables development of blocking data structures that create non-fork-join dependence graphs--which can expose more parallelism, and better supports data-driven computations waiting on results from remote devices.
Year
DOI
Venue
2015
10.1007/978-3-319-29778-1_5
Languages and Compilers for Parallel Computing
Field
DocType
Citations 
Data structure,Computer science,Scheduling (computing),Parallel computing,Thread (computing),Software,Calling convention,Cilk,Legacy system,Operating system,Runtime system
Conference
2
PageRank 
References 
Authors
0.37
14
5
Name
Order
Citations
PageRank
Christopher S. Zakian120.37
Timothy A. K. Zakian221.38
Abhishek Kulkarni3576.33
Buddhika Chamith420.37
Ryan Newton580270.80