I was briefly at the Multicore Expo last week and there was some talk about programming effectively for multicore chipsets. However most of the vendors exhibiting seemed to shrug it off as a non-issue. Their explanation being that their OS or platform would handle the scheduling processes and utilization of cores from existing software as-is with no modifications. Decided to Google it a bit and found some recent discussions on this topic.
For starters you can refer to this good write up on Wikipedia: http://en.wikipedia.org/wiki/Multi-core.
Gartner had a report out earlier in the year titled “The Impact of Multicore Architectures on Server Scaling” that talks about server side enterprise applications. Here is quote from the Gartner release:
“Looking at the specifications for these software products, it is clear that many will be challenged to support the hardware configurations possible today and those that will be accelerating in the future,” said Carl Claunch, vice president and distinguished analyst at Gartner. “The impact is akin to putting a Ferrari engine in a go-cart; the power may be there, but design mismatches severely limit the ability to exploit it.”
Another recent article on PC World by Agam Shah of IDG News talks about the challenges multicore poses to the software industry. One key issue seems to be avoiding “race conditions” resulting from multiple processes competing for the same resources an/or scheduling of tasks. Couple of other good articles on same lines I came across: Adapting Legacy Applications to Multicore Servers and The long slog to multicore land.
From what I could gather the challenges seem to be different in application software vs embedded software development. Here is a video of Max Domeika, multicore coding evangelist at Intel talking about embedded programming methods for mutlicore:
Anyway, the purpose of this post is to find out what you have experienced in the real world. Have you designed any software product for multicore chips? What were the challenges you faced?
Software product engineering firms have long been involved in product re-engineering right from the days of DOS-to-Windows conversions to most recently SaaS migrations. Do you see a need for product engineering services firms to offer multi-core re-engineering services? Appreciate your comments and discussion on this.

