Clusterknoppix mit Windowsprogramm

Hi Leute,

ich wusste nicht genau ob ich den Post hier oder zu Netzwerken setzen sollte, da wir (damit meine ich mich und meine Klasse) aber klar ist wie wir ein Netzwerk zum laufe bekommen, dachte ich der Post wäre hier am besten aufgehoben.

Wir haben folgendes vor:
Am letzten Schultag vor den Ferien bringt der gesamte Kurs die Privatrechner bzw. Laptops mit und wir hängen erstmal alle in einen Verbund. Nun wollen wir diesem Verbund eine größere Mathematische Aufgabe zum rechnen erteilen.
Für die sache der Clusterbildung bin nun ich als Kursleiter verantwortlich gemacht wurden. Zwei Kumpels von mir wollen sich um mögliche zu lösende mathematische Probleme und um das schreiben eines Programmes kümmern.

Ich habe nun also gestern (deshalb schreibe ich hier rein) mir Clusterknoppix 3.6 gezogen und erst einmal 2mal gebrannt. Ich bekomme es natürlich ohne Probleme hin Knoppix zu booten und er erkennt auch die rechner im Netz (hab es nur bei 2n bis jetzt ausprobiert).
Ich weis jetzt nur noch nicht wie Knoppix ein Programm annimmt um es im Verbund zu bearbeiten.
Ich habe schon bemerkt, das man in dem Entsprechenden Clusterprogramm die möglichkeit hat ein Programm ausführen zu lassen. Leider bin ich was Linux angeht nicht der hellste und bräuchte eine Ausführliche, sehr kleinschrittige anleitung, wie wir das an besagtem Tag machen müssen, damit alles recht schnell und reibungslos klappen kann.

Ein weiteres Problem ist, das unsere beiden Progammkünstler nur unter C++ unter Windows programmieren können und ebenfalls keine erfahrung mit Linux usw. haben. Ich weis aus eigener erfahrung scchonmal, das Linux keine *.exe datein annimmt. Wie machen wir das also?

Schonmal DANKE für jede Antwort !!!

Mfg Christian

PS: Bitte nicht auf rechtschreibfehler achten … hab leider heute nicht viel Zeit um das ganz sauber und ordentlich zu machen :smile:

Hi Leute,

Hallo,

Am letzten Schultag vor den Ferien bringt der gesamte Kurs die
Privatrechner bzw. Laptops mit und wir hängen erstmal alle in
einen Verbund. Nun wollen wir diesem Verbund eine größere
Mathematische Aufgabe zum rechnen erteilen.
Für die sache der Clusterbildung bin nun ich als Kursleiter
verantwortlich gemacht wurden. Zwei Kumpels von mir wollen
sich um mögliche zu lösende mathematische Probleme und um das
schreiben eines Programmes kümmern.

Ich habe nun also gestern (deshalb schreibe ich hier rein) mir
Clusterknoppix 3.6 gezogen und erst einmal 2mal gebrannt.

Clusterknoppix ist ein Knoppix mit einem OpenMosix-Kernel. OpenMosix emuliert, vereinfacht, eine SMP-Maschine, aber ueber das Netzwerk. Ein Userspace-Daemon migriert Prozesse von einer Maschine zur anderen, je nachdem wie die Auslastung der einzelnen Knoten ist.

Ich habe schon bemerkt, das man in dem Entsprechenden
Clusterprogramm die möglichkeit hat ein Programm ausführen zu
lassen. Leider bin ich was Linux angeht nicht der hellste und
bräuchte eine Ausführliche, sehr kleinschrittige anleitung,
wie wir das an besagtem Tag machen müssen, damit alles recht
schnell und reibungslos klappen kann.

OpenMosix kuemmert sich nur um das Verteilen der Prozesse auf Knoten, die derzeit nichts zu tun haben. Ausserdem schickt es die Daten im Speicher zum Prozess hinterher, damit der nicht immer ueber das Netzwerk muss. Es kuemmert sich weder um die Parallelisierung des Problems noch um die Interprozesskommunikation zwischen parallelen Prozessen, die an dem Problem arbeiten. Das ist Anwender-Aufgabe.

Ein weiteres Problem ist, das unsere beiden Progammkünstler
nur unter C++ unter Windows programmieren können und ebenfalls
keine erfahrung mit Linux usw. haben.

Das sind natuerlich denkbar schlechte Voraussetzungen. Quasistandard fuer die Interprozesskommunikation ist MPI. Das ist zwar auch keine Hexerei, damit aber produktiv zu arbeiten schafft man sich aber nicht mal eben an einem Tag ran. Ausserdem braeuchtet ihr dafuer kein OpenMosix, alle MPI-Implementationen, die ich kenne, koennen direkt ueber Netzwerk. OpenMosix macht Sinn, wenn Prozesse ihre Kommunikation selbst implementieren.

Google liefert fuer MPI in Kombination mit Linux hinreichend Treffer mit Beispielen und Anleitungen. Das hier abzuhandeln wuerden den Rahmen deutlich sprengen. Und dann muesst ihr natuerlich noch ein gut parallelisierbares Problem finden, bei dem sich der Einsatz eines Clusters auch lohnt.

HTH,
Gruss vom Frank.

Hi Christian!

Wie schon Frank ausgeführt hat ist ClusterKnoppix nichts anderes als ein Knoppix mit OpenMosix. OpenMsix ist ein sogenannter Loadbalancer der dafür sorgt das Computer die gerade nichts zu tun haben mit Aufgaben versorgt werden. OpenMosix funktioniert am besten wenn die Software sehr ähnlich ist. Hardwareunterschiede spielen hier kaum eine Rolle. OpenMosix ist auch nicht für echtes paralleles Rechnen gedacht, sondern arbeitet seriell. Das heißt wenn NodeA nur noch eine idle-Time von 70% hat und NodeB von 99% wird OpenMosix versuchen den Prozess zu migrieren. Beide Prozesse können dann nicht mehr miteinander kommunizieren. Zumindest nicht ohne ein Workaround. Außerdem ist OpenMosix nicht für Programme geeignet die viel IO (Festplattenzugriffe) machen.
OK, aber deine Frage war wie ihr ein heterogenes Cluster aufziehen könnt. Mit eines der populärsten Programme was auch im Supercomputing Bereich (Earth Simulator) Anwendung findet ist MPI. MPI steht für Message Passing Interface und ist eine C-Library. Davon gibt es verschiedene Ausführungen. Große Cluster wie von NEC bringen ihre eigene Library mit. Auch Supercomputing tauglich ist MPICH. Mittlerweile in Version 2. Das gibt es dann auch für Windows. Bitte versuch nur nicht mit einem Linux-Emulator wie CygWIN unter Windows parallel zu rechnen. Das geht i.A. schief. Neben MPI gibt es noch das verstaubte PVM.
Was macht MPI? MPI macht keine parallelen Programme! MPI ist eine Library die dem Benutzer Funktionen bereit stellt um parallele Programme zu schreiben. Lass mich das an einem trivialen Beispiel erläutern.
Aufgabe: Integriere y(x) = x / 2 von 0 bis 100.
Lösen wollen wir das numerisch mit der Trapezformel. Das Ergebnis wird natürlich um so genauer je enger die Schrittweite ist, aber auch desto mehr muss der Prozessor arbeiten. Hier setzt MPI an. Sagen wir mal das Intervall 0 bis 100 soll in 10.000 Schritte unterteilt werden. Die alle einen Node lösen zu lassen würde etwas dauern. Darum lässt man n Nodes einen Teil davon rechnen. Sei n 10. Das heißt das NodeA die numerische Integration von 0 bis 1.000, NodeB von 1.000 bis 2.000, usw. bis NodeJ von 9.000 bis 10.000 durchführt. Gleichzeitig versteht sich! Somit kann das Problem zwar nicht in 1 / 10 der Zeit gelöst werden, aber 1 / 7 ist realistisch. Natürlich muss ein einzelner Computer mindestens im Minutenbereich an dem Problem arbeiten, damit ihr einen echten Speedup sehen könnt.
MPI stellt jetzt Funktionen bereit wie:
Wie viele Rechner arbeiten an dem Problem?
Der wievielte Rechner bin ich?
Schicke eine Nachricht (z.B. eine Zahl) an einen anderen Node oder an alle Nodes.
Warte bis NodeX fertig ist.

Alle diese Funktionen sind auf optimale Performance getrimmt. Allerdings werdet ihr in einem heterogenen Cluster (also die Hardwareausstattung der einzelnen Rechner / Nodes unterscheidet sich sehr stark) wird die Performance nicht so toll sein.
Im Grid- und MetaComputing schließt man Cluster weltweit via Internet zusammen und arbeitet so an Problemen die sehr Rechenintensiv sind. Hier liegen i.A. auch heterogenen Netze vor und andere Libraries wie MP-MPICH. Das ist ein sehr weites Feld wie du siehst. Mit OpenMosix werdet ihr glaube ich nicht zum Ziel kommen.
Falls ihr doch mit OpenMosix arbeiten wollt folgender Hinweis noch: Man kann in OpenMosix den automatisch ermittelten Performancewert eines einzelnen Nodes verändern. Das könnte nützlich sein, denn u.U. habt ihr dann 50 Prozesse aber keine migriert auf einen anderen Computer weil der Host entweder zu leistungsstark ist oder zwei statt 25 Hosts genauso gut damit zurecht kommen.

Grüße
C. Penkwitt

Links:
http://de.wikipedia.org/wiki/Computercluster
http://en.wikipedia.org/wiki/Message_Passing_Interface
http://www-unix.mcs.anl.gov/mpi/mpich2/
http://openmosix.sourceforge.net/
http://www.beowulf.org/index.html
http://www.llnl.gov/computing/hpc/training/index.htm…
http://www.gridforum.org/