2016-04-01 15 views
0

Mein Freund muss eine Menge Videos bei der Arbeit bearbeiten und er hat darüber gesprochen, wie sie die Computer verlassen müssen, um manchmal für mehr als einen Tag zu rendern. Der letzte Job war ein Rendering über 40 Stunden auf einem 12-Core Mac Pro.Distributed Computing

Wie auch immer, ich lese etwas über Netzwerk-Rendering mit After Effects, und es erinnerte mich daran, wann ich Himbeer-Pi's bekommen wollte, um Programmierung für verteiltes Rechnen zu lernen.

Meine Frage ist das: Gibt es irgendwelche Projekte/Frameworks, die den "verteilten" Aspekt abstrahieren, so dass ein Programm mit Single-Machine-Einsatz, wie Premiere Pro, auf einem verteilten System laufen kann? Zum Beispiel, vielleicht die Bibliothek, oder was auch immer es ist, macht einzelne Knoten zu dem Programm als Threads erscheinen, so dass es nicht weiß, dass es auf einem verteilten System läuft ...?

Es ist ein neues Konzept für mich und ich möchte nicht wirklich in dieses Zeug tauchen, wenn das, was ich mir vorstelle, nicht möglich ist.

+0

Ich denke, dass niemand diese Frage gesehen hat oder niemand weiß? Ich fand ein altes Projekt namens xtreemos, das auf Linux basierte und laut der Beschreibung genau das tut, was ich beschreibe, aber es wurde eingestellt. Darüber hinaus habe ich nichts anderes gefunden. Ich schaute kurz in den Offenen Nebel, aber ich verstehe, dass es nicht genau das tut, was ich beschreibe. Oder vielleicht ist es alles über meinen Kopf. – Euroclydon37

+0

OpenNebula, OpenStack, Eucalyptus, CloudStack, Joyent usw. sind Cloud-Infrastruktur-Frameworks. Sie ermöglichen es Ihnen, virtuelle Maschinen über eine optimierte Benutzeroberfläche oder über eine API auf einer Reihe von realen Maschinen bereitzustellen. Dies wird allgemein als Cloud Computing auf der IaaS-Infrastruktur als Service-Ebene bezeichnet. Dies bezieht sich auf einen Cluster-Computing-Ansatz. –

Antwort

1

Worauf Sie sich beziehen, heißt Single System Image (SSI) Computing. Der Begriff beschreibt eine Computerarchitektur für Hochleistungsrechnen (nicht notwendigerweise verteiltes Rechnen), wo ein einzelnes Betriebssystem läuft und somit ein Anwendungsprogrammierer mehrere Threads innerhalb dieses einzelnen Betriebssystems ausführen könnte. Dies hat für den Anwendungsentwickler den großen Vorteil, dass parallele Rechenparadigmen angewendet werden können und die Entwickler nicht mit den Komplexitäten umgehen müssen, die von verteilter Berechnung herrühren, dh prozessübergreifendes Rechnen zwischen mehreren Computern in einem Cluster und dem Fehlen eines gemeinsamen Speichers .

Cluster-Computing gewann in der Vergangenheit mehr Interesse. Einer der Gründe für diesen Trend ist die Tatsache, dass Cluster zusätzlich zu allgemeinen Cloud-Services einfach implementiert werden können. Im Allgemeinen ermöglicht der Cluster-Ansatz die Skalierung auf größere Größen, was normalerweise bei Web-Scale-Anwendungen erforderlich ist.

Sie fragen jedoch ausdrücklich nach SSI-Systemen. Aus der High-Performance-Computing-Arena kennen wir viele solche Systeme. Eine davon ist die Altix-Linie https://en.wikipedia.org/wiki/Altix. Dies sind sehr große Computer, die oft Tausende von Prozessoren und Terra-Bytes von RAM haben und einen SSI-Linux-Kernel ausführen. Aus Hardware-Sicht sind einzelne Prozessor- und Speicherkarten miteinander verbunden und unterstützen den sogenannten cache-kohärenten nicht-einheitlichen Speicherzugriff (cc-NUMA). Dies ist im Grunde ein Mechanismus, der dem Betriebssystem den Eindruck vermittelt, dass es mit einem großen linearen Speicherblock arbeitet, in dem tatsächlich Speicher über viele Rechenknoten verstreut ist. Offensichtlich bedeutet dies, dass es Speicherbereiche gibt, die schneller und andere langsamer sind. Anwendungsentwickler müssen dies im Hinterkopf behalten. Altix verwendet eine proprietäre High-Band-Interconnect-Architektur, die es ermöglicht, Speicherblöcke im Cluster sehr schnell zu verschieben. Wie Sie annehmen können, sind diese Maschinen sehr teuer und normalerweise nur in Forschungseinrichtungen verfügbar.

Es gibt Ansätze, um etwas Ähnliches auf der Oberseite der Regalware Hardware zu erreichen. In der Vergangenheit war das Projekt Beowulf (https://en.wikipedia.org/wiki/Beowulf_cluster) sehr populär und wurde in ziemlich vielen Installationen in der Praxis eingesetzt. Bei diesem Projekt bin ich mir nicht sicher, ob Sie eine Installation mit modernen Linux-Kerneln durchführen können oder nicht. In ähnlicher Weise scheinen die Projekte OpenSSI (https://en.wikipedia.org/wiki/OpenSSI) und OpenMosix (https://en.wikipedia.org/wiki/OpenMosix) keine aktuellen Veröffentlichungen zu bieten. Vielleicht ist Kerrighed (http://www.kerrighed.org/wiki/index.php/Main_Page) einen Versuch wert, zumindest sollten Sie in der Lage sein, eine Installation auf der obersten x86_64-Architektur zu erhalten.

Sie erwähnen, dass Sie so etwas auf Pi, die ARM-Prozessor-Architektur verwenden möchten. Soweit ich weiß, unterstützt keiner der oben genannten Ansätze ARM. In der Cluster-Arena ist MPI jedoch ein weit verbreiteter Standard.Es gibt Tutorials darüber, wie man MPI auf einem Satz von Pi's (http://thenewstack.io/installing-mpi-python-raspberry-pi-cluster-runs-docker/) laufen lässt und diese Cluster werden im technisierten verteilten Rechnen verwendet. Ihre Leistung kann in keiner Weise mit kommerziellen Cluster-Systemen konkurrieren. Die Architektur ist jedoch die gleiche und so dienen diese Installationen dem Unterrichtszweck sehr gut. Stellen Sie sich ein Cluster-System vor, das Sie im Koffer mitbringen können!

+0

Sowohl dies als auch Ihr Kommentar waren sehr gründlich und gaben mir eine Menge Informationen zu Google. Vielen Dank! – Euroclydon37