wiki:BasicConcepts

Version 9 (modified by smcpeak, 16 years ago) (diff)

typo: "work" -> "workunit"

Basic concepts

Project

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.

Application

An application includes several programs (for different platforms) and a set of workunits and results. A project can include multiple applications.

Platform

A platform is a compilation target - typically a combination of a CPU architecture and an operating system. BOINC defines a set of standard platforms.

Application versions

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.

Workunit

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.

Result

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.

Account

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.