A project is an entity that does distributed computing using BOINC. Projects are independent; each one has its own applications, database, web site, and servers, and is not affected by the status of other projects. Each project is identified by a master URL, the URL of its web site. Multiple projects can coexist on a single server computer.
At the implementation level, a project consists of
- a directory tree, containing files related to the project, and
- a MySQL database.
A BOINC project involves a number of interrelated entities, described below. Each type of entity has a corresponding database table.
An application includes several programs (for different platforms) and a set of workunits and results. A project can include multiple applications.
A platform is a compilation target - typically a combination of a CPU architecture and an operating system. BOINC defines a set of standard platforms.
An application program may go through a sequence of versions. A particular version, compiled for a particular platform, is called an application version. An application version consists of one or more files.
A workunit is a computation to be performed, i.e. a "job". It may include any number of input files. It has various attributes, such as resource requirements and deadline.
A workunit is associated with an application, not with an application version. In other words, you don't specify what platform the job is to be run on.
A result describes an instance of a computation, either unstarted, in progress, or completed. Each result is associated with a workunit. In some cases there may be several instances, or "replicas", of a given workunit.
Each volunteer in a project has an account, identified by an email address and password. An account has an associated amount of credit, a numerical measure of the work done by that volunteer's computers.
Clients and attachment
Volunteers run a program called the BOINC client; this is the only software they manually download.
A given computer running the BOINC client can be attached to accounts on one or more project. Each attachment has a resource share. If a computer is attached to multiple projects, its resources are divided among them in proportion to their resource shares.
BOINC in a nutshell
The overall flow of BOINC:
- When a BOINC client runs low on work, it issues a scheduler request to one of its attached projects. The request message specifies the client's platform.
- The project's scheduler (a daemon running on its server) scans the project's database for jobs that can be handled by the client, and returns one or more.
- The client downloads the files associated with the application versions and workunits, and executes the programs.
- When the jobs are completed, the client uploads the resulting output files.
This cycle is repeated indefinitely.