Current attempts to use multi-cores in the mainstream computing world, like the efforts made by Intel and Microsoft with a bunch of US universities, are doomed.
"I think they (Intel and Microsoft) are trying to solve a different problem", May told me last week, "they're taking all the PC applications and putting them on multi-cores. That's a very different problem and, in my view, they won't be very successful. Taking sequential programmes and trying to make them run in parallel is virtually impossible."
May sees three approaches being followed for programming multi-cores which have no chance of success.
First the shared memory approach. "Shared memory is incredibly difficult to do", said May, "Intel have tried for years to optimise access to memory and now they're trying to put several cores to accessing one memory and it becomes more and more complex. If you take a general purpose processor the cores are fighting to get access to the memory system."
Secondly people put their faith in compilers. "Some people will bet on complex heterogeneous architectures and compilers that do magical optimisations - if they don't know that compilers take much longer to develop than hardware."
Thirdly: "Some people will bet on abstraction layers to allow legacy software to be ported to parallel machines - if they haven't yet discovered why their mobile phone takes so long to boot," said May.