Pages: p. 80
The remarkable Charles M. Schultz produced the Peanuts comic strip every day for five decades. Like George Herriman's Krazy Kat—one long-running strip that inspired Schultz— Peanuts gradually evolved to a steady state in which a handful of gags were repeated many, many times. The unique elegance of Schultz's pen-work and the jokes that somehow said something important about the human condition kept the strip fresh in spite of the repetition.
A characteristic of venerable comic strips is that their philosophical foundation rests, in part, on unanswered and perhaps unanswerable questions about human behavior. Who can say why Krazy Kat believes that Ignatz hurls bricks as a demonstration of love. One of the standard story lines of Peanuts had Lucy holding a football and urging Charlie Brown to kick it. The questions are why Charlie Brown keeps falling for Lucy's trick, and why Lucy keeps pulling this stunt. After all, it must be painful for Charlie Brown, and it's certainly nasty of Lucy to do it. But Charlie remains hopeful because he really would like to kick the football and, when it's whipped away at the last second…. well, there's some satisfaction in seeing his worldview confirmed once again. Lucy's case is harder to explain. I suppose it's just her nature to disappoint Charlie Brown.
One of my persistent worries is that this parable from Peanuts might be relevant to the present situation in scientific computing. Here the role of Charlie Brown is played by the individual scientist or engineer—kicking the football corresponds to getting something near the advertised performance on the latest workstation. Unhappily, the role of Lucy is played (perhaps) by research groups focused on developing languages and software tools that will make parallel computing "easy" for the user.
The emergence of multicore, heterogeneous architectures has put parallel computing back in the limelight. As I write this, news articles are appearing about the Roadrunner architecture now coming online at the Los Alamos National Laboratory. But unlike the era of connection machines, hypercubes, and butterflies, the multicore wave will affect a much broader user community not limited to those at major laboratories. Moore's law speedups based solely on miniaturization are finally ending (as predicted in CiSE a few years back). Multicore for everyone is real, and it's here to stay. The main reason is that the commodity market for computer games is huge and competitive. Advanced chip architectures seem to be the only way to get the processor power needed for the more elaborate entertainment products.
The multicore machines really are parallel computers that almost nobody knows how to program for top performance. Research groups are saying, "This time for sure," meaning that they're asking for and getting some funding to develop parallelizing languages and compilers. I believe that better languages and compilers are useful and important, but I emphatically don't believe that these tools will help in any dramatic way. The central issue is the algorithms—it's always all about the algorithms. This, in fact, turns out to be the good news.
When a new algorithm is successful, it will eventually be generalized and re-stated in a refined and abstract way. But the initial idea and testing always involve the nuts and bolts of a problem at hand that must be solved. In the present case, the vast majority of programmers trying to use the new architectures are working for various parts of the entertainment industry. There are many such programmers, and they're smart and imaginative. And truth will out. These programmers' ideas will eventually reach the world of scientific computing. Till then, I'm encouraging everyone to try to figure out how some of the more advanced games do what they do.