Abstract

Cilk is a parallel programming language that allows programmers to write multithreaded parallel programs that use computational resources predictably and efficiently. The Cilk language allows programmers to specify the interactions among computational threads in a high-level fashion, and then Cilk's runtime system maps the computation onto available physical resources dynamically in a provably efficient fashion. The performance of a Cilk program is mathematically guaranteed to scale up linearly with the number of processors, as long as the application has sufficient parallelism and the architecture sufficient communication bandwidth. Moreover, Cilk is efficient: a parallel Cilk program “scales down” to run on a single processor with nearly the same efficiency as comparable C code, thereby removing a major barrier to parallel programming.Cilk provides a theoretical performance model based on “Brent's theorem.” Using the measures of work, critical-path length, and serial space, a programmer can extrapolate the performance of his program to any number of processors. Moreover, divide-and-conquer-parallel algorithms can be analyzed in much the same way one analyzes divide-and-conquer serial algorithms in a college algorithms class. Multithreaded algorithms to solve such problems as matrix multiplication, Cholesky factorization, and sorting can all be analyzed and competing algorithms compared within Cilk's analytical framework.KeywordsMatrix MultiplicationParallel AlgorithmAlgorithmic AnalysisMajor BarrierParallel ProgrammingThese keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call