Parallel Computing: Microsoft or Intel
Until recently, I personally didn't give Microsoft (R) much props for parallel computing research and development. I always equated their efforts in the developer community to desktop development productivity tools (which are top notch by the way) and considerably "unreliable" products (like Vista).
However nowadays it seems like they are becoming really serious with dealing with the multi-core and concurrent development movement. I see lots of room for improvement, but I think I would be convinced finally when Visual Studio 2010 with better C++0x support and better concurrent programming tools come from their well-guarded gates. Some of the evidence that's starting to sway me towards giving big MS more credit is shown in the smart and insightful discussion between hotshots from within Microsoft in this Channel 9 video by Charles on Parallel Computing in Native Code: New Trends and Old Friends.
I personally give Intel a lot more credit for their superior C++ compilers for their platform and the widely-accepted (not to mention Open Source) Threading Building Blocks. In a recent video about OpenSolaris and Core i7, I see Intel really playing well with the open source community by doing lots for the OpenSolaris operating system and making it work better for the Core i7 (codename Nehalem) micro-architecture.
Looking at the situation as a semi-outsider, I think how Microsoft and Intel are playing the industry is very complementary -- Microsoft has great tools for developing software for their platform that work on Intel's hardware while Intel works with Microsoft by making sure Windows works well on Intel hardware. It's hard to miss how these two big players in C++ will definitely shape how the future of programming will look like especially with a new low-level architecture and better-looking and productivity-enhancing tools.
Now what about the competition? Sun's play into the High Performance Computing and Cloud Computing market is showing how they want to play at a higher level than low-level concurrency and better developer tools. Although I know Sun has been offering x86-based servers, I still think their focus on a higher level is both good and bad. Good because they're trying to take a foothold in a vigorously emerging sector of the industry. Bad because that means they might be relying on other people's efforts (Intel and the open source community) to advance technology.
At any rate I see big blue IBM being the most to gain in the field -- their mix of research and development for hardware and years worth of expertise in the consulting business is like a good 1-2 punch for staying relevant in any market. So while I see Microsoft and Intel pushing the envelope with C++ and parallel computing, I see lots of other people and companies getting most of the benefit.
Maybe someday I can get in on the action too providing much a crucial service to those who need it. But that's not in my horizon yet as far as I can tell.
What do you think about the current software and hardware movement towards parallelism?



1 comments:
I think that Java is going to be so far behind I can't see it catching up. With Intel having MPI, OpenMP and Thread Building Blocks, then Microsoft which is utilizing the Intel technologies and allowing their .NET languages to take advantage of the underlying concepts (ie Parallel.For, Parallel.While etc). Microsoft has also come out with F# and STM.NET.
Eventually we will not be able to share memory across CPU's, there is a limit to the shared memory model. That being said the industry needs to transition itself more into a CPU/core memory locality mindset. This is the transition that Microsoft is doing for it's developers and working directly with Intel to try and do it properly.
This new era will be more disruptive to the programming communities as a whole than when OO came out. I just don't see the java community well enough organized to transition it's developers into this new era. When looking at the amount of lines to write/maintain to make a multi-tasking/multi-threaded application in java compared now to c++ or c# (with the new tools) I cant see using java for parallel coding. The cost is just to high. I believe this will eventually be the slow death of java for enterprise level coding IMO.
Post a Comment