The Cilk++ concurrency platform
By Charles E. Leiserson. 2009 46th ACM/IEEE Design Automation Conference, 2009
392 citations recorded by the source corpus.
The availability of multicore processors across a wide range of computing platforms has created a strong demand for software frameworks that can harness these resources. This paper overviews the Cilk++ programming environment, which incorporates a compiler, a runtime system, and a race-detection tool. The Cilk++ runtime system guarantees to load-balance computations effectively. To cope with legacy codes containing global variables, Cilk++ provides a “hyperobject” library which allows races on nonlocal variables to be mitigated without lock contention or substantial code restructuring.
Subfields: Hardware and Architecture
View Paper: https://www.semanticscholar.org/paper/5f0d842853166e77317ec1f5072fe68109390b42
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Hardware and Architecture
- Yucheng Low
- Guy E. Blelloch
- Aapo Kyrola
- Carlos Guestrin
- Danny Bickson
- Joseph K. Bradley
- Julian Shun
- Joseph E. Gonzalez
Citations in the corpus
- HPX: A Task Based Programming Model in a Global Address Space (2014, background): “For today’s architectures we already see a flurry of libraries providing exactly this type of functionality (even if not directly targetting HPC): non-preemptive, work queue based parallelization solutions, such as Intel Threading Building Blocks (TBB, [6]), Microsoft Parallel Patterns Library (PPL,”
- GraphLab: A Distributed Framework for Machine Learning in the Cloud (2011, methodology): “Guided by this intuition we spent over a year designing and implementing various machine learning algorithms on top of low-level threading primitives and distributed communication frameworks such as OpenMP [4], CILK++ [18] and MPI [5].”
- Parallel Coordinate Descent for L1-Regularized Loss Minimization (2011, methodology): “We used C++ and the CILK++ library (Leiserson, 2009) for parallelism.”
- Ligra: a lightweight graph processing framework for shared memory (2013, background): “Categories and Subject Descriptors D.1.3 [Programming Techniques]: Concurrent Programming Parallel Programming General Terms Algorithms, Performance Keywords Shared Memory, Graph Algorithms, Parallel Programming 1.”