Carl Sagan made a compelling argument for the existence of life elsewhere in the universe. And, as Douglas Adams said, "Space is Big. Really Big." For years, the SETI (Search for Extra-Terrestrial Intelligence) folks at UC Berkeley have been scanning the skies and collecting radio telescope data from locations such as the Arecibo Observatory. Unfortunately, they collect more data than they can process wither their available computer resources.
It was a perfect application for distributed computing. The idea is to slice the data into small chunks which can then be sent out for processing by any computer connected to the network. In 1999, they introduced SETI@Home, a free software package that allowed anyone with internet access to "donate" CPU cycles to help the cause.
By the end of 2009, there were an estimated 360 million people with internet access. As more scientific research projects emerged to take advantage of this vast resource pool, Berkeley developed the BOINC project, a distributed computing package to manage various research projects allowing users to share their computer resources between more than one distributed application.
The BOINC application runs on Windows, Linux, and Mac OS X. Installing it on Mac OS X is a trivial matter. Downloading BOINC provides a standard installer package which you simply double click to install. If you are running a multi-user system or have more than one computer on your network, there are a couple things you should be aware of.
The standard BOINC installation only launches the application when you log in. If you have multiple users on your Mac, you may want to run BOINC as a system service so that it runs automatically at startup, regardless if anyone is logged in. The easiest way to do this is to download and run the Make_BOINC_Service.sh shell script. After you run the script and reboot, BOINC will be launched at system startup.
The standard BOINC installation provides a GUI management application which is useful for monitoring your progress and results. It also provides some simple but effective graphing of your progress. If you run BOINC on more than one computer on your network, you will likely want to monitor your hosts remotely. This requires a small amount of work on two files:
This file contains a list of hosts or IP addresses allowed to connect from a remote location on the network. It resides in the BOINC data directory on the host running the BOINC client. On Mac OS X, the default data directory is:
/Library/Application Support/BOINC Data
if you are on Linux*, the default data directory is:
/etc/boinc-client
Here's a template remote_hosts.cfg:
# This file contains a list of hostnames or IP addresses (one per line)
# of remote hosts, that are allowed to connect and to control the local
# BOINC core client via GUI RPCs.
# Lines beginning with a # or a ; are treated like comments and will be
# ignored.
#
# host.example.com
192.168.0.180
192.168.0.181
192.168.0.182
# does not support the use of subnets or range of addresses, so if you use dynamic IP addressing
# you will have to add every possible address to this file.
The file uses the Unix convention of a '#' to indicate a comment. Any line beginning with '#' is ignored. Unfortunately, it's not very intelligent, so you can't specify a range of addresses such as 192.168.1.0/24. You would have to list every IP address that you want to be able to connect from.
This file contains a random password which is used to authenticate any host connecting remotely to the BOINC client. If you want to restrict the BOINC manager using password protection, just edit the file and change to whatever password you would like. In order to ensure a reasonable degree of security, be sure the files have the following ownership and permissions. In particular, the gui_rpc_auth.cfg should have no world permissions set, since the password is unencrypted.
-rw-r----- 1 root admin 9 2010-02-14 09:32 gui_rpc_auth.cfg
-rw-r--r-- 1 root admin 3810 2010-02-23 21:42 remote_hosts.cfg
*What, Linux? I thought this was a Mac OS X blog! Stay tuned, loyal readers...