Volunteer computing" is the use of consumer digital devices for high-throughput scientific computing. It can provide large computing capacity at low cost, but presents challenges due to device heterogeneity, unreliability, and churn. BOINC, a widely-used open-source middleware system for volunteer computing, addresses these challenges. We describe its features, architecture, and implementation.Volunteer computing (VC) is the use of consumer digital devices, such as desktop and laptop computers, tablets, and smartphones, for high-throughput scientific computing. Device owners participate in VC by installing a program that downloads and executes jobs from servers operated by science projects. There are currently about 30 VC projects in many scientific areas and at many institutions. The research enabled by VC has resulted in numerous papers in Nature, Science, PNAS, Physical Review, Proteins, PloS Biology, Bioinformatics, J. of Mol. Biol., J. Chem. Phys, and other top journals [1].About 700,000 devices are actively participating in VC projects. These devices have about 4 million CPU cores and 560,000 GPUs, and collectively provide an average throughput of 93 PetaFLOPS. The devices are primarily modern, high-end computers: they average 16.5 CPU GigaFLOPS and 11.4 GB of RAM, and most have a GPU capable of general-purpose computing using OpenCL or CUDA.In terms of power consumption, data-center nodes are more efficient (i.e. have greater FLOPS/watt) than many consumer devices. However, to compare net energy usage, two other factors must be considered. First, data centers use air conditioning to remove the heat generated by hardware; consumer devices generally do not. Second, in cool climates, the heat generated by consumer devices contributes to ambient heating, so the net energy cost of computing may be zero. Thus it's not clear whether VC is globally more or less energy efficient than data-center computing. In any case, this does not affect VC's cost to the scientist, since the energy is paid for by volunteers.VC is best suited to high-throughput computing (HTC): workloads consisting of large groups or streams of jobs where the goal is high rate of job completion, rather than low job turnaround time. VC is less suited to workloads that have extreme memory or storage requirements, or for which the ratio of network communication (i.e. input and output file size) to computing is extremely high.VC differs from other forms of HTC, such as grids and clouds, in several ways: The computers are anonymous and untrusted. The computers are heterogeneous in many hardware and software dimensions; for example, of desktops and laptops participating in VC, 85% are Windows, 7% are Macs, and 7% are Linux. Job turnaround times are uncertain because of sporadic host availability. There is significant "device churn", i.e. arrival and disappearance of computers. Creating the resource pool requires volunteer recruitment and retention, and the client software must be easy for consumers to install and run. The scale of VC is larger: ...