So I was trying to have a quiet hangover and mix with the good and the great of the industry the other morning at yet another technical meeting. I think I would have been quiet happy to thumb through various leaflets and cast a lazy eye over the odd press release or two, but no. It was not to be. Somebody wanted to engage me in a discussion on parallel processing and dual/quad core technologies.
As much as I wanted to succumb to the combined soporific effects of jet lag and the previous night’s over indulgence I quickly realised yet again why I love the software industry so much. We soon found ourselves immersed in a conversation on the relative merits of multi-core processors.
Although I know Intel is keen to tell us now that we need to develop with parallel processing in mind, the reality – it seems – is that so many applications are not built from the ground up to take advantage of multi core.
This means of course that if two streams of a multi-threaded app are trying to write to and/or read from memory at times that do not happily coincide, then rather than getting a speed boost from dual core processing, they are in fact subject to a hold up.
The official line from Intel (and this is taken from a meeting I had earlier this year with Intel’s lead evangelist & director of marketing James Reinders) is as follows, “I’m quite convinced that the ‘non-parallel’ era will appear to be a very primitive time in the history of computers when people look back in a hundred years,” he said. “Within a decade, a programmer who does not think parallel first will not be a programmer. The tools in this new world do not need to be radically different – but they need to address key problems related to abstraction of thread management and correctness verification.”
OK cool, but we’re not there yet are we? Just how far does parallel processing pervade into the way you approach development at the moment I wonder?