The AIMS Workshop on Volunteer Computing took place from 16 to 22 July 2007 at the African Institute for Mathematical Sciences (AIMS) in Muizenberg, South Africa (a suburb of Cape Town). Roughly 35 students from over 200 applicants from across Africa were selected. They came to learn about using BOINC, Open Source software for distributed computing, for projects in Africa. (Although I call the workshop attendees "students", back home they are predominately graduate students, researchers and professors).
The workshop was funded by the Africa@home project, whose goal is to promote distributed and Open Source computing in Africa. This was also a good match for the goals of our hosts at AIMS, which during the academic year offers a nine-month post-graduate program in advanced mathematics, attracting students from the entire continent.
BOINC is an acronym for the Berkeley Open Infrastructure for Network Computing. The software was developed by the University of California at Berkeley, and it provides a framework for distributing compute-intensive applications across multiple processors. It does this by breaking up the data into discrete chunks, which it then makes available for download from a BOINC server.
What separates BOINC computing from more "traditional" distributed computing is where the computing is done. Volunteers can register for BOINC projects they find interesting, and thereby offer idle CPU cycles on their computer(s) to run BOINC applications.
Once a volunteer has registered with a BOINC project and installed the BOINC client software on his (or her) computer, the client communicates with the BOINC project's server and requests a "work unit" that it will download and execute. When the work unit has been treated results are sent to the server and it requests another work unit. All this happens essentially in the background of the volunteer's computer, although the BOINC client can display diverse status information.
The BOINC server takes care of issues such as communication with client computers, scheduling work, validation of results (by sending the same work unit to multiple clients and comparing the results), generating statistics, and attribution of the (highly sought-after) volunteer credits for the number of hours of client CPU time donated. The BOINC server runs on the Linux operating system. Client software exists for Linux, Windows, Mac OS X and Solaris.
In order to create a BOINC application, a scientist will typically start with a compute-intensive and inherently parallel algorithm, implement it in a programming language, and then make modifications in order to run in the BOINC client environment. These modifications consist of adding procedure calls to the BOINC library for starting, stopping, making intermediate checkpoints, and indicating "percent completed" values that are shown to the volunteer. Early client applications were written in FORTRAN, C or C++, but steady progress is being made towards supporting interpreted languages such as Java and Python.
Although the BOINC server offers a standard environment for generic server tasks like job scheduling and client communication, some application-specific administrative codes must also be written for the BOINC server. This can include checking results (validation), summarizing the results (assimilation), and possibly modifying input data for future work units based on the results of completed work units (generation).
Africa@home is a multi-stakeholder partnership using the BOINC technology. It involves CERN, the University of Geneva, ICVolunteers, the World Health Organization, AIMS, several other African academic institutions, the Swiss Tropical Institute, and Informaticiens sans frontiÃ¨res (ISF), with the support of the Geneva International Academic Network.
There was a lot of material to cover. Over the 5-day course we carried out each of the following activities: installing Ubuntu Linux; installing a BOINC client and communicating with an existing project; installing a BOINC server; installing a native BOINC application; and installing a legacy program enclosed in a "wrapper" that allows it to run in the BOINC environment.
In the morning we had lectures. We moved to the computer lab in the afternoon to work on exercises, and we had evenings off. The computer lab was open round the clock, so those wishing to continue working late into the evening could do so. A veritable programmer's dream... or curse?
In the lab, each group consisted of three students. Each student had his (or her) own workstation as a client machine, and each group had an additional machine where the BOINC server was to be installed.
Five days was not enough to cover all of these topics in depth, but it did give us all an introduction to all the elements of a BOINC project, and enough ideas to know where to continue digging on our own when we returned home.
I was originally invited to the workshop by ICVolunteers to assist the tutors. I'm a computer scientist who had Linux experience but no prior knowledge of BOINC. As the students' backgrounds ranged from mathematics to epidemiology to physics, it wasn't clear whether they would all have Linux experience. So I was meant to be someone who could answer Linux questions, thus freeing up the tutors for BOINC-specific issues.
In the end, the students were smart enough and the tutors good enough that they were able to handle most questions and I was allowed to essentially be a student during the week. However on one occasion a group that had no Linux experience made me feel useful when they asked me what the command was to rename a file. ;-)
The AIMS provided us with an all-inclusive environment: lecture room, computer lab, cafeteria, staff offices, and dorm rooms. The days were packed, leaving little time to enjoy the unseasonably sunny and warm (18 degrees) winter days on the beach of Muizenberg. (A few tutors and organizers did however manage to slip out to a local pub a few evenings to hone their pool table skills.)
By now everyone will have returned to their respective countries and regular jobs, and hopefully at least some of them will find time in their busy schedules to learn more about BOINC, and perhaps even launch a new project using it. It was a real pleasure -- both intellectually and socially -- to spend a week with such a diverse group of students, tutors and organizers from Africa and beyond.
For more information, visit the Workshop Online News.