Channels ▼

James Reinders

Dr. Dobb's Bloggers

Pipelining for Parallelism - Two alternatives

June 30, 2008

Pipelines make a great way to exploit parallelism, and there are two great ways worth exploring to do exactly that.

Of course - both offer solutions for good scaling with multi-core processors, and both focus on fitting into C++.

Where they differ is how much they help with avoiding non-determinism in your parallel application.

One solution makes it your problem, and the other guarantees a deteministic program.  As you might guess - to use the guaranteed method will require more learning of the techniques, and more investment of re-casting your program in new terms.

Is it worth it?  Time will tell - both are available for trying - free of charge...

Intel Threading Building Blocks offers pipeline constructs for just this reason - and is available for free.  TBB doesn't force you to make you program easy to debug - it makes that your problem.  On the other hand, TBB makes doing pipelines in C++ with great scalability very easy - it slips into a C++ program without a great deal of learning necessary. It is easily one of the most popular features in TBB.

Whatif.intel.com offers Intel Concurrent Collections for C/C++ which embodies many of the concepts here - and is available to experiment with for free. CCC takes more effort to learn, but in exchange guarantees a deterministic program. It grows out of a research project formerly known as T-Streams (tagged streams), which is now very timely for multi-core processors.

 TBB is a couple years old, and nearing one year as an open soruce project.  CCC is a very new entrant - appearing on Whatif very recently.

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video