What is distributed computing? And why should I care about it?

Distributed computing is a computing technique which splits a large problem into small pieces and gives the pieces to several computers, allows the computers to solve their pieces at the same time, then combines the results from all of the pieces into a result for the entire problem. See a Wikipedia article for a more detailed description of it.

So what? That sounds pretty boring.

What distributed computing is is mostly interesting to computer scientists and enthusiasts. What it does, or what it can be used for, should be interesting to everyone.

Imagine a task that is too large to be completed by one person within a reasonable amount of time. Perhaps you need to hand-write 1,000 copies of a letter and each copy requires at least one hour to write. If you have to write the letters by yourself, you will need to write for 1,000 hours or almost 42 days to finish the task. Maybe you need to prepare 10,000 care packages to send to victims of a hurricane and each package requires 5 minutes to assemble. If you are preparing those packages by yourself, you will need to work for 833 hours or almost 35 days to complete the task.

Completing these tasks would be so daunting that no one would try to complete them by himself or herself. But if the letter-writer recruited 50 volunteers and each volunteer wrote 20 letters, the task could be completed in 20 hours–less than one day. If the package preparer recruited 100 volunteers and each volunteer prepared 100 packages, the task could be completed in a little more than 8 hours. If the preparer recruited 200 volunteers and each volunteer prepared 50 packages, the task could be completed in 4 hours.

Now imagine a problem that can be solved with computing techniques but that is still too large to be solved by one computer within a reasonable amount of time.

Maybe you’re a mathematician who wants to discover new Mersenne prime numbers larger than any that are currently known. Or you want to solve the Sierpinski problem, a mathematical problem which was posed in 1967 and which has not yet been solved. Maybe you’re a meteorologist who wants to test a global warming theory by predicting what Earth’s climate will be like 50 years from now. Perhaps you’re a biologist who wants to learn how linear chains, or “strings,” of amino acids fold into three-dimensional proteins (the building blocks of life) by simulating the process in a computer program, or you want to test a large set of molecules to see whether any of them would be a safe and effective drug to fight AIDS or cancer. Maybe you’re an art student who wants to create a film with computer animation, like Pixar‘s “Toy Story.”

If you’re the mathematician you may need to test several thousand numbers to see if any of them are primes. Each number may take between several hours and several months to test. If you’re the meteorologist you may need to generate thousands of climate prediction simulations, each of which takes two months or more to complete. If you’re the biologist you will need several months or years to complete a single protein folding simulation or you will need to test millions of potential molecules, with each test requiring several hours or days of computing time. If you’re the art student, you will need to render or “draw” thousands of computer-generated images to assemble into a film. Each image may take many hours to many days to render.

If you only have one computer to do the work for any of these problems, it will take longer than your lifetime to solve that problem. If you only have one supercomputer, it will still take several decades to solve the problem. No one would attempt to solve these problems because solving them would not be practical. But if you have a network of thousands or millions of computers to do the work, and if you can break the work into small enough pieces so that each computer can finish a piece within a few hours or days, you can solve the problem very quickly–within a few days, months or years.

Thanks to advances in distributed computing research over the past 15 years, all of the computing problems described above can now be researched in a practical way, and all of them are being researched right now. Plus, all of them are public projects in which anyone may participate.

GIMPS, the Great Internet Mersenne Prime Search, has discovered the eight largest known Mersenne prime numbers in the project’s 13 years, including the first known prime with more than ten million digits. Seventeen or Bust has found 11 of the final 17 primes that need to be found to solve the Sierpinski Problem. climateprediction.net has recruited volunteers from all over the world to complete over 382,000 climate simulations (each simulation requires a month or more of computation to complete) from which it can create an average prediction of the most likely climate 50 years from now. Folding@home has recruited a network of volunteers with their PCs, PC graphics cards and PlayStation 3 game consoles to build a computing network with 5 PetaFLOPs of computing power (5 times more powerful than the average supercomputer) and has created more accurate protein folding simulations and has begun to learn more about how mis-folds can cause diseases like Alzheimer’s. World Community Grid‘s Help Conquer Cancer project has tested over 33 million potential cancer-fighting drug molecules. BURP, the Big and Ugly Rendering Project, is helping amateur movie makers and computer graphics researchers render entire movies or complex graphics sequences in the time that they could personally only render a few images.

What is distributed computing? It is a technique which, using volunteers around the world and their millions of computing devices connected by the Internet, enables types of research which have never before been possible. It is a technique which will permanently affect the way scientific research is done. It is a technique which will allow humanity to make discoveries greater than we can imagine.