lousek
Goto Top

Selber einen Supercomputer aus mehreren Rechnern machen

Hallo Forum.

Habe kein besseren Platz für das entdeckt ... geht doch eigentlich um Clusters, oder nicht?

Ich bin mal auf diese Seite hier gestossen:

http://www.tomshardware.com/de/Supercomputer-Eigenbau,news-240741.html

Die einfache Frage:P: wie kann man mehrere Mainboards (resp. Rechner) so vernetzten, dass sich die Prozessorleistung, Arbeitsspeicher, Festplattenspeicher ... addiert?

Also wenn ich jetzte noch 3 ältere (nicht identische) Rechner habe (jeder so 500 MB RAM, 40 GB HD, durchschnittlich 750 MHz P III), wie kann ich die verbinden?
Kann man das so machen dass das Ganze von einem PC gesteuert wird (resp das man nur eine Maus / Tastatur) braucht?

Oder wie wäre es mit z.B. 4 "billigen" AMD-Mainboard mit je einem Dual-Core 2 GHz oder so drauf ... untereinander vernetzt (--> alle baugleich)?

Oder was ist mit diesem Link hier:
http://winfuture.de/news,39777.html

Die haben ja die GPU's "zweckentfremdet" ... das würde doch mit ein paar alten baugleichen PCI (habe kein Mainboard mit mehreren AGP oder PICe Steckplätzen ^^) Grafikkarten auch bescheidene Ergebnisse bringen ...

Wäre mal interessant zum ausprobieren und rumspielen ;)

Greetz, Lousek

Content-Key: 89638

Url: https://administrator.de/contentid/89638

Printed on: April 23, 2024 at 11:04 o'clock

Member: filippg
filippg Jun 11, 2008 at 17:07:14 (UTC)
Goto Top
Hallo,

wie man sie einfach verbindet steht doch im ersten Artikel: Über Netzwerkarten. Natürlich sind die nicht so superschnell. Der PCIe-Bus, über den die Karten im zweiten Artikel miteinander kommunizieren, ist da wohl schon deutlich schneller.

Das Problem ist die Software: es gibt keine Universallösung. Keine Software, die du installierst, und dann ist alles gut. Vielmehr muss die ganz speziell angepasst sein, um z.B. im Netzwerk zu laufen (Artikel 1) und um auf Grafikkarten (die auch nur wenige Berechnungen wirklcih gut können) zu laufen braucht man sowieso ganz speziellen Code.

Gruß

Filipp
Member: Lousek
Lousek Jun 11, 2008 at 19:50:40 (UTC)
Goto Top
Hallo Filipp.

Nehme mal an, die Rechner werden über ein ganz normales Ethernet-Netzwerk miteinander verbunden ...

Immerhin liegt ja die theoretisch mögliche Durchsatzrate eines GIgabit-Netztes bei 1000 MBit/s / 8 = 125 MB/s.

Werde mir mal Beowulf etwas genauer ansehen ... mal in VMWare 3 Debians mit Beowulf aufsetzten ;)

Hatte noch eine "interessante" Idee:

Da ich (als Informatik-Freak:P) noch ein paar ältere Rechner hier rumstehen habe ... und bei uns im Haus auch nicht unbedingt wenige Rechner sind, dessen Leistung niemals ausgenutzt wird ...

--> Habe gedacht: Könnte man nicht "irgendwie" (bin erst im 1. Informatik-Lehrjahr ... habe also noch so gut wie keine Ahnung von programmieren und fast keine Ahnung von Linux :P) eine abgespeckte Linux-Variante machen, welche eigentlich direkt auf die Hardware installiert wird (also wie ein OS) ...
Diese stellt dann die weiteren Ressourcen für ein weiteres OS obendrauf zur Verfügung (eigentlich wie VMWare, nur nicht so komplett unabhängig ...)
--> Diese VMWare-LInux oder wie auch immer:P baut eine Verbindung mit anderen solchen Linuxen im Netzwerk auf ... (was weiss ich:P), jetzt wird je nach Anforderung dem einen Rechner Rechenleistung zur Verfügung gestellt, der von einem anderen nicht gebraucht wird ...
Also wenn jemand auf seinem Rechner normal arbeitet (Word, Firefox , blablabla), jedoch ein anderer z.B. ein Grafikprogramm ausführen will, das etwas mehr Leistung fordert, wird diesem ein Teil der Leistung vom anderen Rechner gegeben ... in einem Netzwerk mit (sagen wir mal) 10 PC's, auf 5 wird normal gearbeitet, kommt ja eigentlich schon einiges an Rechernpower zusammen ... zumindestens für die anderen ^^

Nur mal so eine Idee, gibts ja vieleicht auch schon ;)

Greetz, Lousek
Member: filippg
filippg Jun 11, 2008 at 20:20:37 (UTC)
Goto Top
Hallo,

ein "Linux (wie ein OS) auf dem dann ein anderes Linux läuft" gibt es schon lange und in vielen Varianten. Schau dir z.B. XEN an.
Das mit dem "Rechenleistung zwischen PCs hin- und herschieben" klappt trotzdem nicht. Es genügt ja nicht, irgendwelche Berechnungen durchzuführen, sondern man braucht dazu auch Daten (und geg. weitere Ressourcen). Natürlich könnte man die Daten auf Anforderung nachliefern. Aber wenn du dir anschaust, wie schnell RAM heutzutage angebunden ist, dann kommt da das Ethernet wohl kaum mit. Dazu käme dann noch der Overhead, irgendjemand muss ja dann die Ressourcen, die angefragt wurden, in Ethernetframes verpacken und verschicken. Und die Ergebnisse entgegennehmen und wieder in den eigenen RAM schreiben. Was ist eigentlich, wenn da derweil Daten verändert werden? Man muss also die Daten nicht nur zur Verfügung stellen, sondern auch synchron halten. Völlig hoffnungslos.
Deswegen muss man Software verwenden, die explizit dazu konzipiert ist, auf mehreren Knoten prallel zu laufen. Das Programm muss dazu in Blöcke zerlegt werden, die möglichst unabhängig von einander laufen, so dass die Kommunikation und Koordination zwischen den Knoten auf ein Minimum reduziert werden kann.

Danben noch zwei Probleme: 1. Bei Standardanwendungen ist die Rechenleistung meistens eh nicht der Flaschenhals, der liegt meistens eher im IO-Bereich, und 2. Die Aufgabe muss grundsätzlich erstmal parallelisierbar sein. Bis vor kurzem hatten die meistens PCs nur einen Prozessorkern. Dem entsprechend wurde Anwendungssoftware auch nur für einen Kern entwickelt, die Algorithmen unterstützen gar keine parallelisierung.

Gruß

Filipp

(der anscheinend mal wieder zu viel Zeit hat)