Programming Shared-Memory Multiprocessors
Using the Cilk Multithreaded Language
Charles Leiserson
Cilk is a language being developed in the MIT Laboratory for Computer
Science with the goal of making parallel programming easy. Cilk
minimally extends the C programming language to allow interactions
among computational threads to be specified in a simple and high-level
fashion. Cilk's provably efficient runtime system dynamically maps a
user's program onto available physical resources using a
"work-stealing" scheduler, freeing the programmer from concerns of
communication protocols and load balancing.
In addition, Cilk
provides an abstract performance model that a programmer can use to
predict the multiprocessor performance of his application from its
execution on a single processor. Not only do Cilk programs scale up
to run efficiently on multiple processors, but unlike many existing
parallel-programming environments, Cilk programs "scale down": the
efficiency of a Cilk program on one processor rivals that of a
comparable C program.
In this talk, Mr. Leiserson will provide a brief tutorial on the Cilk language. He
will explain how to program multithreaded applications in Cilk and how
to analyze their performance. He will also illustrate some of the ideas
behind Cilk using the example of MIT's championship computer-chess
programs, *Socrates and Cilkchess. In addition, he will briefly sketch how the
software technology underlying Cilk works.
See here for more background on Cilk and
to download the Cilk-5.3 manual and software release.