In den letzten Jahren gab es ein paar Artikel, die sich mit dem Aufbau eines Computerclusters zu Hause befassten - hier zum Beispiel.
Der Pi ist für mich aufgrund seiner geringen Kosten eine gute Plattform, um solche Dinge zu bauen / zu testen. sollten sich "generische" Anleitungen wie diese recht einfach auf den Pi übertragen lassen, oder gibt es etwas, das ich bei einem solchen Projekt beachten sollte?
Antworten:
Ich schlage vor, sich Dispy anzuschauen - das Python-Modul für verteilte Berechnungen.
So führen Sie ein Programm auf einer Reihe von Himbeer-Pi (Knoten) von einem PC aus (Server - IP-Adresse vorausgesetzt
192.168.0.100
):Installieren Sie auf jedem RasPi ein Betriebssystem
Verbinden Sie jeden RasPi mit Ihrem Netzwerk. Suchen Sie die IP (falls dynamisch) oder richten Sie statische IPs ein.
(Nehmen wir an, Sie haben drei Knoten und ihre IPs sind
192.168.0.50-52
)Richten Sie Python ein (falls noch nicht geschehen ), installieren Sie es
dispy
und führen Sie esdispynode.py -i 192.168.0.100
auf jedem RasPi aus. Dadurch wird dispynode angewiesen, Auftragsinformationen vom Server zu erhalten.Installieren Sie auf dem PC (dem Server)
dispy
den folgenden Python-Code und führen Sie ihn aus:Sie können auch durch
/some/program
eine Python-Funktion ersetzen - zcompute
.Sie können auch Abhängigkeiten wie Python-Objekte, Module und Dateien (die
dispy
auf jeden Knoten übertragen werden) hinzufügendepends=[ClassA, moduleB, 'file1']
quelle
Sie sollten sich der bereits geleisteten Arbeit bewusst sein - es gibt sogar einen Namen für eine Gruppe von RasPi-Boxen. Das Embedded Linux Wiki besagt, dass ein Bramble als " Beowulf-Cluster von Raspberry Pi-Geräten" definiert ist. Raspberry Pi Homebrew hat eine Reihe von Posts über Brambles , und siehe auch das eigene Forum der Stiftung .
quelle
Einige Jungs von der Southampton Uni haben einen Cluster zusammengestellt und einen detaillierten Überblick über ihre Arbeit unter http://www.southampton.ac.uk/~sjc/raspberrypi/ geschrieben .
quelle
Es ist durchaus möglich, aber das größte Problem ist die Erreichbarkeit. Dies ist eine Idee, die ich nicht nur für praktikabel, sondern auch für nützlich halte, wenn man die Idee des portablen Parallel-Computing aufgreift. Codierungssprachen wie FORTRAN und C ++ sind in Bezug auf Besonderheiten am besten geeignet.
Unter beowulf.org finden Sie weitere Informationen zum Thema Cluster Computing
quelle
Dies ist die Antwort auf Guido Garcias obigen Beitrag zu 'dispy'. Ich kann nicht herausfinden, wie ich auf seinen Beitrag antworten soll.
Wenn ein Programm ('/ bin / ls') mit 'dispy' zur parallelen Ausführung verteilt wird, wird dieses Programm auf dem Client-Computer an jeden der Knoten (nach '/ tmp') übertragen. Dies ist so, dass das vom Benutzer entwickelte Programm auf dem Client-Computer ohne NFS oder ein gemeinsames Verzeichnis übertragen wird. Dies funktioniert mit Binärprogrammen nur, wenn Knoten und Client-Architekturen kompatibel sind. In Ihrem Fall schätze ich, dass sich die Client-Architektur von der der Remote-Knoten unterscheidet und ein Knoten die vom Client übertragene Binärdatei '/ bin / ls' nicht ausführen kann. Wenn Sie / bin / ls auf jedem Knoten ausführen möchten, ist es möglicherweise einfacher, eine Python-Funktion oder ein Python-Programm zum Drucken des Verzeichnisses zu schreiben (z. B. mit os.listdir) und dieses anstelle der ausführbaren Binärdatei zu verteilen.
quelle
Es gibt auch http://pi.interworx.com, wenn Sie ein voll ausgestattetes Control Panel damit wollen. Auf dieser Seite finden Sie Anweisungen zum Replizieren. Sie müssen jedoch etwas Geduld haben, da diese Subdomain selbst auf einem Rasberry Pi-Cluster ausgeführt wird. Hier ist ein Foto für den Fall, dass es ausfällt:
http://www.facebook.com/photo.php?fbid=596262440393836&set=a.244167858936631.60071.170159826337435&type=1
quelle