EEL6763: PARALLEL COMPUTER ARCHITECTURE
Capstone Project Proposal
Spring 2002
IMPLEMENTATION OF A
WEB BASED
VOLUNTEER COMPUTING SYSTEM
Suman Srinivasan
Rashmi Ravinathan
Instructor:
Alan D. George
Associate Professor and Director, High Performance Computing and Simulation Research Laboratory,
University of Florida
In this project, we plan to study and implement a volunteer based system based on a Project Bayanihan, which is web-based volunteer system implemented in Java.
The explosive growth of the Internet has led to the interconnection of millions of computers across the world. Many companies are also interconnecting all their individual computers using LANS. Most of these computers and networks are idle for a substantial amount of time. This results in wastage of usable resources.
If we could use the processing power and network bandwidth that remain unused during their idle time to advantage, we could boost the overall productivity. Also, non-profit organizations that require huge processing power but are unable to afford it can make use of these idle resources.
Benefits that will come from the solution
To overcome this problem, abundant research has been done. Among the popular solutions to this problem is a system called volunteer computing. Volunteer computing is a distributed parallel computing paradigm wherein people (volunteers) load software that uses their computer resources for the required computation, and then sends the results to a central computer that assimilates this information.
Volunteering makes it possible to reach new heights in performance by using many thousands of anonymous volunteer nodes around the world. On a smaller but more practical scale, companies or institutions can use private "forced" volunteer systems to pool together their internal computing resources with minimal administration costs.
Metacomputing
Volunteer computing is a variation on the idea of metacomputing using a network of many separate computers as if they were one large parallel machine, or metacomputer.
Unfortunately, a subsystem for providing communication and coordination between machines in the NOW had to be developed mostly from scratch as part of each project. Furthermore, in some cases the systems were not even fully automatic.
PVM and MPI
Fortunately, this situation has been notably improved since the development of general-purpose and cross-platform parallel processing systems such as Parallel Virtual Machine (PVM) and Message Passing Interface (MPI) in the early 90's. In such systems, the amount of manual work required is reduced significantly by the runtime system and a general-purpose applications programming interface (API). Unfortunately, these not only require a lot of effort on the part of the system administrator, but also require a lot of trust between the involved machines. All this means that it can take a long time to set up a large NOW.
Volunteer Computing
Volunteer computing is a form of metacomputing that focuses on maximizing the ease with which people can have their machines be part of a metacomputer.
The idea behind volunteer computing is to eliminate these setup requirements, and make it so easy to join a computing network that anyone, even a casual computer user without any technical knowledge, can do it.
Application-based Volunteer Computing Systems
In volunteer computing systems, the software takes care of automatically communicating with project server, requesting work, and sending back results. All the user has to do is leave the software running in the background on these machines.
Web-based and Java-based Volunteer Computing
Recent advances in World Wide Web technology offer to make volunteer computing even easier. Key among these is Java applets. When a user views a web page, any applets on the page are automatically downloaded by the user's browser and executed on the user's machine. Java's built-in networking features also allow applets to be used for interactive multi-user applications.
With Java, programmers can Java applets and post them on a web page. Then, people who want to volunteer only view the web page with their browsers, and wait. The applets are downloaded automatically and run without any human intervention. The volunteers do not even have to install any software themselves.

We mostly looked at web pages like IEEE’s Parascope (http://computer.org/parascope/) and the Internet Parallel Computing Archive (http://www.hensa.ac.uk/parallel/) to look up reference and tutorial material for our project. We also looked at IEEE’s publication “IEEE Transactions on Parallel and Distributed Systems”.
We found a reference to Bayanihan in one of the papers on parallel computing, and we looked up the paper (which is a Ph.D. thesis done at MIT) that was on the website http://www.cag.lcs.mit.edu/bayanihan/. We were interested by the potential of the system, and chose the topic.
In this project, we plan to do the following:
|
Tasks |
Person doing the task |
|
Learn about Bayanihan from the project thesis document
|
Both team members |
|
Model the system
|
Both team members |
|
Program the server to split the work into small workloads
|
Rashmi Ravinathan |
|
Program the server to send the workload packets to the client
|
Rashmi Ravinathan |
|
Program a client to receive work from the server.
|
Suman Srinivasan |
|
Program the client to process the information received
|
Suman Srinivasan |
|
Program the client to send back the result to the server
|
Suman Srinivasan |
|
Implement and test the client-server system
|
Rashmi Ravinathan |
|
Measure performance by connecting multiple clients
|
Both team members |

We will use a client-server system. We plan to have a central server connected to one or more clients. The server will have web server software installed on it, and will also contain the volunteer-computing server program that will distribute the workload. The client could be any computer with a Java-enabled web browser.