Volunteer computing with BOINC

If you have heard of SETI@home, you'll probably have an idea of how volunteer computing works. Basically there are huge amounts of information to analyze from many different fields of research. It is neither cost-effective nor possible to have current supercomputers dedicated to all these fields of research at the same time. Since you're usually never using 100% of your CPU's processing power, why not contribute to the research? Software has been designed which allows you to do just that. It allows you to share your extra CPU cycles and contribute to different projects. For example, with SETI@home you can contribute to the Search for Extraterrestrial Intelligence (SETI).

You may be wondering how this actually works, so let me give a very brief explain. First you download and install software which allows you to join a particular project. The software then connects to a central server and downloads a "chunk" of data in which to process. While your computer is idle (or all the time, depending on how you configure the options) the software processes and analyzes that data in much the same way a supercomputer would. When your computer is done processing the small chunk of data, it sends the results back to a central server and requests another chunk. In this manner, thousands and thousands of individual computers can act as one gigantic computer, all processing little chunks, of a much larger chunk, of data.

BOINC

BOINC (Berkeley Open Infrastructure for Network Computing) was designed to replace the original SETI@home network (which was full of bugs and holes, allowing some users to report fake results to the network). BOINC was designed to support not only the SETI@home project, but any new projects as well. There are dozens of active BOINC projects which you can join, including Climateprediction.net, Rosetta@home (to predict and design protein structures to fight diseases), Einstein@home (to search for spinning neutron stars), and Malaria Control.

The computing power of this kind of network is incredible, and even more importantly, it is all voluntarily provided! The fastest supercomputer in the world is currently IBM's BlueGene/L, which can run at 360 TFlop/s (“teraflops” or trillions of calculations per second). BlueGene/L uses 1.5 megawatts of power and its hardware takes up 2,500 square feet. Now, compare that to the more than 430,000 active machines worldwide which make up the BOINC system, providing a whooping 663 TFlop/s!

Another very important result of this volunteer computing setup is the use of power, and I'm not talking about CPU power but rather electric power. All of the personal computers running BOINC would probably be turned on and consuming power regardless of whether or not they were running BOINC! This means that by using a volunteer "quasi-supercomputing" platform we not only have a greater potential for computing power but we save energy at the same time!

I envision a future where networks become so robust and fast that distributed applications and the "sharing" of CPU cycles is a normal, common place thing. Imagine for a second a world where you sit down at your computer and open a very CPU-intensive 3D modeling program -- so intensive in fact that it uses 100% of your PC's CPU power. But instead of the rendering software slowing down because of a lack of CPU power, it actually speeds up by grabbing CPU power from your neighbors computer, which is running but not being used (perhaps your neighbor went to the grocery store). While your 3D software is rendering, you decide to stream a video over the Internet. Again, your computer uses CPU cycles from other idle computers in the neighborhood to provide you with all the power you need.

I installed the BOINC Manager on my MacBook Pro the other day and joined a couple of projects. I plan to install it on all computers in my possession that run on a regular basis, linking all of them to my single BOINC account (this way I can monitor the combined work of my own mini-supercomputing network!). I can configure BOINC to not process data unless my computer has been idle for X number of minutes and give other applications a higher priority over BOINC in case they suddenly need CPU power. Basically my computers will run the same as they do now but will be contributing to scientific and/or medical research while they're idle!

Write a Comment

Comment