Are Developers Catching up with all the Multicore Hype
Multi-core is the way of the world nowadays. Every computer and high-end handset is being equipped with a multi-core processor with Single core processors on the verge of becoming obsolete. However, how far has the average developer lived up to this?
IEEE Spectrum puts it in the best possible way with the words,
The semiconductor industry threw the equivalent of a Hail Mary pass when it switched from making microprocessors run faster to putting more of them on a chip doing so without any clear notion of how such devices would in general be programmed. The hope is that someone will be able to figure out how to do that, but now, the ball is still in the air.
However, the idea sounds good on paper and is not that easy to implement. A multi-core environments and multitasking programs needs us to maintain IPC (inter process communication) at large with the help of which, processes synchronize their operation. Apart from that, we also need to implement effective thread management. Threads, as we know are again slaves of the thread API we use to create these programs and then there are CPU hit and miss factors and load balancing. All this combines into a notorious little world of endless problems and possibilities and the programmer is solely responsible to make that world a better place much like the Batman of Gotham City.
There have been many ideas talking about alternative solutions like creating languages that would automatically multitask and reuse per-calculated results. These are again, full of flaws and exploits. So, what do we have here overall?
No doubt, the processors are rolling out with more cores than ever. They are going from two to four to sixteen (the AMD Bulldozer for instance). However, what have not changed are the awareness and the level of expertise amongst programmers to make effective use of these processors. Let us see how the developers live up to this in the next few years.