Parallelism Without the Pain
Why CnC?
CnC makes it easy to write C++ programs which take full advantage of the available parallelism. Whether run on multicore systems, Xeon Phi™ 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.
Intel® Concurrent Collections for C++
Intel® Concurrent Collections for C++ is a C++ template library for letting C++ programmers implement CnC applications which run in parallel on shared and distributed memory. Intel(R) Concurrent Collections for C++ is now also available as open source from github
Primary features
The following downloads are available under the BSD license. The current version is 1.0.100.
Including required TBB bits Choose one of these if in doubt | Linux* 64bit | |||
---|---|---|---|---|
Windows* 64bit | Windows* 32bit (old ver. 1.0.002) | |||
Without TBB bits Requires existing TBB >= 4.2 Update 3 | Windows* 64bit | Windows* 32bit (old ver. 1.0.002) |
The Idea
The major goal of CnC (Concurrent Collections) 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 let's you exploit the full parallel potential of your application.
What's new in version 1.0?
- Support for re-use
- Write CnC graphs and use them in other CnC programs (multiple times)
- Embed non-CnC functionality in a CnC application
- Reductions
- Join/Cross
- Combine MPI programs with CnC code
- More example codes
- Attaching to databases (mysql*)
- Showcasing reductions, mapreduce, join, CnC-SPMD/MPI combo and more
- Intel(R) Concurrent Collections for C++ is now available as open source from github.
- Bug fixes etc.
- Added support for Visual Studio* 2013, dropped support for Visual Studio* 2008 (Microsoft Windows* only)
- With Update 1.0.100:
- Improved tracing output: put()s, get()s and reporting never-available items linked to calling step
- Added warning messages about put()s before get()s in step executions (unless -DNDEBUG)
- New CnC programs/samples: raytracer and jacobi2d-heureka
- Improved startup process for SOCKETS on distributed memory
- Dropped binary releases for ia32 and Visual Studio* 2010 (Microsoft Windows*)
- Source structure improvements on github
See also the Release Notes.
Docs about Intel® Concurrent Collections for C++
Tutorial
API Documentation
Release Notes
Getting Started
FAQ
CnC Papers and Related Links
The Concurrent Collections Programming Model
Parallel Programming For Distributed Memory Without The Pain
Performance Evaluation of Concurrent Collections on High-Performance Multicore Computing Systems
Measuring the Overhead of Intel C++ CnC over Gauss-Jordan Elimination
Segmentation for the Brain Connectome using a Multi-Scale Parallel Computing Architecture
Cluster Computing using Intel Concurrent Collections
Habanero Concurrent Collections Project at Rice University
Discussions, Report Problems or Leave Feedback
To report a problem or request a feature, please use the issue tracker on github: https://github.com/icnc/icnc/issues
For questions and feedback on this product you can also visit the "Whatif Alpha Forum" to participate in forum discussions about Intel® Concurrent Collections: http://software.intel.com/en-us/forums/intel-concurrent-collections-for-cc/
To stay in touch with the Intel® Concurrent Collections team and the community, we provide a new email-list you can subscribe to or just watch online:
http://tech.groups.yahoo.com/group/intel_concurrent_collections/