What Multicore Artisans Say...

Without Cilk++, multicore enablement will require a drastic rewrite of our code, which can only be done by a small minority of our most experienced software developers. With Cilk++, we believe a team of largely junior developers can multicore-enable our code base.

No one provided a solution that is as crisp and simple, as easy to test and debug, and as high performing. I believe that Cilk Arts has a solution to a real and pressing problem in our industry.

Director of Research,
$300M Application Software Vendor

What Analysts Say...

Every software maker out there has got to learn how to program parallel code to remain competitive.

There's going to be a huge learning curve for developers to take on multi-threading in such a big way.

Dan Olds, Principal Analyst
Gabriel Consulting Group

Ensure Software Reliability

In a move to multithreading, you must deal with the challenging problem of race conditions. These bugs are nondeterministic, making them difficult to find and resolve. A race bug may not show up after hundreds of hours of testing, yet take down an application in the field with regularity.

Cilk++ programs are easy to write and test, because they have serial semantics. Any Cilk++ program can be debugged on a single processor using a standard serial debugger, assuring serial correctness. The CilkscreenTM race detector monitors a running Cilk++ application during regression testing and identifies any data-race condition that could cause the behavior to differ from a serial execution, identifying the filenames, lines, and variables involved in the offending races. By ensuring that the multithreaded version always operates identically to the original, serial version, Cilkscreen enables a regression-testing methodology that fits into your existing release processes, leading to reliable applications and confident release.


The Cilk++ race detector, running standalone or integrated within Microsoft Visual Studio, is guaranteed to find all cases where the result of the parallel execution could differ from the serial version.