# Volunteer-Computing

Volunteer-Computing (zu deutsch: Ehrenamtliches / freiwilliges Rechnen) beschreibt eine Technik der Anwendungsprogrammierung, bei der einzelne Computernutzer Rechnerkapazitäten wie Rechenzeit und Speicherplatz auf freiwilliger Basis einem bestimmten Projekt zur Verfügung stellen, um unter Anwendung des verteilten Rechnens ein gemeinsames Ergebnis zu berechnen.

## Idee

Hintergrund ist die Überlegung, dass einerseits die für umfangreiche Berechnungen benötigten Supercomputer kostenintensiv sind, und dass andererseits die Hauptprozessoren vieler Rechner (PC oder Smartphone) zeitweise nicht ausgelastet sind, da der Anwender meistens nur mit wenigen Programmen arbeitet, welche nur einen Teil der gesamten CPU-Leistung beanspruchen. Diese ungenutzten Ressourcen möchte man beim verteilten Rechnen nutzbar machen. Hierzu wird eine entsprechende Client-Software auf dem betroffenen Rechner installiert, die diese Aufgaben meistens weitgehend im Hintergrund übernimmt. Durch Einführung von Technologien wie Cool’n’Quiet, PowerNow! und SpeedStep verbrauchen jedoch aktuelle CPUs und GPUs bei geringerer Last deutlich weniger Strom als unter Volllast, sodass Volunteer-Computing-Teilnehmer auch indirekt Strom zur Verfügung stellen und ggf. mehr Lärm durch Lüfter ausgesetzt sind.

## Prinzip

Volunteer-Computing muss organisiert werden. Dazu wird eine Software zur Verfügung gestellt, die auf den Clients zur Lösung der speziellen Aufgabe laufen muss. Weiterhin müssen die Aufgaben, die abgearbeitet sind, gerade bearbeitet werden, oder noch verteilt werden müssen, verwaltet werden. Diese Aufgaben übernimmt der Betreiber des Forschungsprojekts, in der Regel also ein Universitätsinstitut.
Will man sich nun an der Problemlösung beteiligen, das heißt die ungenutzte Rechenleistung eines Computers zur Verfügung stellen, lädt man zunächst die Clientsoftware auf den Computer, installiert diese und testet die Installation mittels vorgegebener Testdaten. Danach meldet man sich an der Webseite eines Projektes seiner Wahl an und lässt sich Daten zuteilen, die bearbeitet werden sollen. Nach Berechnung des Datenpaketes, die einige Stunden bis mehrere Wochen Rechenzeit in Anspruch nehmen kann, wird das Ergebnis an die Webseite zurückgemeldet, und man kann sich neue Daten geben lassen. Diese Aufgaben führt die Software automatisch aus, sodass sich auch Laien an den Projekten beteiligen können.

## Einsatzgebiete

Volunteer-Computing wird in vielen Bereichen der Forschung eingesetzt, vor allem bei sehr rechenintensiven Anwendungen (z. B. Docking-Simulationen für das Design künftiger Medikamente, die Berechnung von Proteinfaltungsvorgängen, die Suche nach Primzahlen oder die Widerlegung von mathematischen Vermutungen), für deren Bearbeitung die Leistung von herkömmlichen Supercomputern nicht ausreicht, oder für die nur ungenügende finanzielle Mittel zur Verfügung stehen. Volunteer-Computing-Projekte finden sich demnach sehr häufig bei von Universitäten, Stiftungen oder kleinen, bzw. mittelständischen Firmen durchgeführten Projekten.

## Konkrete Projekte

Eines der ersten Projekte, welches die Technik des Volunteer-Computing nutzte, war das SETI@home-Projekt (inzwischen beendet) der University of California, Berkeley, das somit die Rechenkraft eines teuren Supercomputers erzielte.
Viele Projekte folgten, so zum Beispiel
* biophysikalische Projekte wie Folding@home, Rosetta@home und POEM@home zur Simulation der Proteinfaltung
* Projekte auf der Suche nach Gravitationswellen (Einstein@home)
* Find-a-Drug zur Behandlung diverser Krankheiten (inzwischen beendet)
* Modellierung der Klimaentwicklung im 21. Jahrhundert mit ClimatePrediction.net
* Projekte, die sich der Lösung von mathematischen Problemen verschrieben haben (GIMPS für Mersenne-Primzahlen, GFPS für Fermatsche Primzahlen)
Heute gibt es fast in allen naturwissenschaftlichen Bereichen verteilte Rechenprojekte, sogar die Industrie bedient sich bereits der Technik.
Eine neue Stufe der Verbreitung erreichte das Projekt Folding@home, das bis 2012 die Fähigkeiten der Spielekonsole PlayStation 3 sowie von ATI-, AMD- und Nvidia-Grafikprozessoren (GPU) nutzt und so eine Leistung von bis zu 4 Billiarden Rechenoperationen pro Sekunde (4 Petaflops) erreicht. Mit bis zu 700.000 angemeldeten PS3-Teilnehmern und regelmäßig etwa 50.000 aktiven Konsolen steht dieses Projekt als leistungsstärkstes verteiltes Rechnernetzwerk aller Zeiten im Guinness-Buch der Rekorde.
Nachdem im März 2020 eines der ersten und größten öffentlichen Volunteer-Verteiltes System Projekte SETI@home sein Ende am 31. März 2020 bekannt gab und aufgrund einer erhöhten Interesse durch die COVID-19-Pandemie, wird das Verteiltes System Folding@home das erste Computing-System das ein exaFLOPS erreicht. Das System simulierte Proteinfaltung für Forschungen zu COVID-19 und erreichte am 13. April eine Geschwindigkeit von ca. 2.43 x86 exaFLOPS − einige Male schneller als der vorherige Rekordhalter, Supercomputer Summit.