Multicore programming – but what comes next?

For some time now, I’m completely dissatisfied with the technical possibilities, software developers have when writing multithreaded applications. Basic parallel structures like parallel loops and fundamental synchronization mechanisms are definitely needed and it’s a good thing programmers have those language constructs at hand. At university today we educate our students to
– be able to use these mechanisms correctly and
– point out the problems, that will most probably still arise when doing it
…well…

At the moment we develop software for 2 up to 32 cores. It might still be feasible for us humans to think that far – to think that parallel – but what if we wake up one nice sunny day and have hundreds of cores on a regular CPU? I mean, what’s the point in offering ‘parallel-for’ when developing software with millions and billions lines of code that should run effectively on hundreds of CPUs? According to Intel and AMD, this day will come. In less then a decade.

Last week I had an interesting conversation with Carsten Schumm from SUN Microsystems. He presented some of the problems they currently experience in engineering multicore-capable applications and solutions. I have been thinking about this problem a lot and I think we need a new programming paradigm.

For now I can say:
I don’t know what the solution could be, but I really fancy the idea to be part of it…