4,580 Posts served
11,094 Conversations started
- Academic

- Android

- Art, Music, & Animation

- Embedded Computing

- Events

- Game Development

- Graphics & Media

- Intel SW Partner Program

- Intel® AppUp Developer Program

- Manageability & Security

- Mobility

- Open Source

- Parallel Programming

- Performance and Optimization

- Power Efficiency

- Server

- Site News & Announcements

- Software Tools

- Ultrabook

- Association for Computing Machinery TechNews (ACM)
- Go Parallel! (Dr. Dobbs)
- HPCwire (Tabor Communications, Inc.)
- insideHPC (John West)
- Joe Duffy's Weblog (Microsoft)
- Microsoft Parallel Programming Development Center (Microsoft Germany)
- MultiCoreInfo.com
- scalability.org (Scalable Informatics)
- Software Dev Blog (Intel Germany)
- Soft Talk Blog (Intel United Kingdom)
- The Moth (Microsoft)
Serial Programming is Dead! Long Live...uh...serial programming?
By Clay Breshears (Intel) (196 posts) on July 2, 2008 at 2:18 pm
A report from the recent Usenix conference quotes Prof. Dave Patterson saying "Serial computing is dead, and the parallel computing revolution has begun" in his keynote address. This statement and the rest of the pro-parallelism rhetoric wasn't what caught my eye. It was the comments from Andrew S. Tanenbaum, who received the Usenix Lifetime Achievement Award.
Specifically, the comment that "Sequential programming is really hard" got me to thinking about thousands of talking Barbie dolls that once caused an uproar with her comment that "Math is hard." I thought up comments about checking Prof. Tanenbaum for a drawstring between his shoulder blades. (Shame on me; no, really.) Then, I read the rest of his comments about how software is still pretty fragile and causes system crashes with an alarming frequency. The second part of Tanenbaum's sentence about parallel programming being a step beyond that was sobering.
I'm not sure how I feel about sequential programming as a difficult activity. We've moved beyond methods and technologies that had their productivity drawbacks, like patch cords, assembly language, punch cards, and rigidly formatted source lines. Even so, I often think that in our quest to make programming easier or more reliable, we've heaped new methods and technologies on ourselves that can easily complicate things more than previous things have been.
If our current programming methods, models, and environments are complex enough that we can't write software to be much more reliable than a broken watch, then what will it be like when we try to wedge parallel programming and all those attendant complexities into those same methods, models, and environments? This is what I took to be Prof. Tanenbaum's point in his quoted comments. (And I renew my humility at his sagacity.)
What about chucking out all the flotsam and detritus we've accumulated over the last 40 years of programming and start with something new, something that starts at square [0] with parallel thought processes? First: if you thought this, please hit yourself with a rolled up newspaper for me. Second: realize that starting fresh may ultimately be a good choice and allow us to focus on the problems of parallelism and overcome the failings of current methods, but it's tough to get entrenched methods replaced by untried technologies. Besides, who wants to take all the time required to completely rewire our modes of thinking and teaching, when they can get by with the mostly status quo? Or the status quo with some parallelism wedged in a few slots?
Prof. Patterson summed it up well with, "In order for parallelism to succeed, it has to result in better productivity, efficiency, and accuracy." For better or for worse, "market forces" will drive a winner in the parallel programming arena. Will it be the best solution? Maybe, but I don't think Prof. Tanenbaum will be holding his breath. It certainly won't be the only solution we see in our near future.
Categories: Parallel Programming
For more complete information about compiler optimizations, see our Optimization Notice.
Comments (2)
| July 18, 2008 2:22 PM PDT
Clay Breshears (Intel)
|
There have always been specialized langauges and I'm sure we'll see many more in the coming years within the realm of parallel programming. Some of these will stick and others won't. It all comes down to the size of the audience and how easy/useful the language becomes. Specialized hardware, like GPUs and things like the Connection Machines, can drive languages for that specific instance. If the language can be adapted to more general purpose computations, it would stand a better chance of adoption. Overall, I doubt that a totally new language will dominate parallel programming. There are some DoD efforts to define a parallel programming language standard and academics have put forth some entries in that arena. Market forces are going to keep the current languages with parallelism extensions in play, for the foreseeable future. Threads, for better or worse, will be around for a while; message-passing, even though it doesn't have the same pitfalls as threads and shared-any programming, wil still bea round, but may be seen as too complex for general adoption; data-parallel methods are getting some play with GPGPUs and could break out into the mainstream. It's all up for grabs at this juncture. |



JamesF