Skip to main content
Log in

The Cilk++ concurrency platform

  • Published:
The Journal of Supercomputing Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. 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

  2. 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

  3. 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

  4. Blumofe RD, Leiserson CE (1998) Space-efficient scheduling of multithreaded computations. SIAM J Comput 27(1):202–229

    Article  MATH  MathSciNet  Google Scholar 

  5. Blumofe RD, Leiserson CE (1999) Scheduling multithreaded computations by work stealing. J ACM 46(5):720–748

    Article  MATH  MathSciNet  Google Scholar 

  6. Brent RP (1974) The parallel evaluation of general arithmetic expressions. J ACM 21(2):201–206

    Article  MATH  MathSciNet  Google Scholar 

  7. Bruening D (2004) Efficient, transparent, and comprehensive runtime code manipulation. PhD thesis, Department of Electrical Engineering and Computer Science. Massachusetts Institute of Technology

  8. 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

  9. Cormen TH, Leiserson CE, Rivest RL, Stein C (2009) Introduction to algorithms, 3rd edn. The MIT Press, Cambridge

    MATH  Google Scholar 

  10. 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

    Chapter  Google Scholar 

  11. 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

    Chapter  Google Scholar 

  12. Eager DL, Zahorjan J, Lazowska ED (1989) Speedup versus efficiency in parallel systems. IEEE Trans Comput 38(3):408–423

    Article  Google Scholar 

  13. Emrath PA, Ghosh S, Padua DA (1991) Event synchronization analysis for debugging parallel programs. In: Supercomputing’91, November 1991, pp 580–588

  14. 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

  15. Fenster Y (1998) Detecting parallel access anomalies. Master’s thesis, Hebrew University, March 1998

  16. 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

    Chapter  Google Scholar 

  17. 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)

  18. Garey MR, Johnson DS (1979) Computers and intractability. W.H. Freeman, New York

    MATH  Google Scholar 

  19. Graham RL (1966) Bounds for certain multiprocessing anomalies. Bell Syst Tech J 45:1563–1581

    Google Scholar 

  20. 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

  21. 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

  22. Kernighan BW, Ritchie DM (1988) The C programming language, 2nd edn. Prentice Hall, New York

    Google Scholar 

  23. 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

    Chapter  Google Scholar 

  24. 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

    Google Scholar 

  25. 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

  26. 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

  27. 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

  28. Netzer RHB, Miller BP (1992) What are race conditions? ACM Lett Program Lang Syst 1(1):74–88

    Article  Google Scholar 

  29. 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

  30. 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

  31. 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

  32. Stroustrup B (2000) The C++ programming language, 3rd edn. Addison-Wesley, Reading

    Google Scholar 

  33. Stroustrup B (2005) C++ in 2005. Addison-Wesley, Reading. Preface to the Japanese translation

    Google Scholar 

  34. 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

  35. The MPI Forum (1993) MPI: A message passing interface. In: Supercomputing ’93. Portland, Oregon, November 1993, pp 878–883

  36. 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

  37. Wulf W, Shaw M (1973) Global variable considered harmful. SIGPLAN Not 8(2):28–34

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Charles E. Leiserson.

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

Reprints 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

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11227-010-0405-3

Keywords

Navigation