I read an article today published in the Technology Review at MIT that focused on the multi-core processors and the hurdles that developers face when writing software to take advantage of multi-core processing.
Researchers at MIT are developing a framework that abstracts some of the details of parallel programming. They want to help mainstream developers move to parallel programming more quickly and still be efficient.
Their focus is preventing complete system failure when different applications or tasks run on separate cores. Systems fail in these scenarios because one application accesses some shared memory and when another application tries to access the same shared memory, the whole system can freeze and eventually shut down.
Currently, developers must put safeguards in place to prevent these system crashes, but at MIT, they are trying to develop a more transactional way of accessing this shared memory. They want to make sure multiple applications can access shared memory without any deadlocks and verify that when an application makes a change to the memory, the memory is still viable for the next transaction.
Major players in the industry like Microsoft, AMD, and Intel are investing a lot of money into making parallel programming easier. This seems like the right path to me. Abstraction is an integral part of Object Oriented programming. I hope a number of different APIs come from these corporations in the near future. Multi-core processors are here to stay. In fact, they will continue to grow. Intel and AMD plan on releasing the first consumer-oriented quad core processor in 2007 putting more pressure on developers to write software to take advantage of this hardware.
Microsoft supports OpenMP in C++ and C# in Visual Studio 2005. This is a good first step, but I think having another application building block release from Microsoft would propel parallel programming into the mainstream.
Making parallel programming easier is the most logical path if wide-spread adoption is the goal. Industry developers do not have a lot of time typically to spend on research and development. Even though they may take time to research alternative ways to develop software, large-scale implementation changes can be too vast and time consuming to be useful. Hopefully by increasing the amount of abstraction, changing to a parallel programming might not be such a huge leap.
Michael Cassens
mcassens@3leaf.com
Comments