Skip to main content

Synonyms

Cilk-1; Cilk-5; Cilk++; Cilkplus

Definition

Cilk (pronounced “silk”) is a linguistic and runtime technology for algorithmic multithreaded programming originally developed at MIT@. The philosophy behind Cilk is that a programmer should concentrate on structuring her or his program to expose parallelism and exploit locality, leaving Cilk’s runtime system with the responsibility of scheduling the computation to run efficiently on a given platform. The Cilk runtime system takes care of details like load balancing, synchronization, and communication protocols. Cilk is algorithmic in that the runtime system guarantees efficient and predictable performance. Important milestones in Cilk technology include the original Cilk-1, which provided a provably efficient work-stealing runtime support but little linguistic support; the later Cilk-5, which provided simple linguistic extensions for multithreading to ANSI C; the commercial Cilk++, which extended the Cilk model to C++ and introduced...

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 1,600.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 1,799.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Bibliography

  1. Adkins D, Barton R, Dailey D, Frigo M, Joerg C, Leiserson C, Prokop H, Rinard M (1998) Cilk Pousse. Winner of the 1998 ICFP Programming Contest

    Google Scholar 

  2. Agrawal K, Fineman JT, Sukha J (2007) Nested parallelism in transactional memory. In: Proceedings of the 13th ACM SIGPLAN symposium on principles and Practice of parallel programming (PPoPP 2008), ACM, New York, pp 163–174

    Google Scholar 

  3. Agrawal K, He Y, Hsu WJ, Leiserson CE (2006) Adaptive scheduling with parallelism feedback. TOCS, 16(3):7:1–7:32

    Google Scholar 

  4. Agrawal K, Leiserson CE, Sukha J (2010) Helper locks for fork-join parallel programming. In: PPoPP’10, ACM, New York, pp 244–256

    Google Scholar 

  5. Agrawal K, Leiserson CE, Sukha J (2010) Executing task graphs using work stealing. In: IPDPS, Atlanta. IEEE, pp 1–12

    Google Scholar 

  6. Allen E, Chase D, Hallett J, Luchangco V, Maessen JW, Ryu S, Steele Jr. GL, Hochstadt ST (2008) The Fortress language specification, version 1.0. Sun Microsystems, Burlington

    Google Scholar 

  7. 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, Atlantic City. ACM, New York, pp 483–485

    Google Scholar 

  8. Arnold K, Gosling J (1996) The Java programming language. Addison-Wesley, Reading

    Google Scholar 

  9. 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. ACM, New York, pp 133–144

    Google Scholar 

  10. Blelloch GE, Gibbons PB, Matias Y, Narlikar GJ (1997) Space-efficient scheduling of parallelism with synchronization variables. In: Proceedings of the 9th annual ACM symposium on parallel algorithms and architectures (SPAA), Newport. ACM, New York, pp 12–23

    Chapter  Google Scholar 

  11. Blumofe RD (1995) Executing multithreaded programs efficiently. PhD thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA. Available as MIT Laboratory for Computer Science Technical Report MIT/LCS/TR-677

    Google Scholar 

  12. Blumofe RD, Frigo M, Joerg CF, Leiserson CE, Randall KH (1996) An analysis of dag-consistent distributed shared-memory algorithms. In: SPAA’96, Padua, Italy. ACM press, New York, pp 297–308

    Google Scholar 

  13. Blumofe RD, Frigo M, Joerg CF, Leiserson CE, Randall KH (1996) Dag-consistent distributed shared memory. In: IPPS’96, Honolulu, Hawaii, pp 132–141

    Google Scholar 

  14. Blumofe RD, Joerg CF, Kuszmaul BC, Leiserson CE, Randall KH, Zhou Y (1996) Cilk: an efficient multithreaded runtime system. J Parallel Distribut Comp 37(1):55–69

    Article  Google Scholar 

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

    Article  MATH  MathSciNet  Google Scholar 

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

    Article  MATH  MathSciNet  Google Scholar 

  17. Blumofe RD, Papadopoulos D (1999) Hood: a user-level threads library for multi-programmed multiprocessors. Technical report, University of Texas, Austin

    Google Scholar 

  18. Blumofe RD, Park DS (1994) Scheduling large-scale parallel computations on networks of workstations. In: Proceedings of the third international symposium on high performance distributed computing (HPDC), San Francisco, pp 96–105

    Google Scholar 

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

    Article  MATH  MathSciNet  Google Scholar 

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

    Google Scholar 

  21. Buluç A, Fineman JT, Frigo M, Gilbert JR, Leiserson CE (2009) Parallel sparse matrix-vector and matrix-transpose-vector multiplication using compressed sparse blocks. In: SPAA. ACM, New York, pp 233–244

    Google Scholar 

  22. Charles P, Grothoff C, Saraswat V, Donawa C, Kielstra A, Ebcioglu K, von Praun C, Sarkar V (2005) X10: an object-oriented approach to non-uniform cluster computing. In: OOPSLA ’05. ACM, New York, pp 519–538

    Chapter  Google Scholar 

  23. Cheng GI (1998) Algorithms for data-race detection in multithreaded programs. Master’s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge

    Google Scholar 

  24. Cheng GI, Feng M, Leiserson CE, Randall KH, Stark AF (1998) Detecting data races in Cilk programs that use locks. In: Proceedings of the ACM Symposium on parallel algorithms and architectures. ACM press, New York

    Google Scholar 

  25. Cilk Arts Inc. (2008) Cilk + + programmer’s guide, release 1.0 edition, December 2008

    Google Scholar 

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

    MATH  Google Scholar 

  27. Crummey JM (1991) On-the-fly detection of data races for programs with nested fork-join parallelism. In: Super-computing’91, Albuquerque. IEEE Computer Society Press, Los Alamitos, pp 24–33

    Google Scholar 

  28. Dailey D, Leiserson CE (2002) Using Cilk to write multiprocessor chess programs. J Int Comput Chess Assoc 24(4):236–237

    Google Scholar 

  29. Danaher JS, Lee ITA, Leiserson CE (2005) Exception handling in JCilk. In: Synchronization and concurrency in object-oriented languages (SCOOL), October 2005. Available at http://hdl.handle.net/1802/2095

  30. Danaher JS (2005) The JCilk-1 runtime system. Master’s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge

    Google Scholar 

  31. Dinning A, Schonberg E (1990) An empirical comparison of monitoring algorithms for access anomaly detection. In: Proceedings of the ACM SIGPLAN symposium on principles and practice of parallel programming, San Diego, ACM, New York, pp 1–10

    Google Scholar 

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

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

    Article  Google Scholar 

  34. Emrath PA, Ghosh S, Padua DA (1991) Event synchronization analysis for debugging parallel programs. In: Supercomputing ’91, Albuquerque. IEEE Computer Society, Washington DC, pp 580–588

    Google Scholar 

  35. Feng M, Leiserson CE (1997) Efficient detection of determinacy races in Cilk programs. In: Proceedings of the ACM symposium on parallel algorithms and architectures, New Port. ACM, New York, pp 1–11

    Google Scholar 

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

    Google Scholar 

  37. Frigo M (1999) A fast Fourier transform compiler. ACM SIGPLAN Notices 34(5):169–180

    Article  Google Scholar 

  38. Frigo M (1999) Portable high-performance programs. PhD thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge

    Google Scholar 

  39. Frigo M, Halpern P, Leiserson CE, Berlin SL (2009) Reducers and other Cilk + + hyperobjects. In: SPAA’09, Calgary. ACM, New York, pp 79–90

    Google Scholar 

  40. Frigo M, Leiserson CE, Randall KH (1998) The implementation of the Cilk-5 multithreaded language. In: Proceedings of the ACM SIGPLAN conference on programming language design and implementation, Montreal, Canada, pp 212–223

    Google Scholar 

  41. Frigo M, Luchangco V (1998) Computation-centric memory models. In: SPAA’98. ACM, New York, pp 240–249

    Google Scholar 

  42. Garey MR, Johnson DS (1979) Computers and Intractability. W.H. Freeman and Company, San Francisco

    MATH  Google Scholar 

  43. Goldstein SC, Schauser KE, Culler D (1995) Enabling primitives for compiling parallel languages. In: LCR ’95, Troy, NY, USA, Available from http://en.scientificcommons.org/43004998

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

    Google Scholar 

  45. Halbherr M, Zhou Y, Joerg CF (1994) MIMD-style parallel programming with continuation-passing threads. In: Proceedings of the 2nd international workshop on massive parallelism: hardware, software, and applications, Capri, Italy

    Google Scholar 

  46. Hauck EA, Dent BA (1968) Burroughs’ B6500/B7500 stack mechanism. In: Proceedings of the AFIPS spring joint computer conference. AFIPS Press, Montvale, pp 245–251

    Google Scholar 

  47. He Y, Leiserson CE, Leiserson WM (2010) The Cilkview scalability analyzer. In: SPAA’10. ACM, New York, pp 145–156

    Google Scholar 

  48. Helmbold DP, McDowell CE, Wang JZ (1990) Analyzing traces with anonymous synchronization. In: Proceedings of the 1990 international conference on parallel processing, University Park. pp II.70–II.77

    Google Scholar 

  49. Institute of Electrical and Electronic Engineers (1996) Information technology – portable operating system interface (POSIX) – Part 1: system application program interface (API) [C language], 1996 edn. IEEE Standard 1003.1

    Google Scholar 

  50. Intel Corporation (2009) Intel Cilk + + SDK programmer’s guide, October 2009. Intel Corporation, Document number: 322581-001US

    Google Scholar 

  51. Intel Corporation (2010) Intel R® {C} + + compiler 12.0 user and reference guides, September 2010. Intel Corporation, Document number: 323271-011US

    Google Scholar 

  52. Joerg C, Kuszmaul BC (1994) Massively parallel chess. In: Proceedings of the third DIMACS parallel implementation challenge, Rutgers University, New Jersey, October 17–19

    Google Scholar 

  53. Joerg CF (1996) The Cilk system for parallel multithreaded computing. PhD thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge. Available as MIT Laboratory for Computer Science technical report MIT/LCS/TR-701

    Google Scholar 

  54. Kernighan BW, Ritchie DM (1988) The C programming language, 2nd edn. Prentice Hall, Englewood Cliffs

    Google Scholar 

  55. Kuszmaul BC (1994) Synchronized MIMD computing. PhD thesis, MIT Department of EECS, Cambridge

    Google Scholar 

  56. Kuszmaul BC (1995) The StarTech massively parallel chess program. J Int Comput Chess Assoc 18(1):3–20

    Google Scholar 

  57. Kuszmaul BC (2007) Brief announcement: Cilk provides the “best overall productivity” for high performance computing (and won the HPC challenge award to prove it). In: SPAA’07. ACM, New York, pp 299–300

    Google Scholar 

  58. Lea D (2000) A Java fork/join framework. In: Java Grande Conference, Stanford University, Palo Alto, pp 36–43

    Chapter  Google Scholar 

  59. Lee ITA (2005) The JCilk multithreaded language. Master’s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge

    Google Scholar 

  60. Lee ITA, Wickizer SB, Huang Z, Leiserson CE (2010) Using memory mapping to support cactus stacks in work-stealing runtime systems. In: PACT’10, Vienna. ACM, New York, pp 411–420

    Google Scholar 

  61. Leijen D, Schulte W, Burckhardt S (2009) The design of a task parallel library. In: OOPSLA ’09, Orlando, FL. ACM, New York, pp 227–242

    Chapter  Google Scholar 

  62. Leiserson CE (2010) The Cilk + + concurrency platform. J Supercomput 51(3):244–257

    Article  Google Scholar 

  63. Leiserson CE, Abuhamdeh ZS, Douglas DC, Feynman CR, Ganmukhi MN, Hill JV, Hillis WD, Kuszmaul BC, St. Pierre MA, Wells DS, Wong MC, Yang SW, Zak R (1996) The network architecture of the Connection Machine CM-5. J Parallel Distribut Comput 33(2):145–158

    Article  Google Scholar 

  64. Leiserson CE, Schardl TB (2010) A work-efficient parallel breadth-first search algorithm (or how to cope with the nondeterminism of reducers). In: SPAA’10. ACM, New York, pp 303–314

    Google Scholar 

  65. Luk CK, 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, Chicago, ACM Press, New York, pp 190–200

    Google Scholar 

  66. Microsoft Corporation (2010) Parallel patterns library (PPL). Available at http://msdn.microsoft.com/en-us/library/dd492418.aspx

  67. Miller BP, Choi JD (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. ACM, New York, pp 135–144

    Google Scholar 

  68. Miller RC (1995) A type-checking preprocessor for Cilk 2, a multithreaded C language. Master’s thesis, Massachusetts Institute of Technology Electrical Engineering and Computer Science, Cambridge

    Google Scholar 

  69. Min SL, Choi JD (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., pp 235–244

    Google Scholar 

  70. Mohr E, Kranz DA, Halstead RH, Jr. (1991) Lazy task creation: a technique for increasing the granularity of parallel programs. IEEE Trans Parallel Distribut Systems 2(3):264–280

    Article  Google Scholar 

  71. Narlikar G (1999) Space-efficient scheduling for parallel, multithreaded computations. PhD thesis, Carnegie Mellon University, Pittsburgh

    Google Scholar 

  72. 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, IL

    Google Scholar 

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

    Article  Google Scholar 

  74. 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, Tel Aviv

    Google Scholar 

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

    Google Scholar 

  76. Randall KH (1998) Cilk: efficient multithreaded computing. PhD thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge

    Google Scholar 

  77. Reinders J (2007) Intel threading building blocks: Outfitting C + + for multi-core processor parallelism. O’Reilly, Sebastopol, CA

    Google Scholar 

  78. 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). ACM Press, New York, pp 27–37

    Chapter  Google Scholar 

  79. Stark AF (1998) Debugging multithreaded programs that incorporate user-level locking. Master’s thesis, Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, Cambridge

    Google Scholar 

  80. Stroustrup B (2000) The C + + programming language, 3rd edn. Addison-Wesley, Upper Saddle River

    Google Scholar 

  81. Supercomputing technologies group, Massachusetts Institute of Technology Laboratory for Computer Science (2006) Cilk 5.4.2.3 reference manual, April 2006

    Google Scholar 

  82. The MPI Forum (1993) MPI: a message passing interface. In: Supercomputing ’93, Portland, OR, pp 878–883

    Chapter  Google Scholar 

  83. The MPI Forum (1996) MPI-2: Extensions to the message-passing interface. Technical Report, University of Tennessee, Knoxville

    Google Scholar 

  84. Tom Duff (1983). Duff’s device. Usenet posting. http://www.lysator.liu.se/c/duffs-device.html. Accessed 10 Nov 1983

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

    Article  Google Scholar 

Download references

Acknowledgments

Thanks to the many students and postdocs who contributed to Cilk technology over the years. Space does not permit all to be listed. Thanks to the team at Cilk Arts and the new Cilk team at Intel. Special thanks to Matteo Frigo and Bradley C. Kuszmaul, who contributed mightily to developing and maintaining the MIT Cilk codebase. Many thanks to the DARPA and NSF sponsors of this research over the years.

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer Science+Business Media, LLC

About this entry

Cite this entry

Leiserson, C.E. (2011). Cilk. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_289

Download citation

Publish with us

Policies and ethics