Monday, March 9, 2009

Cilk++

Cilk++ is similar to OpenMP in that way that you specify the program's concurrency structure with special keywords. The tool chain and the run time thereby turn your sequential program into a highly concurrent one. Cilk ARTS focuses on porting existing software on multi-core systems with least possible knowledge about concurrent programming.

In my opinion the most important part of their tool chain is the "Race Detector". Cilk ARTS claims that it detects any existing data race in the program. This means, if the Race Detector finds no error, the concurrent program is correct if and only if the sequential one is. And the correctness of the latter is already checked with traditional software tests.

I have no idea how the Race Detector works. And I'm afraid they won't tell anybody any details. What they say is that they test if all possible schedulings result in the same values of the data. But how does the Race Detector get all possible threads of execution without automatically "understanding" what the code does?