
Mein folgender Beitrag wurde (meiner Meinung nach ziemlich unfair) auf StackOverflow geschlossen, deshalb poste ich ihn hier noch einmal.
Ursprüngliche Frage: Wie kann ich mehrere Computer verwenden, um eine schnellere Umgebung zu schaffen? Ich habe etwa 12 Computer mit jeweils 4 GB und 2 GHz. Ich muss einige zeitaufwändige Datentransformationen durchführen und möchte die kombinierte Leistung dieser Maschinen nutzen. Auf allen läuft ein Win2003-Server.
Im Grunde haben wir eine große Anzahl von Videodateien, die wir umwandeln müssen, damit unsere Analysten ihre Analyse durchführen können. Das Problem wird dadurch verkompliziert, dass ich Ihnen nicht mehr über das Projekt erzählen kann.
Ursprünglicher Beitrag:https://stackoverflow.com/questions/1126710/ist-es-möglich-aus-vielen-computern-einen-schnelleren-computer-zu-erstellen
Antwort1
Ihre Frage ist der Kern einer wichtigen Frage der heutigen Computertechnik. Einzelne Prozessorkerne werden nicht viel schneller werden, daher müssen Programmierer anfangen, Code zu schreiben, der größere Probleme in kleinere aufteilt, die dann parallel auf mehreren Computern verarbeitet werden können.
Kurze Antwort für Sie: Wenn Ihre Verarbeitungssoftware es Ihnen bereits erlaubt, Jobs aufzuteilen und parallel auszuführen, dann tun Sie das. Wenn nicht, dann sprechen Sie mit den Leuten, die sie geschrieben haben, darüber, dass sie sie so umrüsten können, dass sie paralleler arbeiten können.
Die Mechanik, die Daten an die einzelnen Computer zu übermitteln, parallele Aufgaben zu starten, sicherzustellen, dass die Aufgaben tatsächlich abgeschlossen wurden, und die Daten zurückzubringen, ist ein Großteil dessen, was die Cluster-Management-Software tut, die andere Poster erwähnen. EsSindEs sind einige nicht triviale Probleme damit verbunden, aber im Allgemeinen geht es bei Cluster-Management-Software um Jobplanung und Ressourcenverwaltung. Die Cluster-Management-Software kümmert sich nicht um die eigentliche parallele Arbeit – das muss Ihre „Verarbeitungssoftware“ tun.
Es gibt keine „Magie“, mit der Sie eine Gruppe mehrerer Computer dazu bringen können, sich wie eine einzige, schnellere Maschine zu verhalten. Ohne Software, die von Anfang an die Vorteile mehrerer Prozessoren nutzt, kommen Sie nicht aus der Sache heraus.
Antwort2
Um die Rechenleistung mehrerer Maschinen zu kombinieren, sollten Sie eine Art Clustering-Software ausführen, die oft als Compute- oder Computing-Cluster bezeichnet wird. Einige Beispiele für Anwendungen, die dies können, sind:
Dies sind jedoch komplizierte Softwareteile. Die Erstellung eines brauchbaren Hochleistungsclusters ist eine komplizierte und potenziell teure Aufgabe und sollte nicht auf die leichte Schulter genommen werden. Sie benötigen außerdem spezielle Software, die auf einem Cluster ausgeführt werden kann, um Ihre Arbeit zu erledigen. Sie können nicht einfach eine Reihe von Windows-Computern miteinander verbinden und auf magische Weise einen Cluster erstellen und eine Reihe von Standard-Windows-Anwendungen darauf installieren.
Antwort3
Ein Computercluster funktioniert gut, wenn man sagen kann ...
Kann ich an jedem Computer jemanden sitzen lassen, der einen Teil des Problems löst, und wird das die Arbeit beschleunigen? Mit anderen Worten, kann das Problem in Teile aufgeteilt werden, die grundsätzlich unabhängig voneinander sind?
Da Sie das Problem als „eine große Anzahl zu transformierender Videodateien“ beschreiben, ja, dies würde auf einem Cluster funktionieren.
Microsoft hat Clustering-Software, von der ich nichts weiß. Das könnte die Lösung sein.
Wahrscheinlich einfacher wäre:
Legen Sie einen Computer als Master fest. Alle anderen sind Clients.
Legen Sie alle Ihre Videodateien in einem Ordner auf diesem Master ab.
Erstellen Sie pro Client einen freigegebenen Ordner und lassen Sie jeden Client diesen freigegebenen Ordner mounten.
Die Clients führen eine Windows-Skriptsprache aus (Perl würde funktionieren), die von Zeit zu Zeit aktiviert wird. Wenn sich etwas im freigegebenen Ordner befindet, wird es in work_yourfilenamehere umbenannt und Ihre Transformation ausgeführt. Wenn dies abgeschlossen ist, wird es in done_yourfilenamehere umbenannt. Wenn nicht, warten Sie einfach etwa 60 Sekunden.
Der Mastercomputer führt ein Skript aus, das in jedem der freigegebenen Ordner sucht. Wenn sie nichts enthalten, legen Sie eine zu transformierende Datei ab. Wenn sie eine Datei mit dem Namen „done_yourfilenamehere“ haben, verschieben Sie sie in den Ordner „done“. Wiederholen Sie dies, bis nichts mehr im Masterordner vorhanden ist.
Grundsätzlich sollten alle Clients so beschäftigt wie möglich gehalten werden, sodass sich jeder Client für die Konvertierung der einzelnen Dateien so viel Zeit nehmen kann, wie er benötigt.
Antwort4
Die Antwort auf Ihre Frage hängt davon abweitgehendvon der Software, die Sie zum „Transformieren“ dieser Videodateien verwenden, und was das bedeutet.
Adobe After Effects hat eine Art Clustering-Modus, den sie "Network Rendering" nennen, aber das ist keine ideale Lösung. (Als ich das letzte Mal nachgesehen habe, ging es darum, das Video in einStellen Sie sich eine Sequenz vor, die dann für Ihre Verwendung vermutlich wieder zu einem Video zusammengefügt werden müssten)
Die Grundidee besteht darin, den Film in Abschnitte aufzuteilen und jeden Abschnitt auf einem anderen PC bearbeiten zu lassen:
Es sollte einige Befehlszeilentools zur Videocodierung geben, die Optionen zur Verarbeitung nur eines bestimmten Frame-Bereichs haben. Dies könnte die Aufteilung automatisieren.
Jeder Block kann in einen anderen freigegebenen Ordner kopiert werden (auch dies lässt sich recht einfach automatisieren).
Jeder der PCs in Ihrer „Farm“ würde in einem dieser freigegebenen Ordner nach einem Quellvideo suchen, das umgewandelt werden soll. (Sehr einfach, vorausgesetzt, die Software, die die Umwandlung durchführt, hat eine Funktion zum „Überwachen eines Ordners“, aber hierfür könnte wahrscheinlich eine Batchdatei/ein Shellskript eingerichtet werden.)
Ohne die Art der Video-„Transformation“ zu kennen, die von Ihnen verwendete Software zu kennen oder über welche Skript-/Programmierkenntnisse Sie verfügen, ist es nicht möglich, weitere Kommentare abzugeben.