From Unofficial BOINC Wiki
A system where the computing work is distributed to multiple independent computers. The computers may be co-located or geographically dispersed. Other terms used to describe this are grid computing, distributed processing, cooperative computing, parallel processing, collective computing, and mesh computing. The computers within a system may be homogeneous (all of the machines are of the same or nearly the same configuration) or heterogeneous (the computers may be of various types and capabilities).
Many new applications are being developed to perform computing tasks of this nature and even a new class of supercomputer has emerged where the computer is a collective of off-the-shelf computers brought into a room and interconnected with high-speed network connections.
An essential element within the concept of distributed computing is the ability to sub-divide the computing problem into smaller and more manageable "chunks" of stuff to do. If the problem is of a nature that there is no clear way to sub-divide the problem, then this type of computer system will not be useful in the solution of the problem. The good news is that there are not very many problems within this category.
Some of the essential components within the management of a system of this nature are:
- The tracking of the Work Units and ensuring that all of the Work Units that must be processed are, in fact, processed.
- Result Validation to ensure that the processing did produce a Valid Result.
- Result integration to gather the returned Results and aggregate them to create the final work product, usually called a Canonical Result.
- Communication connections so that the work can be distributed and the results collected.
- Validation of the Results to ensure that within the non-homogeneous systems that identical Results are obtained from the systems that are not identical.