„Anfänger“ verteiltes Verarbeitungsprojekt
-
22-08-2019 - |
Frage
Ich interessiere mich schon seit langem für den Aufbau eines Clusters heterogener Knoten, um zu versuchen, einen Supercomputer für zu Hause zu haben, da ich mich sehr für die KI-Forschung interessiere.
Das Problem besteht jedoch darin, dass ich über eine Vielzahl von Hardware verfüge (2x Dual-Quad-Rack-Mount-Server, 8 285GTX-GPUs, 6x PS3s, 2x gehackte 360er (sie können Linux ausführen), Zugriff auf Tonnen gängiger PCs sowie ein paar Workstations). Ich habe keinen großen Datensatz, der verarbeitet werden muss, und auch keine Software, die ich verteilt ausführen kann.Ich habe mich mit der Kompilierung verteilten Codes beschäftigt, aber im besten Fall hat es dazu geführt, dass meine Kernel-Builds von 10 Minuten (im schlimmsten Fall) auf 30 Sekunden gedauert haben (und ich glaube, 20 dieser Sekunden sind nur Setup).
Wo soll ich also anfangen?Ich habe ein gutes Verständnis von Obj-C/C/C++, daher sollte es nicht allzu schwer sein, etwas zu schreiben, aber was soll ich schreiben?
Lösung
Wenn Sie Daten Knirschen wollen, gibt es viel da draußen:
- Eine Reihe von Data Mining und Wissensentdeckung Datensätze
- eine Vielzahl von geschabt und / oder molchbaren Datensätze
- Die umfassende Wissen Archive Network Liste von Datenpaketen
- eine Sammlung von großen Gesundheitsdatensammlungen
Wie bei „Was soll ich bauen“, die eigentliche Frage ist, was Sie interessiert?
Andere Tipps
Nun, ich denke, es ist am besten, zu bestimmen, für welche Teilmenge der Hardware, die Ihnen zur Verfügung steht, Sie Ihre Anwendung entwickeln werden.Software für die PS3 erfordert besondere Aufmerksamkeit und erfordert eine separate Entwicklung von etwas, das für die Ausführung auf typischen Linux-Servern entwickelt wurde.
Möglicherweise müssen Sie auch recherchieren, wie Sie eine Anwendung für die 360 entwickeln könnten;Um ehrlich zu sein, bin ich mir nicht sicher, ob es Ihnen wirklich das gibt, was Sie suchen.
Sobald Sie sich für die Teilmenge der Hardware entschieden haben, die Sie entwickeln müssen, wäre es gut, mit einigen grundlegenden Entwicklungen zu beginnen, um sicherzustellen, dass Sie eine Grundlage schaffen können, die die Kommunikation ermöglicht.Mit einer soliden Grundlage können Sie Ihren Code erweitern, um eine Vielzahl verteilter Projekte zu unterstützen.
Ich hoffe, ich verstehe Ihre Frage richtig!
Prost