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...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Bibliography
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
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
Agrawal K, He Y, Hsu WJ, Leiserson CE (2006) Adaptive scheduling with parallelism feedback. TOCS, 16(3):7:1–7:32
Agrawal K, Leiserson CE, Sukha J (2010) Helper locks for fork-join parallel programming. In: PPoPP’10, ACM, New York, pp 244–256
Agrawal K, Leiserson CE, Sukha J (2010) Executing task graphs using work stealing. In: IPDPS, Atlanta. IEEE, pp 1–12
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
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
Arnold K, Gosling J (1996) The Java programming language. Addison-Wesley, Reading
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
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
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
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
Blumofe RD, Frigo M, Joerg CF, Leiserson CE, Randall KH (1996) Dag-consistent distributed shared memory. In: IPPS’96, Honolulu, Hawaii, pp 132–141
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
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
Blumofe RD, Papadopoulos D (1999) Hood: a user-level threads library for multi-programmed multiprocessors. Technical report, University of Texas, Austin
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
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
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
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
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
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
Cilk Arts Inc. (2008) Cilk + + programmer’s guide, release 1.0 edition, December 2008
Cormen TH, Leiserson CE, Rivest RL, Stein C (2009) Introduction to algorithms, 3rd edn. The MIT Press, Cambridge
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
Dailey D, Leiserson CE (2002) Using Cilk to write multiprocessor chess programs. J Int Comput Chess Assoc 24(4):236–237
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
Danaher JS (2005) The JCilk-1 runtime system. Master’s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge
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
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, Albuquerque. IEEE Computer Society, Washington DC, pp 580–588
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
Fenster Y (1998) Detecting parallel access anomalies. Master’s thesis, Hebrew University, Jerusalem
Frigo M (1999) A fast Fourier transform compiler. ACM SIGPLAN Notices 34(5):169–180
Frigo M (1999) Portable high-performance programs. PhD thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge
Frigo M, Halpern P, Leiserson CE, Berlin SL (2009) Reducers and other Cilk + + hyperobjects. In: SPAA’09, Calgary. ACM, New York, pp 79–90
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
Frigo M, Luchangco V (1998) Computation-centric memory models. In: SPAA’98. ACM, New York, pp 240–249
Garey MR, Johnson DS (1979) Computers and Intractability. W.H. Freeman and Company, San Francisco
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
Graham RL (1966) Bounds for certain multiprocessing anomalies. Bell System Tech J 45:1563–1581
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
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
He Y, Leiserson CE, Leiserson WM (2010) The Cilkview scalability analyzer. In: SPAA’10. ACM, New York, pp 145–156
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
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
Intel Corporation (2009) Intel Cilk + + SDK programmer’s guide, October 2009. Intel Corporation, Document number: 322581-001US
Intel Corporation (2010) Intel R® {C} + + compiler 12.0 user and reference guides, September 2010. Intel Corporation, Document number: 323271-011US
Joerg C, Kuszmaul BC (1994) Massively parallel chess. In: Proceedings of the third DIMACS parallel implementation challenge, Rutgers University, New Jersey, October 17–19
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
Kernighan BW, Ritchie DM (1988) The C programming language, 2nd edn. Prentice Hall, Englewood Cliffs
Kuszmaul BC (1994) Synchronized MIMD computing. PhD thesis, MIT Department of EECS, Cambridge
Kuszmaul BC (1995) The StarTech massively parallel chess program. J Int Comput Chess Assoc 18(1):3–20
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
Lea D (2000) A Java fork/join framework. In: Java Grande Conference, Stanford University, Palo Alto, pp 36–43
Lee ITA (2005) The JCilk multithreaded language. Master’s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge
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
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
Leiserson CE (2010) The Cilk + + concurrency platform. J Supercomput 51(3):244–257
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
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
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
Microsoft Corporation (2010) Parallel patterns library (PPL). Available at http://msdn.microsoft.com/en-us/library/dd492418.aspx
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
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
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
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
Narlikar G (1999) Space-efficient scheduling for parallel, multithreaded computations. PhD thesis, Carnegie Mellon University, Pittsburgh
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
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, Tel Aviv
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
Randall KH (1998) Cilk: efficient multithreaded computing. PhD thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge
Reinders J (2007) Intel threading building blocks: Outfitting C + + for multi-core processor parallelism. O’Reilly, Sebastopol, CA
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
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
Stroustrup B (2000) The C + + programming language, 3rd edn. Addison-Wesley, Upper Saddle River
Supercomputing technologies group, Massachusetts Institute of Technology Laboratory for Computer Science (2006) Cilk 5.4.2.3 reference manual, April 2006
The MPI Forum (1993) MPI: a message passing interface. In: Supercomputing ’93, Portland, OR, pp 878–883
The MPI Forum (1996) MPI-2: Extensions to the message-passing interface. Technical Report, University of Tennessee, Knoxville
Tom Duff (1983). Duff’s device. Usenet posting. http://www.lysator.liu.se/c/duffs-device.html. Accessed 10 Nov 1983
Wulf W, Shaw M (1973) Global variable considered harmful. SIGPLAN Notices 8(2):28–34
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
Editor information
Editors and Affiliations
Rights 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
DOI: https://doi.org/10.1007/978-0-387-09766-4_289
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering