What CnC is all about
The major goal of Concurrent Collections (CnC) is a productive path to efficient parallel execution. And yet a CnC program does not indicate what runs in parallel. Instead, it explicitly identifies what precludes parallel execution. There are exactly two reasons that computations cannot execute in parallel. If one computation produces data that the other one consumes, the producer must execute before the consumer. If one computation determines if another will execute, the controller must execute before the controllee. CnC is a data and control flow model together with tuple-space influence. However, it is closer in philosophy to the PDG (Program Dependence Graph) intermediate form than to other parallel programming models. Its high-level abstractions allow flexible and efficient mapping of a CnC program to the target platform. By this it simplifies parallelism and at the same time lets you exploit the full parallel potential of your application.
CnC makes it easy to write C++ programs that take full advantage of the available parallelism. Whether run on multicore systems, Intel® Xeon Phi™ processor-based systems, or clusters, CnC will seamlessly exploit the performance potential of your hardware. Through its portability and composability (with itself and other tools), it provides future-proof scalability.