The Coming Age of Parallel Programming on Windows
0
0

Microsoft's "Parallel Extensions to the .NET FX CTP" announcement was a bit of a surprise to me. At OSCON in July, I found the presentations given by Simon Peyton-Jones (Microsoft Research) on Haskell and transactional memory to be highly interesting. I attended OSCON to participate in the launch of the Threading Building Blocks open source project, for which I serve as "Community Manager" (working for O'Reilly Media). One of the things that surprised me about OSCON was the amount of attention that was given to multicore and the parallel computing future.
Simon Peyton-Jones talked mostly about Haskell, so I assumed that Microsoft's approach to parallel computing was going to involve Haskell. In this sense, I was initially surprised to hear about ParallelFX. "What happened to Haskell?" I wondered. But when you read the ParallelFX CTP announcement post, you see:
ParallelFX runs on .NET FX 3.5, and relies on features available in C# 3.0 and VB 9.0
and when you go to the Wikipedia C# page, you see that C# 3.0:
includes new features inspired by functional programming languages such as Haskell and ML
So, now it begins to make more sense. Indeed, at the end of his post, Somasegar calls the ParallelFX Community Technology Preview
another great example of close, ongoing collaboration between product teams and Microsoft Research.
Dawn of the age
Microsoft's Herb Sutter wrote an interesting post titled "The Concurrency Land Rush: 2007-20??" a few weeks ago. He talks about waves of technological advancement including two phases:
- A land rush phase during which vendors try to stake out their turf. The market sees an explosive proliferation of products trying to enable mainstream developers to work in the new paradigm and at the same time to differentiate themselves from each other. This phase always takes multiple years, and multiple major releases of many products, consumed at first mainly by early adopters and then, as products mature, broadly across the marketplace.
- A shakeout phase as, eventually, the market sifts through the products, selects major winners, and realigns itself around them.
This makes a lot of sense. Indeed, when you think about the history of products such as automobiles, home computers, etc., it's clear that this is exactly what happens. With operating systems and software, it happens too, though it seems to me that the virtual nature of software provides an opening for new innovation even after the marketplace reaches a mature, or even "saturated" state, that is not there for hard items we can pick up or touch. As an example of this, I'd cite Linux.
How long before the concurrency "shakeout"?
Since my main work these days is the Threading Building Blocks open source project, thinking about concurrency and multithreaded development issues is something I do every day. TBB certainly has a head start on ParallelFX, but if Herb Sutter is right then we have a very long way to go before we get anywhere near the "shakeout" phase, and many technologies that may ultimately become important have likely still not yet left the starting gate:
Expect at least dozens of major product announcements and releases across the industry, before the toolset expansion phase is fully underway and approaching some maturity. We the industry have undertaken to bring concurrency to the mainstream, and as with OO and GUIs it will take multiple years, and multiple major releases, across the industry on all platforms.
Everyone's thinking...
With Intel's converting its multiplatform Threading Building Blocks product into an open source project last July, and Microsoft's release of the ParallelFX CTP (Community Technology Preview), it's clear that the key participants are very much aware of and focused on the need for more convenient methods for developing multithreaded applications that will run on the multicore platforms that will soon be ubiquitous in offices and homes.
It's interesting to me that many people doubt that there will be a "wash-out" where applications that don't take advantage of multicore processors are driven out of the marketplace by competing applications that full utilize multiple cores. For example, see the comments to my "Poll: How Soon Will Multithreaded Apps Dominate?" post.
It's true that apps that are primarily interactive (such as chat applications) needn't be multithreaded. But the history of computer technology suggests that all available hardware power will be taken advantage of by savvy software developers in a relatively short timeframe -- such that the software developers eagerly await the next round of hardware advances, so that owners of lower-end systems can run their software with decent performance.
A nice video series on parallel programming
If you want to learn a bit more about what all this concurrency discussion is about, why it's suddenly becoming a prominent topic of conversation and research, there's a nice series of videos at the Devx.com go-parallel site. The videos are chalk-board talks, most of them given by Intel's James Reinders, technology evangelist, VP, and author of the O'Reilly book Intel Threading Building Blocks. Enjoy!
Keywords: parallel_programming

