Introduction to BOINC
BOINC supports applications
that can be divided into large parallel parts with few data dependencies;
it is not presently intended for fine-grained parallel applications.
The features of BOINC include:
-
Multiple independent projects
BOINC allows multiple independent projects to share participants.
Participants download a single core client program,
which in turn downloads and executes project-specific executables.
Participants can control which projects they participate in,
and how their resources are divided among these projects.
Since the projects are independent,
any downtime for one project will merely result in temporary extra
processing power for another.
-
Comprehensive security
All file transfers to the host computer are validated with an
MD5 checksum, and all executable files are signed with RSA
public/private key encryption (1024 bit default).
See the security page for more details.
-
Host work caching
The BOINC core client will download enough work to keep the host
busy for a user specifiable amount of time.
This will allow the client
to continue to function during project downtimes, as well as decrease
the frequency of connections to servers.
-
Multiple platform support
The BOINC core client can run on almost any platform (Mac OS X,
Windows 95 and later, Linux and other Unix systems) and provides OpenGL
based graphics support on Mac OS X, Windows 95 and up, and X Windows.
-
Multiple server support
The BOINC architecture supports multiple scheduling and data servers.
If one server is temporarily unavailable,
clients automatically try alternate servers.
If all servers are unavailable,
clients perform random exponential backoff to avoid flooding the server.
-
Open source
BOINC is open source; it's distributed under the Mozilla
Public License version 1.0.
Projects that use
BOINC are not required to release the source code of their project
specific applications.
BOINC can be used for private, commercial, or public distributed
computing projects.
-
Support for large data
BOINC supports applications that produce or consume large
amounts of data (on the order of gigabytes).
It allows data distribution
and collection to be spread across many servers, and it allows
participant hosts to transfer large data unobtrusively.
Users are able to specify maximum disk usage.
BOINC also handles network disconnections and allows
user-specifiable network bandwidth restrictions.
-
Extreme resource requirement support
BOINC supports applications with extreme requirements for
memory, disk, cache or other resources.
Work is dispatched only to hosts
able to handle it.
-
Application program Interface
An Application Program Interface (API) is provided to
application developers to ease integration with BOINC.
See the API page for details.
-
Support for applications in any language
BOINC applications can be developed in any language (C++,
Fortran, Perl).
An application can consist of several files
(e.g. multiple programs and a coordinating script).
New versions of
applications can be deployed without requiring participants to download.
-
Multiprocessor support.
The BOINC client can use multiple CPUs.
-
Web Based User and Administrative Interfaces
A set of PHP scripts is included to provide interfaces for user
and administrative tasks.
These include preference editing, account creation and user information display.
-
Database and server architecture
BOINC provides a SQL schema, database functions, a simple server
architecture, web based user interfaces and server administration tools.
Each project must provide and maintain its own server systems and
backend result processing but these systems can be set up easily and
require only open-source components (MySQL, PHP, Apache, and Linux).
The BOINC scheduling server also supports FastCGI for enhanced server
performance.