Zum Inhalt springen

„Berkeley Open Infrastructure for Network Computing“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Keine Bearbeitungszusammenfassung
DaevonSky (Diskussion | Beiträge)
Linkvorschlag-Funktion: 2 Links hinzugefügt.
 
(359 dazwischenliegende Versionen von mehr als 100 Benutzern, die nicht angezeigt werden)
Zeile 1: Zeile 1:
{{Infobox Software
{{Infobox_Software|
Name= BOINC
| Name = BOINC
| Logo = [[Datei:BOINC_logo_July 2007.svg|200px|Das Aktuelle BOINC Logo]]
|Screenshot= [[Bild:BOINC.png|275px|Der BOINC-Client für Linux]]
|Beschreibung= Der BOINC-Client für [[Linux]]
| Screenshot = [[Datei:BOINCconproyectos.png|200px|Der BOINC-Client für Windows]]
| Beschreibung = Der BOINC-Client für [[macOS]]
|Hersteller= [[University of California, Berkeley|Universität Berkeley]]
| Maintainer =
|AktuelleVersion= 5.4.9
| Hersteller = [[University of California, Berkeley|Universität Berkeley]]
|AktuelleVersionFreigabeDatum= 12. Mai 2006
| Erscheinungsjahr =
|Betriebssystem= [[Linux]], [[Mac OS X]], [[Solaris (Betriebssystem)|Solaris]], [[Microsoft Windows|Windows]], diverse [[Unix-Derivat]]e
| AktuelleVersion = <!-- Nunmehr Wikidata Q209563 -->
|Kategorie= Bereitstellung von Rechenleistung
| AktuelleVersionFreigabeDatum = <!-- Nunmehr Wikidata Q209563 -->
|Lizenz= [[GNU General Public License|GPL]]/LGPL
| AktuelleVorabVersion =
|Deutsch= ja
| AktuelleVorabVersionFreigabeDatum =
|Website= [http://boinc.berkeley.edu/ boinc.berkeley.edu]
| Betriebssystem = [[Microsoft Windows|Windows]], [[macOS]], [[Linux]], [[Android (Betriebssystem)|Android]]
| Programmiersprache =
| Kategorie = [[Verteiltes Rechnen]]
| Lizenz = [[GNU General Public License|GPL]]/[[LGPL]] ([[Freie Software]])
| Deutsch = ja
| Website = [https://boinc.berkeley.edu/ boinc.berkeley.edu]
| Dateien =
}}
}}
[[Bild:BOINCManager.png|left|100px|BOINC-Logo]]


Die '''Berkeley Open Infrastructure for Network Computing''' (BOINC) ist eine [[Software|Softwareplattform]] für [[Verteiltes Rechnen|verteiltes Rechnen]].
Die '''Berkeley Open Infrastructure for Network Computing''' (kurz '''BOINC''') ist eine [[Software]]-[[Plattform (Computer)|Plattform]] für [[verteiltes Rechnen]].


Die BOINC-Plattform wird an der [[University of California, Berkeley|Universität Berkeley]] entwickelt und ermöglicht es, die ungenutzte Rechenleistung von vielen tausend [[Computer|Computern]] über das [[Internet]] verfügbar zu machen.
Die '''BOINC'''-Plattform wird an der [[University of California, Berkeley|Universität Berkeley]] entwickelt und ermöglicht es, die ungenutzte [[Rechenleistung]] von vielen tausend Computern über das Internet oder Intranet verfügbar zu machen. Dies geschieht in Form von Projekten, die meist gemeinnützig arbeiten und von Universitäten oder anderen Institutionen betreut werden.
Die derzeit rechenintensivsten Projekte umfassen unter anderem Berechnungen zur Erstellung eines genauen 3D-Modells der [[Milchstraße]], die Suche nach [[Außerirdisches Leben|außerirdischem Leben]], Berechnung von [[Gravitationswelle]]n, Vorhersagen zur [[Klimamodell|Klimaentwicklung]] sowie die Simulation von [[Proteinfaltung]]en für die Erforschung von neuen Medikamenten.


== Details ==
Bei der Entwicklung wurden Erfahrungen des ''[[Verteiltes Rechnen|Distributed-Computing]]''-Projekts [[SETI@home]] genutzt. Das Hauptziel der Plattform ist die Trennung der Projektverwaltung von den wissenschaftlichen Inhalten.
Bei der Entwicklung von BOINC wurden Erfahrungen des [[Volunteer-Computing]]-Projekts [[SETI@home]] genutzt. Ein Merkmal der Plattform ist die Trennung der Projektverwaltung von den wissenschaftlichen Inhalten.


Anwender dieser Plattform installieren sich ein [[Client|Clientprogramm]] und können damit ihre freie Rechenzeit auf mehrere Projekte verteilen. Dies stellt eine wichtige Verbesserung gegenüber an nur ein Projekt gebundenen Clients dar, da viele Distributed-Computing-Projekte nicht über genügend Arbeit verfügen, um eine große Benutzerbasis ausreichend zu versorgen. Wenn ihre Rechner leerlaufen, werden die teilweise sehr enthusiastischen Teilnehmer unzufrieden. SETI@home "classic" umging dieses Problem, indem manche Arbeitspakete bis zu zwölfmal zur Berechnung herausgegeben wurden, obwohl zur Sicherung von akkuraten wissenschaftlich verwertbaren Resultaten nur drei Ergebnisse notwendig wären. Mit einem an mehreren Projekten teilnehmenden BOINC-Client kann die zur Verfügung stehende Rechenleistung somit effektiver verwendet werden.
Anwender dieser Plattform installieren sich ein [[Client]]programm und können damit ihre freie Rechenzeit auf ein oder mehrere Projekte verteilen. Dies ist eine wichtige Verbesserung gegenüber an nur ein Projekt gebundenen Clients, da einige Distributed-Computing-Projekte nicht über genügend Arbeit verfügen, um die Ressourcen einer großen Teilnehmerbasis zu nutzen. ''SETI@home classic'' umging dieses Problem, indem manche Arbeitspakete bis zu zwölfmal zur Berechnung herausgegeben wurden, obwohl zur Sicherung von akkuraten wissenschaftlich verwertbaren Resultaten nur drei Ergebnisse notwendig wären. Mit einem an mehreren Projekten teilnehmenden BOINC-Client kann die verfügbare Rechenleistung somit effektiver verwendet werden.


Seit dem 18. November 2003 steht BOINC unter der [[GNU General Public License]]. Das Ziel der Freigabe des [[Quelltext|Programmcodes]] ist eine noch breitere Unterstützung verschiedener Plattformen durch aktive Mithilfe der [[Freie Software|freien Softwaregemeinde]] und eine erhöhte Sicherheit.
Seit dem 18. November 2003 steht BOINC unter der [[GNU General Public License]]. Das Ziel der Freigabe des [[Quelltext|Programmcodes]] ist eine noch breitere Unterstützung verschiedener Plattformen durch aktive Mithilfe der [[Freie Software|freien Softwaregemeinde]] und eine erhöhte Sicherheit.

Ab der Version 6.4.5 wird die [[Compute Unified Device Architecture|CUDA]]-Technologie von [[Nvidia]] unterstützt. Damit ist es möglich, die Rechenleistung von [[Grafikkarte]]n mit CUDA-Unterstützung zu nutzen. Ab der Version 6.10.x wird die [[ATI-Stream]]-Technik unterstützt, welche, ähnlich wie CUDA, die Berechnung auf Grafikkarten des Herstellers [[ATI Technologies]] erlaubt.

Derzeit (Stand: Mai 2020) hat die Plattform bei rund 150.000 Teilnehmern<ref>[https://www.boincstats.com/stats/-1/project/detail/user Active-User-Übersicht] auf boincstats.com</ref> und ca. 800.000 aktiven Rechnern<ref>[https://boincstats.com/de/stats/-1/project/detail/host Active-Host-Übersicht] auf boincstats.com</ref> eine Rechenleistung von durchschnittlich 32 [[FLOPS|PetaFLOPS]]<ref>[https://boincstats.com/de/stats/-1/project/detail/overview Übersicht BOINC-Leistung] auf boincstats.com</ref>, die je nach Tag schwankt. Durch die Unterstützung der Berechnung von Arbeitspaketen mit einer kompatiblen Grafikkarte ist die Rechenleistung in der Vergangenheit stark angestiegen.

[[Datei:boinc_client_rosetta_climateprediction_net.jpg|mini|232px|rechts|Der BOINC-Manager (im Expertenmodus) mit den grafischen Fenstern von [[Rosetta@home]] und [[ClimatePrediction.net]]]]


== Bestandteile ==
== Bestandteile ==
=== Teilnehmerseitig ===
=== Teilnehmerseitig ===
; Core-Client
*'''Core-Client''': Der Core-Client ist ein auf dem Teilnehmerrechner im Hintergrund laufendes Kommandozeilen-Programm. Er steuert und überwacht die wissenschaftlichen Anwendungen gemäß den Vorgaben des Teilnehmers, puffert Arbeitspakete und kommuniziert mit den Schedulern und Datenservern der Projekte. Der Core-Client kann theoretisch auf jedes Unix-artige Betriebssystem portiert werden, ist für sich allein genommen jedoch recht nutzlos, wenn für die jeweilige Plattform keine wissenschaftlichen Anwendungen zur Verfügung stehen.
: Der Core-Client ist ein auf dem Teilnehmerrechner im Hintergrund laufendes Kommandozeilen-Programm. Er steuert und überwacht die wissenschaftlichen Anwendungen gemäß den Vorgaben des Teilnehmers, puffert Arbeitspakete und kommuniziert mit den Schedulern und Datenservern der Projekte. Der Core-Client kann, neben Windows, theoretisch auch auf jedes Unix-artige Betriebssystem portiert werden, ist für sich allein genommen jedoch recht nutzlos, wenn für die jeweilige Plattform keine wissenschaftlichen Anwendungen zur Verfügung stehen.
*'''BOINC Manager''': Der BOINC Manager ist eine grafische Oberfläche zur Konfiguration und Überwachung des Core-Clients. Er basiert auf dem [[WxWidgets]]-Toolkit und ist damit auf allen Plattformen lauffähig, die von WxWidgets unterstützt werden.
; BOINC-Manager
*'''Boinc-Commandline-Interface''': das Programm ''boinc_cmd'' erlaubt es, den Core-Clienten über die Kommandozeile zu steuern, beispielsweise wenn keine grafische Oberfläche verfügbar ist (wie bei [[Server]]n).
: Der BOINC-Manager ist eine grafische Oberfläche zur Konfiguration und Überwachung des Core-Clients. Er basiert auf dem [[wxWidgets]]-Toolkit und ist damit auf allen Plattformen lauffähig, die von wxWidgets unterstützt werden.
; Boinc-Commandline-Interface
: das Programm ''boinc_cmd'' erlaubt es, den Core-Clienten über die Kommandozeile zu steuern, beispielsweise wenn keine grafische Oberfläche verfügbar ist (wie bei [[Server]]n).
; Projektanwendungen
: Jedes Projekt stellt Anwendungen bereit, die vom Core-Client heruntergeladen und zur Berechnung der Arbeitspakete verwendet werden. Diese werden zur Laufzeit vom Core-Client mittels [[Shared Memory]] überwacht. Die Funktionen für diese Überwachung werden in der von BOINC mitgelieferten Programmierschnittstelle (BOINC-API) bereitgestellt.


Bei älteren Programmversionen ist der Core-Client sowohl in den grafischen BOINC-Manager als auch in das Kommandozeilen-Interface integriert. Bei aktuellen Versionen kommuniziert der separate Core-Client über Shared Memory mit den Steuerungsprogrammen.
=== Projektseitig ===

Das vom jeweiligen Projekt zur Verfügung gestellte [[Backend]] basiert auf einem Webserver, [[PHP]] als Skriptsprache und einer [[MySQL]]-Datenbank. Bei großen Projekten können die Backend-Dienste auf mehrere Server verteilt sein.
=== Serverseitig ===
*'''Scheduler''': Der Scheduler ist ein [[CGI]]-Programm auf dem Webserver des Projekts. Er teilt den Teilnehmer-Clients ihre Arbeitspakete zu und nimmt nach getaner Arbeit eine kurze Meldung über Erfolg/Misserfolg entgegen. Über alle Aktivitäten führt er in der Datenbank Buch.
Das vom jeweiligen Projekt zur Verfügung gestellte [[Front-End und Back-End|Backend]] basiert auf einem Webserver, [[PHP]] als [[Skriptsprache]] und einer [[MySQL]]-Datenbank. Bei großen Projekten können die Backend-Dienste auf mehrere Server verteilt sein. Einige Projekte verwenden [[Perl (Programmiersprache)|Perl]] oder [[Active Server Pages|ASP]] anstelle von PHP für das Backend, dies sind Eigenentwicklungen der Projekte, die das von Berkeley vorgegebene Kommunikationsprotokoll nachbilden.
*'''Datenserver''': Ein einfacher [[HTTP]]-Server, von dem die Clients ihre vom Scheduler zugeteilten Arbeitspakete herunterladen und die Ergebnisdateien hochladen.
; Scheduler
*'''Validator''': Der Validator (ein für jedes Projekt unterschiedliches Programm) prüft die von den Clients zurückgelieferten Ergebnisdateien auf Korrektheit. Meist geschieht dies dadurch, dass ein Arbeitspaket von mehreren Teilnehmern redundant bearbeitet wird. Der Validator vergleicht dann die Ergebnisse. Idealerweise sind sie identisch.
: Der Scheduler ist ein [[Common Gateway Interface|CGI]]-Programm auf dem Webserver des Projekts. Er teilt den Teilnehmer-Clients ihre Arbeitspakete zu und nimmt nach getaner Arbeit eine kurze Meldung über Erfolg/Misserfolg entgegen. Über alle Aktivitäten führt er in der Datenbank Buch.
*'''Assimilator''': Ein projektspezifisches Programm. Nimmt validierte Ergebnisdateien und bereitet sie zur weitergehenden wissenschaftlichen Analyse auf. Dazu können die Ergebnisse beispielsweise in eine weitere Datenbank archiviert werden.
; Datenserver
*'''File-Deleter''': Nachdem die Ergebnisse "assimiliert" wurden sind die Input- und Output-Dateien der Clients unnötiger Ballast für den Datenserver, die durch ihre Anzahl auch seine Performance beeinträchtigen können. Mit dem File-Deleter werden nicht mehr benötigte Dateien vom Server gelöscht.
: Ein einfacher [[HTTP]]-Server, von dem die Clients ihre vom Scheduler zugeteilten Arbeitspakete herunterladen und die Ergebnisdateien hochladen.
*'''Splitter''': Projektspezifisches Programm. Sorgt für den Nachschub an Arbeitspaketen. Bei Projekten, die einen finiten Datenbestand analysieren, teilt er den Datenbestand in handliche Arbeitspakete auf. Bei anderen Projekten erzeugt der Splitter anhand bestimmter Parameter automatisch immer neue Arbeitspakete. Der Arbeitsvorrat ist bei solchen Projekten potenziell unendlich.
; Validator
*'''Transitioner''': Der Transitioner überwacht den Fortschritt der Arbeitspakete entlang einer gedachten "Pipeline". So stößt er beispielsweise den Validator an, wenn er feststellt, dass zu einem Arbeitspaket genügend redundante Ergebnisse vorliegen, so dass mit der Validierung begonnen werden kann.
: Der Validator (ein für jedes Projekt unterschiedliches Programm) prüft die von den Clients zurückgelieferten Ergebnisdateien auf Korrektheit. Meist geschieht dies dadurch, dass ein Arbeitspaket von mehreren Teilnehmern redundant bearbeitet wird. Der Validator vergleicht dann die Ergebnisse. Idealerweise sind sie identisch.
; Assimilator
: Ein projektspezifisches Programm. Nimmt validierte Ergebnisdateien und bereitet sie zur weitergehenden wissenschaftlichen Analyse auf. Dazu können die Ergebnisse beispielsweise in eine weitere Datenbank archiviert werden.
; File-Deleter
: Nachdem die Ergebnisse „assimiliert“ wurden, sind die Input- und Output-Dateien der Clients unnötiger Ballast für den Datenserver, die durch ihre Anzahl auch seine Performance beeinträchtigen können. Mit dem File-Deleter werden nicht mehr benötigte Dateien vom Server gelöscht.
; Transitioner
: Der Transitioner überwacht den Fortschritt der Arbeitspakete entlang einer gedachten ''Pipeline''. So stößt er beispielsweise den Validator an, wenn er feststellt, dass zu einem Arbeitspaket genügend redundante Ergebnisse vorliegen, so dass mit der Validierung begonnen werden kann.


== Funktionen ==
== Funktionen ==
Das Verhalten des BOINC-Frameworks kann an die Bedürfnisse verschiedener Projekte angepasst werden. Zu den Funktionen, die nur von einigen Projekten genutzt werden, gehören:
Das Verhalten des BOINC-Frameworks kann an die Bedürfnisse verschiedener Projekte angepasst werden. Zu den Funktionen, die nur von einigen Projekten genutzt werden, gehören:
; Homogene Redundanz
: Einige wissenschaftliche Anwendungen reagieren empfindlich auf numerische Differenzen, die sich auf unterschiedlichen Teilnehmerrechnern ergeben können. Die Ursachen dafür können in den Betriebssystemen, den Prozessoren oder den verwendeten [[Compiler]]n liegen. Kleine Unterschiede in der Rundung oder [[Gleitkommazahl|Gleitkomma]]-Implementation können dabei zu völlig unterschiedlichen Ergebnissen führen. Im Falle von Predictor@home stellte man beispielsweise fest, dass [[Intel]]- und [[AMD]]-Prozessoren häufig unterschiedliche Proteinfaltungen errechneten. Keiner der Prozessoren hatte dabei „falsch“ gerechnet, da man Proteinstrukturen ohnehin nur statistisch annähern kann, aber die Unterschiede waren signifikant genug, um den Validator aus dem Tritt zu bringen. [[LHC@Home]] hat das Problem für sich durch eine neue plattformunabhängige Mathematik-Bibliothek lösen können. BOINC-seitig besteht die Möglichkeit, ein Arbeitspaket jeweils nur identischen Plattformen zuzuteilen. Ein Arbeitspaket für „Windows/AMD“ wird dann nur von Rechnern mit dieser Ausstattung bearbeitet.
; Locality Scheduling
: Bei einigen Projekten sind die Input-Dateien der Arbeitspakete sehr groß. Das belastet die Netzwerkanbindung des Projekts. Manche Projekte haben jedoch den Vorteil, dass für viele Arbeitspakete die gleichen Input-Dateien benötigt werden. Dann kann durch ''Locality Scheduling'' der Netzwerkverkehr reduziert werden. Ein Client bekommt in diesem Fall bevorzugt Arbeitspakete zugeteilt, zu denen er angibt, dass er die benötigten Input-Dateien bereits vorliegen hat. Diese Technik wird derzeit vor allem von [[Einstein@home]] verwendet.
; Trickles
: (engl. für ''Tröpfchen'') sind kleine XML-Dateien, mit denen die Projektanwendung den Scheduler über den Fortschritt von sehr lange laufenden Berechnungen unterrichten kann. [[ClimatePrediction.net]] benutzt zum Beispiel Arbeitspakete, deren Fertigstellung Wochen oder sogar Monate dauern kann. So lange möchten die Benutzer aber nicht auf Creditpunkte warten. Durch diese Trickles unterrichtet der Core-Client den Scheduler über den Arbeitsfortschritt, so dass bereits Creditpunkte vergeben werden können, während das Paket noch in Arbeit ist.
; Datenarchivierung
: Bis zu einer vom Teilnehmer festlegbaren Grenze können Projekte die Festplatte des Teilnehmerrechners zur Archivierung alter Input- oder Output-Daten verwenden. Das Projekt kommt an die Daten jedoch nicht ohne Kooperation des Teilnehmers heran. Diese Möglichkeit wurde zeitweise von ClimatePrediction.net verwendet, es handelte sich um Datenmengen im Bereich von einigen 100 MB. Inzwischen gibt es Projektkonzepte, die sich ausschließlich mit der verteilten Archivierung mit BOINC befassen, bisher ist aber kein derartiges Projekt öffentlich verfügbar.


== Sicherheit ==
*'''Homogene Redundanz''': Einige wissenschaftliche Anwendungen reagieren empfindlich auf nummerische Differenzen, die sich auf unterschiedlichen Teilnehmerrechnern ergeben können. Die Ursachen dafür können in den Betriebssystemen, den Prozessoren oder den verwendeten [[Compiler]]n liegen. Kleine Unterschiede in der Rundung oder Fließkomma-Implementation können dabei zu völlig unterschiedlichen Ergebnissen führen. Im Falle von [[Predictor@home]] stellte man beispielsweise fest, dass [[Intel]]- und [[AMD]]-Prozessoren häufig unterschiedliche Proteinfaltungen errechneten. Keiner der Prozessoren hatte dabei "falsch" gerechnet, da man Proteinstrukturen ohnehin nur statistisch annähern kann, aber die Unterschiede waren signifikant genug, um den Validator aus dem Tritt zu bringen. [[LHC@home]] hat das Problem für sich durch eine neue plattformunabhängige Mathe-Bibliothek lösen können. BOINC-seitig besteht die Möglichkeit, ein Arbeitspaket jeweils nur identischen Plattformen zuzuteilen. Ein Arbeitspaket für "Windows/AMD" wird dann nur von Rechnern mit dieser Ausstattung bearbeitet.
=== Sicherheit des Clients ===
*'''Locality Scheduling''': Bei einigen Projekten sind die Input-Dateien der Arbeitspakete sehr groß. Das belastet die Netzwerkanbindung des Projekts. Manche Projekte haben jedoch den Vorteil, dass für viele Arbeitspakete die gleichen Input-Dateien benötigt werden. Dann kann durch "Locality Scheduling" der Netzwerkverkehr reduziert werden. Ein Client bekommt in diesem Fall bevorzugt Arbeitspakete zugeteilt, zu denen er angibt, dass er die benötigten Input-Dateien bereits vorliegen hat. Diese Technik wird derzeit vor allem von [[Einstein@home]] verwendet.
Der BOINC-Client kann so konfiguriert werden, dass ein sogenannter ''Protected Mode'' verwendet wird. Dabei läuft die BOINC-Instanz in einem [[Sandbox]]-Modus. Dazu wird ein mit geringsten Rechten ausgestattetes Benutzerkonto verwendet.<ref>[https://boinc.berkeley.edu/wiki/BOINC_Security Sicherheit von BOINC auf der Projektseite]</ref>
*'''Trickling''': [[ClimatePrediction.net]] benutzt Arbeitspakete, deren Fertigstellung Wochen oder sogar Monate dauern kann. So lange möchten die Benutzer aber nicht auf Creditpunkte warten. Durch Trickling kann der Client den Scheduler über den Arbeitsfortschritt unterrichten, so dass bereits Creditpunkte vergeben werden können, während das Paket noch in Arbeit ist.
*'''Datenarchivierung''': Bis zu einer vom Teilnehmer festlegbaren Grenze können Projekte die Festplatte des Teilnehmerrechners zur Archivierung alter Input- oder Output-Daten verwenden. Das Projekt kommt an die Daten jedoch nicht ohne Kooperation des Teilnehmers heran. Wird derzeit nur von ClimatePrediction.net verwendet. Der Zeitaufwand zur Neuberechnung eines fertig gestellten Klimamodells wäre nämlich enorm. Die Ergebnisdateien von ca. 300 MB verbleiben daher auf dem Teilnehmerrechner. Wenn der Benutzer den Platz benötigt, kann er sie löschen oder vorher anderweitig sichern.


==Projekte==
== Credits ==
Für erfolgreich berechnete und innerhalb der Gültigkeitsdauer zurückgemeldete Arbeitspakete werden sogenannte Credits vergeben. Diese virtuellen Punkte ermöglichen den Vergleich der investierten Berechnungszeiten zwischen den Teilnehmern und den Teams. Die Höhe der Credits kann zum einen vom Projekt vorgegeben werden (fixed credits) oder zum anderen anhand der Berechnungszeit sowie der Geschwindigkeit des berechnenden Computers ermittelt werden.<ref>[https://boinc.berkeley.edu/wiki/Computation_credit Erklärung zu Credits auf der BOINC-Projektseite]</ref>
Auf dem Rechner muss lediglich die BOINC-Software installiert werden. Nach der Registrierung bei einem oder mehreren der Projekte lädt BOINC sich selbständig die benötigte Projektsoftware herunter und beginnt den eigentlichen Rechenprozess. Inzwischen steht eine breite Auswahl an Projekten zur Verfügung oder wird gerade entwickelt:


== Projekte ==
* [[Astronomie]]:
{{Hauptartikel|Liste der Projekte verteilten Rechnens}}
** [[SETI@home]] sucht nach Signalen außerirdischer Intelligenzen.
** [[AstroPulse]] ist ein zukünftiges Zweigprojekt von SETI@home. Es sucht nach [[Pulsar|Pulsaren]] und sterbenden [[Schwarzes Loch|Schwarzen Löchern]].
** [[Einstein@home]] sucht nach [[Gravitationswelle]]n von [[Pulsar]]en.
** [[PlanetQuest]] sucht nach [[Exoplanet]]en.
** [[Orbit@home]] dient der Beobachtung von [[Erdnahes Objekt|erdnahen Objekten]].


Auf dem Rechner muss lediglich die BOINC-Software installiert werden. Nach der Registrierung bei einem oder mehreren der Projekte lädt BOINC sich selbständig die benötigte Projektsoftware herunter und beginnt den eigentlichen Rechenprozess. Inzwischen steht eine breite Auswahl an Projekten zur Verfügung, laufend werden neue entwickelt.
* [[Klimatologie]]:
** [[ClimatePrediction.net]] und [[BBC Climate Change Experiment]] berechnen [[Klimamodell]]e, um eine Klimavorhersage für Zeiträume von 50 bis 160 Jahren zu erstellen.
** [[Seasonal Attribution Project]] erforscht den möglichen Einfluss des vom Menschen verursachten [[Klimawandel]]s auf lokale Wetterextreme anhand der Rekordniederschläge über [[England]] und [[Wales]] im Jahre 2000.

* [[Biologie]], [[Chemie]]:
** [[Predictor@home]] erprobt neue Methoden und [[Algorithmus|Algorithmen]] zur Vorhersage der [[Proteinstruktur]].
** [[Rosetta@home]] erprobt ebenfalls neue Methoden und [[Algorithmus|Algorithmen]] zur Vorhersage der [[Proteinstruktur]].
** [[Folding@home]] studiert den Prozess der Faltung und Mißfaltung von Proteinen.
** [[Lattice Project]] ist ein Grid-Projekt der [[University of Maryland]]
** [[SIMAP@home]] Sucht nach Gemeinsamkeiten in Struktur von Proteinen und versucht eine Art räumliche Darstellung von Funktion und Aufbau der Proteine zu erstellen..
** [[Quantum Monte Carlo at Home]] ist ein [[Quantenchemie]]-Projekt der Universität Münster

* [[Physik]], [[Technik]]:
** [[LHC@home]] ist ein Projekt des [[CERN]] und hilft beim Bau des [[Large Hadron Collider]].
** [[μFluids]] ist ein Projekt für [[Mikrogravitation]]s- und [[Mikrofluid]]-Forschung

* [[Mathematik]]:
** PrimeGrid faktorisiert [[RSA-640]].
** [[SZTAKI Desktop Grid]] sucht generalisierte [[binär]]e [[Zahlensystem]]e.
** [[Chess960@home]] befasst sich mit einer besonderen Schach-Variante.

* [[Grid-Computing|Grid]]-Forschung:
** Resource Measurement misst die verfügbaren Ressourcen von BOINC-Teilnehmern.
** Crash Collection sammelt Core-Dumps von BOINC-Rechnern.
** XtremLab ist ein geplantes französisches Projekt im Bereich Grid-Forschung mit ähnlichen Zielen wie Resource Measurement.

* Sonstige:
** [[BURP]] ist derzeit das einzige nicht-wissenschaftliche BOINC-Projekt. Es rendert [[3D]]-[[Animation]]en.

Eine genauere Übersicht, welche Projekte aktuell laufen, finden Sie im [http://faq.boinc.de/index.php?title=BOINC-Projekt BOINC-Wiki].


== Weblinks ==
== Weblinks ==
{{Commons|Berkeley Open Infrastructure for Network Computing}}
=== Projektseiten (englischsprachig) ===
{{Wikinews|Computerdiebstahl dank BOINC aufgeklärt|Computerdiebstahl dank BOINC aufgeklärt}}
* [http://africa-at-home.web.cern.ch/ Africa@home]
* [http://boinc.berkeley.edu/ BOINC-Berkeley Open Infrastructure for Network Computing]
* [https://boinc.berkeley.edu/ BOINC] Offizielle Website
* [https://www.seti-germany.de/wiki/Hauptseite BOINC-Wiki auf seti-germany.de]
* [http://burp.boinc.dk/ BURP]
*[https://play.google.com/store/apps/details?id=edu.berkeley.boinc&hl=de BOINC für Android] – BOINC auf Android-Endgeräten
* [http://climateapps2.oucs.ox.ac.uk/cpdnboinc ClimatePrediction.net]
** [http://bbc.cpdn.org/ BBC Climate Change Experiment]
** [http://attribution.cpdn.org/ Seasonal Attribution Project]
* [http://einstein.phys.uwm.edu/ Einstein@home]
* [http://boinc.banaan.org/hashclash/ HashClash]
* [http://boinc.gorlaeus.net/ Leiden Classical]
* [http://lhcathome.cern.ch/ LHC@Home] (zur Zeit Anmeldungen möglich)
* [http://www.malariacontrol.net/ malariacontrol.net]
* [http://www.ufluids.net/ µFluids@home]
* [http://pirates.vassar.edu/ Pirates@home]
* [http://predictor1.scripps.edu/ Predictor@home]
* [http://www.primegrid.com/ PrimeGrid]
* [http://boinc.bakerlab.org/rosetta/ Rosetta@home]
* [http://setiweb.ssl.berkeley.edu/ SETI@home]
* [http://boinc.bio.wzw.tum.de/boincsimap/ SIMAP@home]
* [http://xw01.lri.fr:4320/ XtremLab]


== Einzelnachweise ==
=== Projektseiten (deutschsprachig) ===
<references />
* [http://qah.uni-muenster.de/ QMC@home]


{{Normdaten|TYP=s|GND=1025312678}}
=== Optimierte Software ===
Ein optimierter Core-Client bringt für sich genommen keine messbare Verbesserung der Rechenleistung, da er keine wissenschaftliche Arbeit bewältigt. Weil aber der "claimed credit" über eine [[Benchmark]]funktion im Core-Client kalibriert wird, können optimierte Clients unter Umständen mehr Credits bewilligt bekommen. Ob und wie die wissenschaftliche Software für spezielle Befehlssätze einzelner CPU-Familien optimiert ist, liegt in den Händen der Projekte (sofern die Software nicht Open Source ist). Die Bandbreite reicht dabei von einfacher CMOV-Unterstützung bei Predictor@home bis hin zu kompletten SSE- und AltiVec-Codepfaden bei Einstein@home.


[[Kategorie:Berkeley Open Infrastructure for Network Computing| ]]
* [http://boinc.us.tt Optimierte Core-Clients für Linux (inoffiziell, nur 4.x-Versionen)] (englisch)
[[Kategorie:Freie Systemsoftware]]
* [http://members.dslextreme.com/~readerforum/forum_team/boinc.html AltiVec-optimierte Core-Clients für Apple PPC (inoffiziell)] (englisch)
[[Kategorie:University of California, Berkeley]]

=== Deutschsprachige Informationsquellen ===
* [http://www.boinc.de Deutsche Anlaufstelle]
* [http://faq.boinc.de/index.php?title=BOINC-Projekt Boinc Wiki]
* '''[http://altes-beckhaus.com/wiki/ Crunching Wiki]''' Deutsche Infos über das "Verteilte Rechnen" und die Projekte ([http://crunching-family.at Crunching Family])
* [http://217.160.138.71/wiki/ Rechenkraft.net] Deutsche VR Community

[[Kategorie:Freie Software]]
[[Kategorie:Verteiltes Rechnen]]
[[Kategorie:Verteiltes Rechnen]]

[[cs:Berkeley Open Infrastructure for Network Computing]]
[[da:Berkeley Open Infrastructure for Network Computing]]
[[en:Berkeley Open Infrastructure for Network Computing]]
[[es:Berkeley Open Infrastructure for Network Computing]]
[[fi:BOINC]]
[[fr:Berkeley Open infrastructure for Network Computing]]
[[hu:Berkeley Open Infrastructure for Network Computing]]
[[id:Berkeley Open Infrastructure for Network Computing]]
[[it:Berkeley Open Infrastructure for Network Computing]]
[[ja:Berkeley Open Infrastructure for Network Computing]]
[[nl:Berkeley Open Infrastructure for Network Computing]]
[[pl:BOINC]]
[[pt:BOINC]]
[[ru:BOINC]]
[[sk:BOINC]]
[[sv:Berkeley Open Infrastructure for Network Computing]]
[[zh:BOINC]]

Aktuelle Version vom 15. April 2025, 19:49 Uhr

BOINC

Das Aktuelle BOINC Logo
Der BOINC-Client für Windows
Der BOINC-Client für macOS
Basisdaten

Entwickler Universität Berkeley
Erscheinungsjahr 10. April 2002
Aktuelle Version 8.0.4[1]
(22. Juli 2024)
Aktuelle Vorabversion 8.0.1[2]
(1. April 2024)
Betriebssystem Windows, macOS, Linux, Android
Programmier­sprache C++
Kategorie Verteiltes Rechnen
Lizenz GPL/LGPL (Freie Software)
deutschsprachig ja
boinc.berkeley.edu

Die Berkeley Open Infrastructure for Network Computing (kurz BOINC) ist eine Software-Plattform für verteiltes Rechnen.

Die BOINC-Plattform wird an der Universität Berkeley entwickelt und ermöglicht es, die ungenutzte Rechenleistung von vielen tausend Computern über das Internet oder Intranet verfügbar zu machen. Dies geschieht in Form von Projekten, die meist gemeinnützig arbeiten und von Universitäten oder anderen Institutionen betreut werden. Die derzeit rechenintensivsten Projekte umfassen unter anderem Berechnungen zur Erstellung eines genauen 3D-Modells der Milchstraße, die Suche nach außerirdischem Leben, Berechnung von Gravitationswellen, Vorhersagen zur Klimaentwicklung sowie die Simulation von Proteinfaltungen für die Erforschung von neuen Medikamenten.

Bei der Entwicklung von BOINC wurden Erfahrungen des Volunteer-Computing-Projekts SETI@home genutzt. Ein Merkmal der Plattform ist die Trennung der Projektverwaltung von den wissenschaftlichen Inhalten.

Anwender dieser Plattform installieren sich ein Clientprogramm und können damit ihre freie Rechenzeit auf ein oder mehrere Projekte verteilen. Dies ist eine wichtige Verbesserung gegenüber an nur ein Projekt gebundenen Clients, da einige Distributed-Computing-Projekte nicht über genügend Arbeit verfügen, um die Ressourcen einer großen Teilnehmerbasis zu nutzen. SETI@home classic umging dieses Problem, indem manche Arbeitspakete bis zu zwölfmal zur Berechnung herausgegeben wurden, obwohl zur Sicherung von akkuraten wissenschaftlich verwertbaren Resultaten nur drei Ergebnisse notwendig wären. Mit einem an mehreren Projekten teilnehmenden BOINC-Client kann die verfügbare Rechenleistung somit effektiver verwendet werden.

Seit dem 18. November 2003 steht BOINC unter der GNU General Public License. Das Ziel der Freigabe des Programmcodes ist eine noch breitere Unterstützung verschiedener Plattformen durch aktive Mithilfe der freien Softwaregemeinde und eine erhöhte Sicherheit.

Ab der Version 6.4.5 wird die CUDA-Technologie von Nvidia unterstützt. Damit ist es möglich, die Rechenleistung von Grafikkarten mit CUDA-Unterstützung zu nutzen. Ab der Version 6.10.x wird die ATI-Stream-Technik unterstützt, welche, ähnlich wie CUDA, die Berechnung auf Grafikkarten des Herstellers ATI Technologies erlaubt.

Derzeit (Stand: Mai 2020) hat die Plattform bei rund 150.000 Teilnehmern[3] und ca. 800.000 aktiven Rechnern[4] eine Rechenleistung von durchschnittlich 32 PetaFLOPS[5], die je nach Tag schwankt. Durch die Unterstützung der Berechnung von Arbeitspaketen mit einer kompatiblen Grafikkarte ist die Rechenleistung in der Vergangenheit stark angestiegen.

Der BOINC-Manager (im Expertenmodus) mit den grafischen Fenstern von Rosetta@home und ClimatePrediction.net

Teilnehmerseitig

[Bearbeiten | Quelltext bearbeiten]
Core-Client
Der Core-Client ist ein auf dem Teilnehmerrechner im Hintergrund laufendes Kommandozeilen-Programm. Er steuert und überwacht die wissenschaftlichen Anwendungen gemäß den Vorgaben des Teilnehmers, puffert Arbeitspakete und kommuniziert mit den Schedulern und Datenservern der Projekte. Der Core-Client kann, neben Windows, theoretisch auch auf jedes Unix-artige Betriebssystem portiert werden, ist für sich allein genommen jedoch recht nutzlos, wenn für die jeweilige Plattform keine wissenschaftlichen Anwendungen zur Verfügung stehen.
BOINC-Manager
Der BOINC-Manager ist eine grafische Oberfläche zur Konfiguration und Überwachung des Core-Clients. Er basiert auf dem wxWidgets-Toolkit und ist damit auf allen Plattformen lauffähig, die von wxWidgets unterstützt werden.
Boinc-Commandline-Interface
das Programm boinc_cmd erlaubt es, den Core-Clienten über die Kommandozeile zu steuern, beispielsweise wenn keine grafische Oberfläche verfügbar ist (wie bei Servern).
Projektanwendungen
Jedes Projekt stellt Anwendungen bereit, die vom Core-Client heruntergeladen und zur Berechnung der Arbeitspakete verwendet werden. Diese werden zur Laufzeit vom Core-Client mittels Shared Memory überwacht. Die Funktionen für diese Überwachung werden in der von BOINC mitgelieferten Programmierschnittstelle (BOINC-API) bereitgestellt.

Bei älteren Programmversionen ist der Core-Client sowohl in den grafischen BOINC-Manager als auch in das Kommandozeilen-Interface integriert. Bei aktuellen Versionen kommuniziert der separate Core-Client über Shared Memory mit den Steuerungsprogrammen.

Das vom jeweiligen Projekt zur Verfügung gestellte Backend basiert auf einem Webserver, PHP als Skriptsprache und einer MySQL-Datenbank. Bei großen Projekten können die Backend-Dienste auf mehrere Server verteilt sein. Einige Projekte verwenden Perl oder ASP anstelle von PHP für das Backend, dies sind Eigenentwicklungen der Projekte, die das von Berkeley vorgegebene Kommunikationsprotokoll nachbilden.

Scheduler
Der Scheduler ist ein CGI-Programm auf dem Webserver des Projekts. Er teilt den Teilnehmer-Clients ihre Arbeitspakete zu und nimmt nach getaner Arbeit eine kurze Meldung über Erfolg/Misserfolg entgegen. Über alle Aktivitäten führt er in der Datenbank Buch.
Datenserver
Ein einfacher HTTP-Server, von dem die Clients ihre vom Scheduler zugeteilten Arbeitspakete herunterladen und die Ergebnisdateien hochladen.
Validator
Der Validator (ein für jedes Projekt unterschiedliches Programm) prüft die von den Clients zurückgelieferten Ergebnisdateien auf Korrektheit. Meist geschieht dies dadurch, dass ein Arbeitspaket von mehreren Teilnehmern redundant bearbeitet wird. Der Validator vergleicht dann die Ergebnisse. Idealerweise sind sie identisch.
Assimilator
Ein projektspezifisches Programm. Nimmt validierte Ergebnisdateien und bereitet sie zur weitergehenden wissenschaftlichen Analyse auf. Dazu können die Ergebnisse beispielsweise in eine weitere Datenbank archiviert werden.
File-Deleter
Nachdem die Ergebnisse „assimiliert“ wurden, sind die Input- und Output-Dateien der Clients unnötiger Ballast für den Datenserver, die durch ihre Anzahl auch seine Performance beeinträchtigen können. Mit dem File-Deleter werden nicht mehr benötigte Dateien vom Server gelöscht.
Transitioner
Der Transitioner überwacht den Fortschritt der Arbeitspakete entlang einer gedachten Pipeline. So stößt er beispielsweise den Validator an, wenn er feststellt, dass zu einem Arbeitspaket genügend redundante Ergebnisse vorliegen, so dass mit der Validierung begonnen werden kann.

Das Verhalten des BOINC-Frameworks kann an die Bedürfnisse verschiedener Projekte angepasst werden. Zu den Funktionen, die nur von einigen Projekten genutzt werden, gehören:

Homogene Redundanz
Einige wissenschaftliche Anwendungen reagieren empfindlich auf numerische Differenzen, die sich auf unterschiedlichen Teilnehmerrechnern ergeben können. Die Ursachen dafür können in den Betriebssystemen, den Prozessoren oder den verwendeten Compilern liegen. Kleine Unterschiede in der Rundung oder Gleitkomma-Implementation können dabei zu völlig unterschiedlichen Ergebnissen führen. Im Falle von Predictor@home stellte man beispielsweise fest, dass Intel- und AMD-Prozessoren häufig unterschiedliche Proteinfaltungen errechneten. Keiner der Prozessoren hatte dabei „falsch“ gerechnet, da man Proteinstrukturen ohnehin nur statistisch annähern kann, aber die Unterschiede waren signifikant genug, um den Validator aus dem Tritt zu bringen. LHC@Home hat das Problem für sich durch eine neue plattformunabhängige Mathematik-Bibliothek lösen können. BOINC-seitig besteht die Möglichkeit, ein Arbeitspaket jeweils nur identischen Plattformen zuzuteilen. Ein Arbeitspaket für „Windows/AMD“ wird dann nur von Rechnern mit dieser Ausstattung bearbeitet.
Locality Scheduling
Bei einigen Projekten sind die Input-Dateien der Arbeitspakete sehr groß. Das belastet die Netzwerkanbindung des Projekts. Manche Projekte haben jedoch den Vorteil, dass für viele Arbeitspakete die gleichen Input-Dateien benötigt werden. Dann kann durch Locality Scheduling der Netzwerkverkehr reduziert werden. Ein Client bekommt in diesem Fall bevorzugt Arbeitspakete zugeteilt, zu denen er angibt, dass er die benötigten Input-Dateien bereits vorliegen hat. Diese Technik wird derzeit vor allem von Einstein@home verwendet.
Trickles
(engl. für Tröpfchen) sind kleine XML-Dateien, mit denen die Projektanwendung den Scheduler über den Fortschritt von sehr lange laufenden Berechnungen unterrichten kann. ClimatePrediction.net benutzt zum Beispiel Arbeitspakete, deren Fertigstellung Wochen oder sogar Monate dauern kann. So lange möchten die Benutzer aber nicht auf Creditpunkte warten. Durch diese Trickles unterrichtet der Core-Client den Scheduler über den Arbeitsfortschritt, so dass bereits Creditpunkte vergeben werden können, während das Paket noch in Arbeit ist.
Datenarchivierung
Bis zu einer vom Teilnehmer festlegbaren Grenze können Projekte die Festplatte des Teilnehmerrechners zur Archivierung alter Input- oder Output-Daten verwenden. Das Projekt kommt an die Daten jedoch nicht ohne Kooperation des Teilnehmers heran. Diese Möglichkeit wurde zeitweise von ClimatePrediction.net verwendet, es handelte sich um Datenmengen im Bereich von einigen 100 MB. Inzwischen gibt es Projektkonzepte, die sich ausschließlich mit der verteilten Archivierung mit BOINC befassen, bisher ist aber kein derartiges Projekt öffentlich verfügbar.

Sicherheit des Clients

[Bearbeiten | Quelltext bearbeiten]

Der BOINC-Client kann so konfiguriert werden, dass ein sogenannter Protected Mode verwendet wird. Dabei läuft die BOINC-Instanz in einem Sandbox-Modus. Dazu wird ein mit geringsten Rechten ausgestattetes Benutzerkonto verwendet.[6]

Für erfolgreich berechnete und innerhalb der Gültigkeitsdauer zurückgemeldete Arbeitspakete werden sogenannte Credits vergeben. Diese virtuellen Punkte ermöglichen den Vergleich der investierten Berechnungszeiten zwischen den Teilnehmern und den Teams. Die Höhe der Credits kann zum einen vom Projekt vorgegeben werden (fixed credits) oder zum anderen anhand der Berechnungszeit sowie der Geschwindigkeit des berechnenden Computers ermittelt werden.[7]

Auf dem Rechner muss lediglich die BOINC-Software installiert werden. Nach der Registrierung bei einem oder mehreren der Projekte lädt BOINC sich selbständig die benötigte Projektsoftware herunter und beginnt den eigentlichen Rechenprozess. Inzwischen steht eine breite Auswahl an Projekten zur Verfügung, laufend werden neue entwickelt.

Commons: Berkeley Open Infrastructure for Network Computing – Album mit Bildern, Videos und Audiodateien

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. github.com. 22. Juli 2024.
  2. github.com. 1. April 2024.
  3. Active-User-Übersicht auf boincstats.com
  4. Active-Host-Übersicht auf boincstats.com
  5. Übersicht BOINC-Leistung auf boincstats.com
  6. Sicherheit von BOINC auf der Projektseite
  7. Erklärung zu Credits auf der BOINC-Projektseite