Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Channels ▼

Jack Woehr

Dr. Dobb's Bloggers

Getting Positioned in Parallel

March 25, 2009

As multicore issues arise in your personal programming practice, what you want to know is how to position yourself in the new arena. I have a few practical observations to share on this score.First of all, the new arena is called "How to use all this power." Things you could not do before you can do now. Things can genuinely happen asynchronously and simultaneously now, which is the making of certain algorithmic confections and the breaking of certain legacy applications.

Let's refine that: "How to use all this power safely." Multiproc operating systems can stymie older apps which had implicit, hidden dependencies on the serial implementation of classic multitasking's emulation of parallelism.

Let's refine that further: "How to use all this power safely in the context of the marketplace." All the parallel algorithms were known decades ago. What is most accessible and broadly useful in the mass marketplace is a loose task parallelism supported by the higher-level toolkits, the synchronization of work units that themselves are conceptually unitary but at the code level are complex and heterogenous. Classic biz/consumer applications exhibiting multitasking were already modelling this in the multitasking era, albeit their code bodies, compiled objects and some conceptions were broken or flawed when transferred to genuinely parallel platforms.

And further: "How to use all this power safely in the context of multiple marketplaces." There are layers of increasingly technically demanding parallel application market spaces. Image resolution is deeper (though arguably more straightforward) than speeding up a word processing package.

The first thing to do is decide what you want out of which parallel platforms. Are you writing consumer apps or mapping distant galaxies, and are you doing it on Windows, or portably also to Mac and Open Source, or on a custom platform like IBM SP?

It all resolves itself as soon as you ask the right questions. If you're in supercomputer world, including supercomputers woven from packs of biz/consumer boxes, your algorithms will come from textbooks and experience and your tools will be dictated by implementation availability.

If you're doing computationally intense stuff or designing programming frameworks or authoring C/C++ backends to transactional web applications, you should explore feverishly TBB and OpenMP and become briefly expert in all nuances, including the nerdly compiler support/non-support issues for every platform you support. Join the community, read the forums, the whole nine yards.

If you're working on classic biz/consumer apps, you're probably best off doing workflow systems based on messaging models, possibly employing messaging middleware. You'll never write a lock or a semaphore and you won't miss it very much.

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.