Verteiltes Rechnen

In diesem Artikel möchte ich ein Hobby von mir näher beschreiben. Es geht dabei um "Verteiltes Rechnen". Vielleicht kann ich ja den einen oder anderen auch dafür begeistern.

Verschiedene Projekte von Universitäten oder anderen Forschungseinrichtungen benötigen eine abartige Menge an Rechenleistung.
Dazu gehören z.B.:

  • Simulation von Proteinfaltungen (Während oder nach der Synthese falten sich Aminosäure-Ketten in eine definierte räumliche Struktur. Läuft dabei etwas schief, können Krankheiten oder Krebs entstehen.) Die Simulation dieser Faltungen leistet einen großen Beitrag zur Medizinforschung.
  • SETI-Projekt (Search for Extraterrestrial Intelligence). Analysen von empfangenen Radiowellen aus dem Weltraum nach Anzeichen von Intelligenz.
  • Berechnung von Klimamodellen.
  • Primzahlensuche
  • Projekte zur Elementarphysik
  • Kryptografie
  • ...


Die benötigte Rechenleistung ist so groß, dass diese Projekte auch mit dem größten Supercomputer (selbst wenn man ihn sich leisten könnte) nicht in vertretbarer Zeit berechnet werden könnten.

Die Lösung heißt "Verteiltes Rechnen" oder "Distributed Computing".

Dabei wird die große Rechenaufgabe in lauter kleine Rechenpäckchen (Workunits) aufgeteilt und auf viele Rechner von Privatpersonen verteilt. Dort werden diese Workunits mit Hilfe der ansonsten nicht genutzten Rechenzeit durchgerechnet und dann an den Server zurückgeschickt. Das erste Projekt,  das auf diese Weise berechnet wurde, war übrigens das mittlerweile abgeschlossene erste SETI-Projekt (Wieder mal die Trekies Winken ).

Nun stellt sich natürlich die Frage, was ich davon habe, wenn ich anderen Rechenleistung zur Verfügung stelle? Die Antwort ist:

"Absolut gar nichts!"

Entweder man hat den Wunsch, einen kleinen Beitrag zum Fortschritt zu leisten, oder man hat den Wunsch halt nicht. Beides ist in Ordnung.

Für alle, die nun etwas beitragen wollen, ohne sich selbst über das wie oder warum zu kümmern, hat die Universität von Berkeley den "Berkeley Open Infrastructure for Network Computing" oder kurz BOINC-Client entwickelt. Diesen möchte ich nun näher beschreiben.

BOINC wird ganz normal von der BOINC Homepage heruntergeladen und installiert. Danach müssen nur noch die Projekte ausgewählt werden, für die man rechnen will. Man kann nämlich selbst bestimmen, welche Projekte man als sinnvoll betrachtet. Natürlich können das auch mehrere Projekte sein.

Die netten Herren von SetiGermany.de waren so freundlich und haben ein Video von der Installation und der Einrichtung erstellt.


Einem Team kann man beitreten, erforderlich ist es aber nicht. Hauptsache man ist dabei. Winken
Es gibt nun eine Vielzahl von Projekten, die sich mit den verschiedensten Themen befassen. Eine sehr gute Übersicht findet sich auf der Startseite von Setigermany in der Projekte-Box.

Besonders interessant ist das Projekt "World Comunity Grid". Das WCG umfasst mehrere wechselnde medizinische Projekte unter sich. Daher ist ein genaueres Befassen mit den einzelnen Projekten nicht erforderlich. Auch hierzu hat Setigermany ein Video bereitgestellt:


Bei den meisten Projekten haben die Workunits eine Bearbeitungszeit von 1 bis 5 Stunden. Ein Ausreißer ist hier das ClimatePrediction Projekt. Eine Bearbeitungszeit von mehreren 100 Stunden ist hier möglich. Wenn man also seinen PC öfters mal neu installiert oder demnächst das Betriebssystem wechseln will, sollte man sich lieber ein anderes Projekt aussuchen.

Es gibt nun 2 Wege, sich dem Distributet Computing zu widmen:

  1. Man lässt BOINC in seinem normalen PC Alltag mitlaufen. (Das Rechnen mit ansonsten vom User nicht genutzter Rechenzeit war der ursprüngliche Zweck von BOINC) Allerdings sollte man darauf achten, dass der Rechner so oft benutzt wird, dass die einzelnen Pakete nicht verfallen und damit ungültig werden.
  2. Man installiert BOINC auf möglichst vielen Rechnern und sorgt für eine möglichst lange Betriebszeit dieser Rechner. (In diesem Zuge sei noch der Verein Rechenkraft eV genannt. Er ist nach eigenen Angaben der erste und größte gemeinnützige Verein, der sich das Thema Distributed Computing auf die Fahnen geschrieben hat.)

Ich selbst habe anfänglich BOINC auf meinem Core2Quad 1Jahr lang durchgehend mit 100%laufen lassen. Derzeit läuft er nur auf 50% während der normalen Betriebszeit, da ich während meiner derzeitigen Weiterbildung etwas aufs Geld schauen muss. Man muss nämlich wissen, dass ein moderner PC im Leerlauf aus Stromspargründen die CPU heruntertaktet. Da der BOINC Client je nach Konfiguration bis zu 100% Prozessorleistung abruft, kann der Stromverbrauch des PC schon mal um 50% ansteigen.

Für die erbrachte Rechenleistung werden Punkte vergeben. Anhand dieser Punkte kann man sich mit anderen vergleichen oder sich wie ich eine Statistik auf die Homepage stellen.

Bild

Wieviel Rechenleistung der BOINC Client nutzen darf und zu welcher Tageszeit, kann in den Optionen von BOINC detailliert eingestellt werden. Das Gleiche gilt für die Nutzung des Netzwerkes, da BOINC automatisch neue Workunits downloaded beziehungsweise die berechneten Ergebnisse uploaded.



Dazu muss man allerdings folgendes wissen:
BOINC startet für jeden Prozessorkern eine Workunit. Eine Workunit belegt immer die volle Kapazität des Prozessorkerns (Stichwort Threading). Daher kann der Prozentsatz der abgerufenen Rechenleistung nur in Abhängigkeit von der Prozessorkernanzahl unterteilt werden. Also bei einem 4-Kern-Prozessor in 25%, 50%, 75% oder 100%. Je nachdem werden dann 1,2,3 oder 4 Workunits gleichzeitig ausgeführt. Man kann das im BOINC-Manager sehr schön sehen:



In der Übersicht sieht man alle Workunits, die sich gerade auf meinem Computer befinden. Ganz rechts sieht man den Status der jeweiligen Workunits. Zum Zeitpunkt des Screenshots lief mein Core2Quad auf 50%, daher sind 2 Workunits aktiv. Auch sehr schön zu erkennen ist das Ablaufdatum der jeweiligen Workunits. Die jeweilige Workunit muss bis zu diesem Zeitpunkt durchgerechnet sein, sonst verfällt sie. Normalerweise sind die Fristen bei normaler PC Nutzung sehr großzügig gehalten. Schaltet man den PC allerdings nur einmal die Woche für eine Stunde ein, wird's eher nichts werden.

Ich möchte noch hinzufügen, dass der BOINC Client unter einem untergeordneten Benutzer läuft. Selbst wenn BOINC auf 100% läuft, sind für den angemeldeten User keine Einschränkungen in der PC-Nutzung erkennbar. Der PC reagiert genauso wie immer.

Die Verwendung auf Laptops ist mit Vorsicht zu genießen. Die erhöhte Systemleistung führt natürlich auch zu einer erhöhten Wärmeentwicklung der CPU. Die Wärmeentwicklung ist auf einem normalen PC kein Thema. Viele Notebooks sind allerdings nicht auf eine Dauerlast des Prozessors von 100% ausgelegt. Es kann daher zu Abstürzen, Notabschaltungen oder Beschädigungen wegen der erhöhten thermischen Belastung kommen. Bei normalen PCs ist das aber, wie gesagt, wegen der großzügigen luftigen Bauart kein Problem.

Ich hoffe, ich konnte beim einen oder anderen ein bisschen Interesse für verteiltes Rechnen wecken. Bei Fragen kann man sich gerne an mich wenden.

Aktualisiert (Freitag, 09. April 2010 um 20:29 Uhr)