Wednesday, December 16, 2009

Multi-core - How is legacy code being enabled for Multi-core CPUs?

Multi-core processors take advantage of advancement in chip manufacturing technology to implement two or more execution cores on a single micro processor. These execution cores essentially are individual processors on a single die. Multi-core processors have evolved from Intel's HT(Hyper threading technology) and according to Intel, multi-core when combined with HT is going to provide powerful optimization and deliver system throughput substantially. The multi-core architecture is very well explained in this Intel Paper.
I have been following the trend in CPU architecture for a long time. We have been using multi-core processor desktops and servers for over a year now. My interest is to know how legacy software applications are leveraging this new architecture for performance. Until recently, I did not hear much about enabling software programs for multi-core, why? I asked one of my friend who is an expert in parallel programming. He told me that there are a couple of reason majority of applications are not being touched. First, parallel programming is NOT easy and second, for now multi-core is limited to dual core in majority of places. Most you can get by enabling application is two fold performance gain on a dual core. This may not be worth overhauling the software, cost can be the problem. He explained that, once 8 and 16 core processor become common, then vendors will be forced to redisgn/rewrite/enable application for multi-core.
So, the next big question is how are the myriad of applications are going to be enabled for multi-core? Are there any tool/libraries available to do that?
I did some research and found out that indeed, a lot of efforts are going in developing standards and tools to enable multi-core programming.

  • Intel's Threading Building Block (TBB) is an Open Source Library to enable multi-core parallelism in C++ program. TBB threaded applications automatically scale to fully utilize available cores on the system. TBB documentation including a tutorial and Getting started guide can be found here. The open source binaries for Windows, Linux and other platforms can be downloaded here
  • The OpenMP API for parallel programming supports C++ and fortran languages. The overview of OpenMP API can be downloaded here. I also found a nice exercise which I am going to try .. 
  • Microsoft provides a set of tools for parallel programming and concurrency testing at it's parallel computing portal.
I will keep my eye open and acquire some skills on the subject. Please post any comment / resources related to this here.

No comments:

Post a Comment

Make Everyone Smile

Hey there! Just wanted to let you know that today is officially National 'Make Everyone Smile' Day! So, consider yourself officially...