| Last Modified On : | November 16, 2009 12:06 PM PST |
Rate |
|
| What If Home | Product Overview | Technical Requirements | Online Documentation | FAQ | Primary Technology Contacts | Discussion Forum | Blog |
Intel® Concurrent Collections for C++ provides a mechanism for constructing a C++ program that will execute in parallel while allowing the application developer to ignore issues of parallelism such as low-level threading constructs or the scheduling and distribution of computations. The model allows the programmer to specify high-level computational steps including inputs and outputs without imposing unnecessary ordering on their execution. Code within the computational steps is written using standard serial constructs of the C++ language. Data is either local to a computational step or it is explicitly produced and consumed by them. An application in this programming model supports multiple styles of parallelism (e.g., data, task, pipeline parallel). While the interface between the computational steps and the runtime system remains unchanged, a wide range of runtime systems may target different architectures (e.g., shared memory, distributed) or support different scheduling methodologies (e.g., static or dynamic). Here we provide a runtime system for shared memory systems that supports parallel execution although it is not yet highly optimized. Our goal in supporting a strict separation of concerns between the specification of the application and the optimization of its execution on a specific architecture is to help ease the transition to parallel architectures for programmers who are not parallelism experts.
New with Release 0.4.0
Features and Benefits
1. What is Intel® Concurrent Collections for C++
Intel® Concurrent Collections for C++ is a programming model that allows application domain experts to write multi-core enabled applications without reasoning about threads, the parallel algorithm, or details of scheduling.
2. What is the derivation of the name “Intel® Concurrent Collections for C++”?
We wanted a name that was both generic and descriptive of what the product does and one that did not conflict with existing names in the industry. “Concurrent” obviously alludes to the fact that this is a parallel programming technology. Wikipedia defines “Collections” as a grouping of some variable number of data items. It is also a term used in object oriented programming to refer to a set of objects. Intel® Concurrent Collections for C++ speaks of three types of objects: steps (computations), tags (controls), and items (data). So the name seemed both generic and descriptive!
By the way, the original name for the technology, “TStreams”, referred to tagged streams. The tags allow Intel® Concurrent Collections for C++ to be more powerful than strict streaming models. You will see the name “TStreams” in several papers that are available on the web, co-authored by one of the developers of the technology who is now an Intel employee, Kath Knobe.
3. How do I write parallel applications using Intel® Concurrent Collections for C++?
You are an application domain expert. Imagine you are describing your application to a friend on a whiteboard. You specify the computational steps and their inputs and outputs in graph form. Intel® Concurrent Collections for C++ provides a simple textual notation for you to represent your graph. The textual notation is processed by a Translator which generates a header file that defines the interface to the runtime system. A “coding hints” file, generated by the Translator, assists the user to correctly specify the interface of the computational steps to the runtime system.
In contrast to the way one would write a serial program, at no time does one specify the execution order of steps, only the inputs and outputs. The runtime system is responsible for scheduling the execution of the steps when its inputs are available and all the conditions for execution are met. At no time in this process does the domain expert reason about execution order or scheduling.
For a full discussion see the Concurrent Collections Tutorial (PDF 402KB).
4. What is in the Intel® Concurrent Collections for C++ package?
Intel® Concurrent Collections for C++ includes the Translator/Hints file generator, user documentation (Getting Started, User’s Guide (PDF 197KB), Runtime API, Textual Notation (PDF 86KB), Tutorial (PDF 402KB), and Release Notes), runtime library, samples, and Visual Studio* add-ins that support either Visual Studio* 2005 or Visual Studio* 2008.
5. What benefits can I expect from using Intel® Concurrent Collections for C++?
The Intel® Concurrent Collections for C++ approach allows for a separation of concerns in parallel programming. You as a domain expert only need to focus on the semantics of computations (what the domain expert already knows) without reasoning about the underlying parallel model and the specific target architecture. Porting to a different target platform or interfacing to a different runtime is simplified because the description of the computation remains the same.
6. What applications are suited for parallelization with Intel® Concurrent Collections for C++?
Every computation step specified in an Intel® Concurrent Collections for C++ graph is assumed able to be executed in parallel with only the constraints imposed by the relations in the graph. When all required inputs to a step are available, the step can start execution and may produce outputs that further drive the execution of other step instances. Re-targeting the application for a different form of parallel execution requires only linking the compiled application with a runtime appropriate to the hardware configuration.
7. How do I get started?
You must have the prerequisite software (see Technical Requirements) installed on your system before downloading. After downloading Intel® Concurrent Collections for C++, you can follow the easy instructions in the Getting Started document in the package and begin building some of the samples to familiarize yourself with application building procedures. The User’s Guide provides more detailed information as you begin migrating your own serial programs to Intel® Concurrent Collections for C++.
8. How does Intel® Concurrent Collections for C++ differ from other parallel models such as OpenMP* and Intel® Threading Building Blocks?
OpenMP* is a shared memory parallel programming model consisting of a set of compiler directives and library routines that extend C/C++ (and Fortran). The user uses the language extensions to specify control structures, data environment, synchronization, and scheduling approach for parallel executions.
Intel® TBB is a C++ template library that implements a set of common parallel programming patterns. The user chooses among parallel algorithm templates for parallelizing an application without the need to deal with threads and scheduling policies.
Like OpenMP* and Intel® TBB, Intel® Concurrent Collections for C++ provides a high-level programming abstraction for parallel. Unlike these other parallel programming approaches, however, Intel® Concurrent Collections for C++ does not require the application domain expert to reason about the parallel algorithm or scheduling.
9. What is the state of the product on the WhatIf site?
This is a prototype product. Performance and scalability are not yet fully addressed by this prototype release.
10. How do I report problems or send feedback?
Please report problems or send feedback through our software engineering blogs.
11. What kind of feedback are you looking for?
We appreciate all feedback; in particular feedback on the following:
Please visit the What If Software Forum and share your thoughts in an Intel Concurrent Collections for C++ discussion thread (or create a new one!)”
| May 25, 2009 5:57 PM PDT
ibrahim | any plan for windows |
| June 1, 2009 10:40 AM PDT
khaled |
an incomplete step is a failure in the technology world thus, i'm taking this seriously ... |
| July 16, 2009 11:01 AM PDT
prem77
|
Intel Software Network, Please i no any idea about intel software black belt , give me all information about same. |
| July 16, 2009 11:01 AM PDT
prem77
|
Intel Software Network, Please i no any idea about intel software black belt , give me all information about same. thank you, |
| July 16, 2009 11:07 AM PDT
prem77
|
Intel Software Network, how to collect point ... |
| September 2, 2009 3:28 AM PDT
Madhav Rao
|
HEY I HAVE DOWNLOADED THIS COMPILER AND HOPE IT SOLVES MY PROBLEM. CAN ANY ONE TELL ME HOW TO INCLUDE OPENMP AND PTHREAD LIBRARIES IN MY V.B. AS WELL AS C COMPILER. THANKING YOU. |

English | 中文 | Русский | Français
| Kathleen Knobe (Intel) | ||
| Leo Treggiari (Intel) | ||
Stephen Rose (Intel)
| ||
Shin Lee (Intel)
| ||
| pgoefforylowney |
Sanjay