Thinking Parallel

A Blog on Parallel Programming and Concurrency by Michael Suess

Choice Overload and Parallel Programming

ChoicesI have been very quiet on this blog lately, mostly because my new job and the creation of our new house have kept me rather busy. Having to get up at 6 in the morning to be able to bring our son to kindergarden has not helped my productivity in the evenings either – and of course that’s the time when I am usually writing for this blog. But anyways, I will try to be more productive in the future. What I would like to write about today are two blog posts from Tim Mattson, the first one called Parallel programming environments: less is more and a follow up called Is anyone dumb enough to think yet another parallel language will solve our problems? I MIGHT be!. While I think Tim raises some very valid points, I still believe his conclusions are in need of some more discussion! 🙂 This post also includes a call to action at the bottom, so be sure to read it until the end!

But let’s start from the beginning. Tim cites a well-known study that shows, that too much choice will lead to customers buying less stuff. Jam in the example cited, but obviously the study can be applied to other things as well. Tim applies it to parallel programming systems and concludes:

But don’t waste my time with new languages. With hundreds of languages and API’s out there, is anyone really dumb enough to think “yet another one” will fix our parallel programming problems?

I do. Or at least I hope for another language that’s better than what we have now. Let me compare the situation today with the search-engine market before Google. There were more search-engines at that time than any single user could try out in a reasonable time frame. New ones were continuously created and funded. Yet, Larry Page and Sergey Brin did not worry about their competition back then, they went ahead and created the next big thing. And choice overload certainly did not stop their success story.

Another example: Linux and the amount of free software available for it. Nobody can try out all open-source programs out there for even a limited field like multimedia. Even the choices for a simple program to burn CDs with can be overwhelming. This used to be a real problem for distributions. Fortunately, the solution to choice overload there is easy as well, and distributions have been employing it from the very beginning: they are doing the selection for me. When I install a clean Kubuntu-system for example, it comes with K3B preinstalled, which does a very fine job of burning CDs for me. And if I don’t have very special needs, I will never worry about burning CDs again, because the preselected solution works fine for most needs. If I ever need a really special feature that K3B does not provide, I can go look for another piece of software that satisfies my needs and because I have a choice, I will most likely find one that fits.

Choice is good, experiments are good and we need all the experiments and new programming systems for parallelism we can get, because after all this is a hard problem. And even if some of those systems are reinventing the wheel, I could not care less because there are times when a reinvention will really kick off where the original version failed. There is no stronger force in the universe than an idea whose time has come. Or something like that. 😉

To make your choice of a parallel programming system a little more difficult, I have decided to do a little experiment. I frequently get requests to review a new idea for a parallel programming system, or even the system itself. Unfortunately, I rarely have the time to do so at the moment. But since I know you (my dear readers) have a strong interest in new parallel programming systems (or else you would most likely not be reading this blog), let’s try this out: If you have invented an exiting new parallel programming system and would like the world to know about it (or at least the tiny part of it that reads my blog :smile:), I am inviting you to write a guest post about it here. If you are really exited about a new parallel programming language you have recently used, feel free to post about it here. A few rules:

  • The post must be original. I will not permit press-releases or the like, because my readers are not here to read duplicate content.
  • The post must fit in here. Just read a couple of my posts in the past and you will see what I mean. No academic papers for example, there are other places for those. A little humor is appreciated and don’t take yourself to seriously :lol:.
  • Of course, spelling and grammer must also be correct. I don’t claim I get those right all the time, but we should at least try hard
  • And last but not least: I reserve the right to reject any post. That should be self-evident, but I thought I would mention it again.

I am very curious how this turns out and looking forward to your contributions!

4 Responses to Choice Overload and Parallel Programming


  1. Comment by Stefan Eilemann | 2007/10/19 at 11:53:45

    I’m obviously excited about Equalizer, a parallel programming framework for OpenGL applications. It helps you to parallelize your OpenGL application to run on multi-GPU systems and graphics clusters, in order to scale the display size and/or rendering performance. Included are a polygonal and volume rendering example. Check out the website (link above) for more information.

    Now back to work to get the v0.4 release out!



  2. Comment by Jakob Engblom | 2007/11/23 at 13:27:24

    I agree that we need new languages, but I have a feeling that the successful ones will be those that are higher-level and more tailored to a domain. I talked to Jim on this in August this year, and since his background is mostly in HPC, he does not really have that kind of experience. He thinks in “coding” languages like C/Fortran/Erlang.

    I commented on this here: and here: . Anyone interested should check out what Labview is doing in parallel code generation, and the Matlab/Mathematica support for ClearSpeed processors. Basically, if what you have is a description on an algorithm rather than a particular implementation of it, compilation/code generatioin tools have much more information and freedom to make it run well on a particular piece of parallel hardware.

    Note that a domain-specific language can also be a kit of libraries and classes and algorithms used with a coding language ( talks about one such example).

  3. Comment by William Youngs | 2008/07/10 at 20:51:30

    Intel® Concurrent Collections for C/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. For more information and free download check out… 💡

Trackbacks & Pingbacks »»

  1. Pingback by My Ghillie » Choice Overload and Parallel Programming | 2007/10/18 at 21:13:03

    […] Check it out! While looking through the blogosphere we stumbled on an interesting post today.Here’s a quick excerptLet me compare the situation today with the search-engine market before Google…. […]

Comments are closed