Abstract
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.
Similar content being viewed by others
References
Amdahl G (1967) The validity of the single processor approach to achieving large-scale computing capabilities. In: Proceedings of the AFIPS spring joint computer conference, April 1967, pp 483–485
Bender MA, Fineman JT, Gilbert S, Leiserson CE (2004) On-the-fly maintenance of series-parallel relationships in fork-join multithreaded programs. In: Proceedings of the sixteenth annual ACM symposium on parallel algorithms and architectures (SPAA 2004), Barcelona, Spain, June 2004, pp 133–144
Blumofe RD, Leiserson CE (1993) Space-efficient scheduling of multithreaded computations. In: Proceedings of the twenty fifth annual ACM symposium on theory of computing, San Diego, California, May 1993, pp 362–371
Blumofe RD, Leiserson CE (1998) Space-efficient scheduling of multithreaded computations. SIAM J Comput 27(1):202–229
Blumofe RD, Leiserson CE (1999) Scheduling multithreaded computations by work stealing. J ACM 46(5):720–748
Brent RP (1974) The parallel evaluation of general arithmetic expressions. J ACM 21(2):201–206
Bruening D (2004) Efficient, transparent, and comprehensive runtime code manipulation. PhD thesis, Department of Electrical Engineering and Computer Science. Massachusetts Institute of Technology
Cheng G-I, Feng M, Leiserson CE, Randall KH, Stark AF (1998) Detecting data races in cilk programs that use locks. In: Proceedings of the tenth annual ACM symposium on parallel algorithms and architectures (SPAA ’98), Puerto Vallarta, Mexico, June 28–July 2 1998, pp 298–309
Cormen TH, Leiserson CE, Rivest RL, Stein C (2009) Introduction to algorithms, 3rd edn. The MIT Press, Cambridge
Dinning A, Schonberg E (1990) An empirical comparison of monitoring algorithms for access anomaly detection. In: Proceedings of the second ACM SIGPLAN symposium on principles & practice of parallel programming (PPoPP). ACM Press, New York, pp 1–10
Dinning A, Schonberg E (1991) Detecting access anomalies in programs with critical sections. In: Proceedings of the ACM/ONR workshop on parallel and distributed debugging. ACM Press, New York, pp 85–96
Eager DL, Zahorjan J, Lazowska ED (1989) Speedup versus efficiency in parallel systems. IEEE Trans Comput 38(3):408–423
Emrath PA, Ghosh S, Padua DA (1991) Event synchronization analysis for debugging parallel programs. In: Supercomputing’91, November 1991, pp 580–588
Feng M, Leiserson CE (1997) Efficient detection of determinacy races in Cilk programs. In: Proceedings of the ninth annual ACM symposium on parallel algorithms and architectures (SPAA), Newport, Rhode Island, June 22–25 1997, pp 1–11
Fenster Y (1998) Detecting parallel access anomalies. Master’s thesis, Hebrew University, March 1998
Frigo M, Leiserson CE, Randall KH (1998) The implementation of the Cilk-5 multithreaded language. In: Proceedings of the ACM SIGPLAN ’98 conference on programming language design and implementation, Montreal, Quebec, Canada, June 1998. ACM SIGPLAN Notices, vol 33, no 5, May 1998. ACM, New York, pp 212–223
Frigo M, Halpern P, Leiserson CE, Lewin-Berlin S (2009) Reducers and other Cilk++ hyperobjects. In: Proceedings of the twenty-first annual ACM symposium on parallel algorithms and architectures (SPAA’09), Calgary, Canada, August 2009 (to appear)
Garey MR, Johnson DS (1979) Computers and intractability. W.H. Freeman, New York
Graham RL (1966) Bounds for certain multiprocessing anomalies. Bell Syst Tech J 45:1563–1581
Helmbold DP, McDowell CE, Wang J-Z (1990) Analyzing traces with anonymous synchronization. In: Proceedings of the 1990 international conference on parallel processing, August 1990, pp II70–II77
Institute of Electrical and Electronic Engineers (1996) Information technology—Portable Operating System Interface (POSIX)—Part 1: System application program interface (API) [C language]. IEEE Standard 1003.1, 1996 Edition
Kernighan BW, Ritchie DM (1988) The C programming language, 2nd edn. Prentice Hall, New York
Luk C-K, Cohn R, Muth R, Patil H, Klauser A, Lowney G, Wallace S, Reddi VJ, Hazelwood K (2005) Pin: building customized program analysis tools with dynamic instrumentation. In: PLDI ’05: proceedings of the 2005 ACM SIGPLAN conference on programming language design and implementation, New York, NY, USA, 2005. ACM Press, New York, pp 190–200
Mellor-Crummey, J (1991) On-the-fly detection of data races for programs with nested fork-join parallelism. In: Proceedings of supercomputing’91. IEEE Computer Society Press, Los Alamitos, pp 24–33
Miller BP, Choi J-D (1988) A mechanism for efficient debugging of parallel programs. In: Proceedings of the 1988 ACM SIGPLAN conference on programming language design and implementation (PLDI), Atlanta, Georgia, June 1988, pp 135–144
Min SL, Choi J-D (1991) An efficient cache-based access anomaly detection scheme. In: Proceedings of the fourth international conference on architectural support for programming languages and operating systems (ASPLOS), Palo Alto, California, April 1991, pp 235–244
Netzer RHB, Ghosh S (1992) Efficient race condition detection for shared-memory programs with post/wait synchronization. In: Proceedings of the 1992 international conference on parallel processing, St. Charles, Illinois, August 1992
Netzer RHB, Miller BP (1992) What are race conditions? ACM Lett Program Lang Syst 1(1):74–88
Nudler I, Rudolph L (1986) Tools for the efficient development of efficient parallel programs. In: Proceedings of the first Israeli conference on computer systems engineering, May 1986
Perković D, Keleher P (1996) Online data-race detection via coherency guarantees. In: Proceedings of the second USENIX symposium on operating systems design and implementation (OSDI), Seattle, Washington, October 1996
Savage S, Burrows M, Nelson G, Sobalvarro P, Anderson T (1997) Eraser: A dynamic race detector for multi-threaded programs. In: Proceedings of the sixteenth ACM symposium on operating systems principles (SOSP), October 1997
Stroustrup B (2000) The C++ programming language, 3rd edn. Addison-Wesley, Reading
Stroustrup B (2005) C++ in 2005. Addison-Wesley, Reading. Preface to the Japanese translation
Supercomputing Technologies Group (2006) Massachusetts Institute of Technology Laboratory for Computer Science. Cilk 5.4.2.3 Reference Manual, April 2006. Available from: http://supertech.csail.mit.edu/cilk/home/software.html
The MPI Forum (1993) MPI: A message passing interface. In: Supercomputing ’93. Portland, Oregon, November 1993, pp 878–883
The MPI Forum (1996) MPI-2: Extensions to the Message-Passing Interface. Technical Report, University of Tennessee, Knoxville. Available from: citeseer.ist.psu.edu/517818.html
Wulf W, Shaw M (1973) Global variable considered harmful. SIGPLAN Not 8(2):28–34
Author information
Authors and Affiliations
Corresponding author
Additional information
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. DAC’09 July 26–31, 2009, San Francisco, California, USA.
Rights and permissions
About this article
Cite this article
Leiserson, C.E. The Cilk++ concurrency platform. J Supercomput 51, 244–257 (2010). https://doi.org/10.1007/s11227-010-0405-3
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-010-0405-3