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

 

 

Subject and purpose

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.

 

Definition of the problem

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.

 

Need for solution to the problem

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.

 

Background on the problem

 

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.

 

This image is in PNG format.

Discussion on related research in the literature

            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.

 

Scope statement

In this project, we plan to do the following:

  1. Study volunteer based systems, including Bayanihan.
  2. Implement a web based volunteer system using Java based on Bayanihan that performs a parallel computing task.
  3. Suggest further research on the topic

 

Methods to be used

  1. Learn about Bayanihan from the project thesis document (http://www.cag.lcs.mit.edu/bayanihan/papers/phd/sarmenta-phd.pdf)
  2. Program a server to assign and distribute workload to multiple clients.
  3. Program a client to receive work from the server, process it and send results back to the server.
  4. Implement and test the client-server system
  5. Measure performance by connecting multiple clients

  

Breakdown of tasks on the project

 

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

  

Time and work schedule – Gantt chart

  

 

 

Facilities to be used

            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.

  

References

  1. L.F.G. Sarmenta, “Bayanihan: Web-Based Volunteer Computing Using Java,” available from: http://www.cag.lcs.mit.edu/bayanihan/
  2. Proc. of ACM1998 Workshop on Java for High-Performance Network Computing, Feb./Mar.1998. Also published as Concurrency: Practice and Experience, 10(11-13), 1998. URL: http://www.cs.ucsb.edu/conferences/java98/program.html
  3. A. Ferrari. JPVM: Network Parallel Computing in Java, in Proc. of ACM 1998 Workshop on Java for High-Performance Network Computing, Feb./Mar. 1998. URL: http://www.cs.virginia.edu/˜ajf2j/jpvm.html
  4. S. Fields. Hunting for Wasted Computing Power: New Software for Computing Networks Puts Idle PC's to Work. Research Sampler. University of Wisconsin-Madison.1993. URL: http://www.cs.wisc.edu/condor/doc/WiscIdea.html