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. Zakian | 1 | 2 | 0.37 |
Timothy A. K. Zakian | 2 | 2 | 1.38 |
Abhishek Kulkarni | 3 | 57 | 6.33 |
Buddhika Chamith | 4 | 2 | 0.37 |
Ryan Newton | 5 | 802 | 70.80 |