Filed under: Events
I was at a GPGPU programming workshop this week. I am impressed! A 15 times or greater speed-up in the serial code I run on my personal computer, can turn the one month computation into a 2 day computation. Or I can triple the domain size and still do it in one week.
So what is GPGPU programming? It is General Purpose Graphics Processor Programming, or performing non-graphics computations on graphical cards by disguising those computations as graphical operations.
When we think of supercomputers, we usually think of some kind of parallel architecture. Many nodes perform computations simultaneously. Within each node are mutiple CPUs — I hear they’ve gotten up to 6 these days — so you split up the computation between nodes which split them up between CPUs, and since many CPUs are working on the computation simultaneously in parallel, you can do the job in a shorter time.
It is actually a bit more complicated than this, because communication between nodes can be substantial (and costs to reduce internode connection can be substantial), so changing the way a job is split up can make huge differences in computation time. This is as much as I know about this subject, which is basically not much.
Our personal computers are akin to one of the nodes. (In Beowulf clusters, the nodes are personal computers.) They usually come with 2 or 4 CPUs. But what if…what if the supercomputer architecture is already present, in a cheap form? What if development of the technology is driven not but cranky scientists but by the masses who want it for their entertainment and are willing to burn money for it?
The what ifs are already present in the form of graphics cards.
When I first heard of GPGPU programming, the notion was still relatively new and it was not feasible to get into it. To do calculations of interest it was necessary to formulate one’s codes as graphic computations and trick the graphics card into doing it. A few years later, the libraries to do so have appeared and are spreading.
My boss was not impressed. Supercomputers still give better performance, he pointed out, and models are written for supercomputers. Sure, they are. But I think he misses the point. Large, highly specialised models will always run on “supercomputers”. But nobody said what kind of architecture “supercomputers” should have. A “Supercomputer” is a “super” computer. What GPGPU programming does, is that is brings computation power on a single personal computer dramatically closer to current supercomputer standards, for a fraction of the price and manpower. (I’ve worked in a supercomputer facility before, and it takes manpower to keep those things running. The older ones tend to get really finicky.) A super-version of this would be … super-super.
People have realised this, and are developing GPU-supercomputers. This technology is going to take time to mature. But the computation power available on a single personal computer at low price is already available. It’s true that you can write parallel code to run on supercomputers. I have done that before, once, in a class, and it was a horribly painful process and the knowledge was swiftly purged out of my brain as soon as I finished the class. I am only passably competent in programming, so anything that’s too complicated goes over my head. In the workshop, I found the code needed to use the GPGPU library (CUDA) easy to make sense of. The way I see it, if it’s not too hard to use, and even if one spends a week on it, and another week to compute, it’s faster than spending four weeks waiting for one’s results to turn in. Especially since one will inevitably be forced to do recalculations.
So imagine a this kind of semi-supercomputing power available for $500 to all scientists involved in computation — the end-users, not the ones running specialised models on supercomputers. Certainly, even the ones who have written parallel code to run on supercomputers, but are jostling for computation time with other equally cranky users. Then think about clusters of GPU-computer, with multiple times that powers. How can this not be something to get excited about?
1 Comment so far
Leave a comment
[...] in hardware I’ve always wanted an L1N64. With GPGPU computing finally coming of age with the ubiquitization of OpenCL, now would be a brilliant time to [...]
Pingback by More new toys… « i feel a little stupid January 31, 2010 @ 6:37 PM