Fork me on GitHub

About

This section will describe the problems that motivate the work and outline the opportunities that can be exploited to overcome these problems.

Problem

From research collected since the inception of the project It has been found that there is not an easy way to view the data generated by all the different types Folding@home clients; the only way to currently view this data is to search though the plain text log files that are generated by the client that only display a small sub-set of data produced, the rest is stored in a proprietary binary file stored within the client's working directory.

The folding at home client is a piece of software that runs on a user's machine, there are different types of client depending on the platform that is going to be run on. The different clients are:

CPU client
This client is the first type of client that was used in the Folding@home project. This type of client is designed to run on a single CPU; therefore multiple clients need to be run on multi-core machines.
GPU client
This client was designed to run work units on graphics cards to achieve quicker results, these clients can be run at the same time as the CPU clients.
SMP client
These clients were designed to address the issue of running multiple CPU clients on multi-core machines. The SMP clients allow the use of one client working with more than one CPU or multiple cores on a machine.
PS3 client
This client is used on the PlayStation 3 cell broadband engine processor, my project will not include the ability to run on PS3 consoles, and therefore I will not be addressing these clients within my project.

The problem with this is that there are a large number of clients to test against; this poses a problem of the difficulty of collecting test data.

Another problem produced by this is the lack of understanding and knowledge of the proprietary file formats that the Folding@home client uses to store it's data; the penalty associated with this lack of knowledge is the time involved to research and fully understand it in enough depth to extract the information required.

Opportunities

The greatest opportunity of this work is to exploit new technology; as the Folding@home project has been designed to run on as many systems as possible to increase its uptake of its users, it makes sense to use a programming language that will be portable to encompass all of these platforms. "Java provides three distinct types of portability: source code portability, CPU architecture portability, and OS/GUI portability" (Roulo M, 1997) making it the perfect language to develop a single application to administer every one of the current clients used within Folding@home. Another opportunity of studying the Folding@home project at this time is that a new client is in development at the time of writing; this new client is a major overhaul of the client as it stands at the moment and will introduce an API to Folding@home for the first time allowing extraction of data from the client easier via the passing of messages similar to JSON. I thought it would be better for a user of the Folding@home user to see exactly what they are contributing to whilst using the client.