externe CPU's als lokale verfügbar machen, analog openMosix

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
mgolbs
Beiträge: 275
Registriert: 22.03.2009 18:08:17
Wohnort: Tirschenreuth - Löbau

externe CPU's als lokale verfügbar machen, analog openMosix

Beitrag von mgolbs » 18.10.2013 11:44:15

Hallo,

gibt es einen Tool, ein Modul im Kernel oder ein Programm CPU's von Fremdrechnern mit Debian7 auf einem weiteren zentralen Debian 7 Rechner als zusätzliche lokale CPU verfügbar zu machen?

Früher (vor ca. 10 Jahren) habe ich mal openMosix dafür genutzt. GNUtools machen so was ja nicht, oder?

Ich brauche diese Lösung für eine Berechnungsprogramm unter Linux, welches sehr gut parallelisiert aber auf einem Rechner mit z.B. 24 Kernen immer noch recht viel Zeit benötigt (mehrere Stunden).

Es sollte mit einer Standard Debian 7 oder Ubuntu 12.04 64bit funktionieren, zu installieren/konfigurieren sein. Erster Test wäre über 1GBit Ethernet sicher nicht optimal.

Über Tipps und Infos wäre ich sehr dankbar.

Gruß und Dank Markus
Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège

Benutzeravatar
schorsch_76
Beiträge: 2609
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: externe CPU's als lokale verfügbar machen, analog openMo

Beitrag von schorsch_76 » 18.10.2013 11:56:11

Man kann Debianlibopenmpi-dev verwenden um Aufgaben zu verteilen. Aber das benötigt eine Änderung im Quellcode. Mit boost::mpi [1] gibt es auch eine gute Anbindung von C++ aus.

Um Quellcode parallel zu übersetzen nutze ich Debiandistcc.

[1] http://www.boost.org/doc/libs/1_54_0/doc/html/mpi.html

mgolbs
Beiträge: 275
Registriert: 22.03.2009 18:08:17
Wohnort: Tirschenreuth - Löbau

Re: externe CPU's als lokale verfügbar machen, analog openMo

Beitrag von mgolbs » 18.10.2013 12:29:08

Hallo,

vielen Dank für die Info. OpenMPI nutze ich auf den Rechner schon für ein anderes Programm. Für dieses Programm gibt es eine Möglichkeit "richtig" parallel zu kompilieren. Das habe ich schon laufen, aber eben bezogen auf die CPU's eines Hosts. Der Code dieses Programms nach "Parallelübersetzung" auf dem Host kann dann noch andere Hosts verwenden, Aussage Entwicklerumfeld. Habe ich aber noch nicht herausgefunden wie das praktisch einzustellen ist.....

Wenn ich die Anzahl der CPU's am Host "virtuell" durch CPU's andere Hosts erhöhen könnte wäre das für ein anderes, anfangs angesprochenes Programm sehr hilfreich. Dieses Programm ist proprietär, nicht Quelloffen.

Anpassungen am Quellcode sind für mich bei beiden Programmen nicht möglich, entweder proprietär oder quelloffen aber viel zu komplex für Anpassungen. Ich suche eher eine Lösung in einer "Zwischenschicht." OpenMosix war doch so ein Ansatz,...?

Gruß und Dank Markus
Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège

Benutzeravatar
hikaru
Moderator
Beiträge: 13928
Registriert: 09.04.2008 12:48:59

Re: externe CPU's als lokale verfügbar machen, analog openMo

Beitrag von hikaru » 18.10.2013 12:54:20

mgolbs hat geschrieben:Für dieses Programm gibt es eine Möglichkeit "richtig" parallel zu kompilieren. Das habe ich schon laufen, aber eben bezogen auf die CPU's eines Hosts.
Anders ist es meines Wissens nach auch nicht möglich. Soweit ich weiß kann kein mir bekannter Compiler Rechnergrenzen überschreiten. Technisch möglich wäre es prinzipiell, aber das setzt (nicht nur beim Compiler sondern jeder Anwendung die verteilt werden soll) voraus, dass sie mehrere Prozesse (nicht nur Threads) spawnt. D.h. diese Art paralleler Abarbeitung muss von Beginn an berücksichtigt werden und fällt nicht mal eben durch irgendeine später drangeschusterte Zusatzsoftware nebenbei ab.
mgolbs hat geschrieben:Der Code dieses Programms nach "Parallelübersetzung" auf dem Host kann dann noch andere Hosts verwenden, Aussage Entwicklerumfeld. Habe ich aber noch nicht herausgefunden wie das praktisch einzustellen ist.....
Meine Vermutung, bzw. die einzige Methode die mir dazu bekannt ist, läuft darauf hinaus, dass das Programm eine Art Steuerprogramm hat, das sich vollautomatisch auf anderen Rechnern einloggt und dort parallel Prozesse startet. Die Ergebnisse dieser Prozesse werden am Ende vom Steuerprogramm wieder zusammengeführt und als Einzellösung ausgegeben. Anders funktioniert(e) openMosix meines Wissens nach auch nicht.
Heute könnte sowas vielleicht mit Debianslurm-llnl erledigt werden, ich habe damit aber keine Erfahrung.

mgolbs
Beiträge: 275
Registriert: 22.03.2009 18:08:17
Wohnort: Tirschenreuth - Löbau

Re: externe CPU's als lokale verfügbar machen, analog openMo

Beitrag von mgolbs » 18.10.2013 13:50:33

Hallo,

danke für die Info. Ich werde mal in Richtung slurm-llnl weiter lesen. Bei openMosix war es so, dass ich auf der "openMosix Konsole" dann das jeweilige Programm gestartet habe. Das Koordinieren lief dann automatisch nach vorher erfolgter Konfiguration. Diese hat die beteiligten Rechner ausgewählt und deren Resourcen konfigurieren lassen. Soetwas suche ich eigentlich wieder.

Gruß und Dank Markus
Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège

svenb
Beiträge: 5
Registriert: 24.10.2011 19:08:18
Lizenz eigener Beiträge: MIT Lizenz

Re: externe CPU's als lokale verfügbar machen, analog openMo

Beitrag von svenb » 31.10.2013 08:37:33

Hi,

dann schau dir mal bitte pvm (parallel virtual machine) an. Das hat uns (früher) gute Dienste geleistet.Letztendlich sind wir dann aber auch bei mpi gelandet.

Viele Grüße
Sven

Antworten