www.digitalmars.com         C & C++   DMDScript  

D - Cilk parallel ANSI C


Cilk is a language for multithreaded parallel programming based on ANSI C. Cilk
is designed for general-purpose parallel programming, but it is especially
effective for exploiting dynamic, highly asynchronous parallelism, which can be
difficult to write in data-parallel or message-passing style. Using Cilk, our
group has developed three world-class chess programs, StarTech, *Socrates, and
Cilkchess. Cilk provides an effective platform for programming dense and sparse
numerical algorithms, such as matrix factorization and N-body simulations, and
we are working on other types of applications. Unlike many other multithreaded
programming systems, Cilk is algorithmic, in that the runtime system employs a
scheduler that allows the performance of programs to be estimated accurately
based on abstract complexity measures.

The philosophy behind Cilk is that a programmer should concentrate on
structuring the 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. Thus, the Cilk runtime system takes care of
details like load balancing, paging, and communication protocols. Unlike other
multithreaded languages, however, Cilk is algorithmic in that the runtime system
guarantees efficient and predictable performance.
Feb 19 2003