Parallel computing is a mature area of computer science. It’s applications range from analysing weather systems to breaking down patterns in market data. Parallel computing is difficult because problems can not always be easily separated into independent sub problems. It is hard to think parallel.
The direction of chip development has been linear. CPUs are optimized for linear processing, probably because thinking linearly is much easier. Most of the advances in parallel computers have been in massively scalable architectures of many CPU style processors. An example of a highly parallel computing initiative is Seti@Home trying to find extraterrestrial life.
But perhaps we have been looking in the wrong direction. We think there are not many parallel problems in our daily lives that require massive parallel computing power. But most of us (at least in the developed world) spend a lot of time gazing at the result of highly parallel computations. We have been sitting at (or over, behind) a very powerful parallel computer, the GPU, computing the color of more and more pixels at the same time.
NASA has selected 120 proposals for Phase 2 negotiations in their Small Business Innovation Research program, known as SBIR. One of these proposals is to repurpose generally available GPUs for parallel computing. If they are successful it means the NASA can ship powerful parallel computers on board space flights. What does it mean for us?
Our computers become more and more capable. We watch television, make phone calls, download content, etc. And all at the same time. But our computers are not built to do things at the same time. If we could use an extra GPU to help with doing the work we might be able to do much more ‘background’ processing.
Another application is the use of virtual worlds. Rendering virtual worlds is mostly done on large computer clusters. But if we could harness the power of client parallelism a virtual world might become more real. The current state of Second Life is nothing compared to the graphics rendering of a game like Halo 3. The perception, and because of that the experience, is that of the early games. By delegating much of the processing to the edges (your computer) a virtual world might become more real. An application that resembles a virtual world is Google Earth. Applications like Google Earth will become much more smooth resulting in different use of this information.
Parallel computing might be the natural step to quantum computing. Quantum computing is not about parallelism but about atomic computation with increased complexity (later more on that.) Parallel computing requires a whole different approach to solving problems. If we are ‘forced’ to master the art of parallel computing thinking of uses for quantum computing might come much more naturally.
I am quite excited about something simple like repurposing generally available technology. It shows that we are sometimes focussed on the detail and forget about the bigger picture. There is something in between now (linear computing devices) and quantum computing. We have not looked parallelism because we have been blinded by the idea of the Grid and because it is difficult. Perhaps this is just what we need to become more creative in the use of parallelism for the benefit of us all.

Image

another interesting article was posted today on the wired blog. in this article they describe using 3 sony ps3’s to build a supercomputer with remarkable parallel processing capabilities.
sony’s open ps3 allows for other operating systems (in this case linux) to be installed without hassle. and it’s open architecture is suitable to string a number of them together. the ps3 may not be the commercial hit, as the article states, but it has found another application in the research community.