Software Not Keeping Up With Multicore

I ran into this article by Gartner about software not keeping up with multicore. Multicore started slow with 2 and 4 cores, now up to 32 cores in servers and up to 1024 cores per server 4 years from now.

The article tries to point out a problem, but a lot got lost in the tech-to-analyst translation it seems. I agree that there is a big challenge out to programmers to keep up with the increasing parallelism in todays processors. This is true for the embedded as well as the enterprise field. However, many of the worlds servers (embedded or not) have workloads that are fairly straight forward to parallelize. Take network systems. Lots of calls, every call a distinct entity requiring resources. The challenge here is  load balancing, not parallelism.

Another example is virtualization, putting more applications on a single piece of hardware. Another scenario that scales fairly well with the number of cores increasing and software really does not have to adapt (except the hypervisor, the virtualisation manager).

Even the example cited in the article of 'an eight bit field used to hold the processor number' is not really that much of a problem, yes it requires a change, but there is sufficient abstraction between applications and the OS to not make that much of a problem

The real problem is that our current programming paradigm (sequential programming with threads and synchronization points) and operating systems are not suited to deal with 1024 cores. Another problem is that with 1024 cores the memory bus becomes an a massive bottleneck.

We have had single processors for a while, then we went multi processor, then multicore, the next step is here and is often called 'manycore'. The problem comes with manycore in high numbers for 'many'.

Our processing hardware has changed, but our paradigm has not evolved much. From my perspective we are not on a breaking point yet, but we could be there within a couple of years. The question really is what will our computers look like 4 years from now and how will we be programming them?