Fifteen years ago I wrote a short article in a now defunct parallel computing magazine (Parallelogram) entitled “How Will You Program 1000 Processors?” Back then, it was a good question that had no easy answer. Today, it’s still a good question with no easy answer, except now it seems a bit more urgent as we step into the “mulit-core” era. Indeed, when I originally wrote the article, using 1,000 processors was a far off, but real possibility. Today, 1,000 processors are a reality for many practitioners of high-performance computing (HPC). And as dual-cores hit the server room, effectively doubling processor counts, many more people will be joining the 1,000P club very soon.
So let’s get adventurous and ask, “How will you program 10,000 processors?” As I realized fifteen years ago, such a question may never really have a complete answer. In the history of computers, no one has ever answered such a question to my liking — even when considering ten processors. Of course, there are plenty of methods and ideas like threads, messages, barrier synchronization, and so on, but when I have to think more about the computer than about my problem, something is wrong.
Having spent many a night trying to program parallel computers (the most recent incarnation being clusters), I have come up with a list of qualities that I want in a parallel programming language. Since I am wishing for the moon, I may be asking for the impossible, but I believe some of the…
Please log in to view this content.
Not Yet a Member?
Register with LinuxMagazine.com and get free access to the entire archive, including: