My colleague Danny Dig wants to rebut my last post, but is in the process of moving, so I will attempt to paraphrase his position. Danny is going to the Universal Parallel Computing Research Center, richly funded by Intel and Microsoft along with a sister lab at Berkeley. That fact alone argues against my impression that multicore research is burning out. Where there is funding, there is research.
Danny points out that latency can often be a more important issue than raw speed, and requires parallelism even on single-core processors. Performance tuning is often only needed in small regions of code, but latency improvement can require more global design changes. Latency is an important end-user issue, making parallelism an essential feature that must be embraced rather than an implementation detail to be hidden.
Danny also points out that we don’t necessarily need to adopt a whole new programming language semantics in order to make parallelism easier. His latest work is a good example: developing refactoring tools that assist in the tricky business of adding parallelism to existing code. Rather than force a whole new programming language on us, it helps us deploy existing parallelization techniques. Great idea.
These arguments force me to admit that parallelism is essential, that it is not just a performance obsession, and that current research on it could in the end be a good thing for programming overall. I still don’t feel like working on parallelism myself, mostly because I have burned out on it. I guess what really bothers me is the way that multicore is hyped up as the most important issue facing software. Parallelism matters, but we have way bigger problems, like figuring out how to not totally suck at programming.
Update: It finally hit me what really bugs me about the whole multicore frenzy. I have been trying to convince people of the need to radically change our programming languages in order to make them easier to use. The difficulty of programming is a fundamental issue for our entire field. Almost no one cares. Academics treat it as a disreputable topic. But give people a chance to speed up their programs, and they are willing to consider all manner of radical new programming languages. Just pointing out that performance is not a universal problem subjects me to a stream of abuse. It makes me angry and jealous.