Generischer Remote-Prozessbeschleuniger

294
eadmaster

Gibt es eine Lösung zur Beschleunigung eines lokalen Prozesses mit Remote-PC-CPUs (und / oder GPU)?

Meine ideale Lösung sollte:

  • arbeiten, ohne die App neu schreiben zu müssen, um eine bestimmte Bibliothek zu verwenden ;
  • Arbeit an heterogenen Betriebssystemen und Bögen (ggf. dynamische Rekompilierung);
  • Support-Service-Failover: Wenn einige Netzwerkknoten ausfallen, kann die Ausführung auf den verbleibenden Knoten fortgesetzt werden (oder auch nur lokal, wenn der Hauptknoten isoliert wurde).

Anwendungsfall: PC1 ist weniger leistungsfähig als PC2, aber ich mag es immer noch, einige CPU-hungrige Apps darauf auszuführen und seine lokalen Ressourcen während der Ausführung zu verwenden (Dateisystem, USB-Periperals usw.). Anstatt die Prozessausführung vollständig zu delegieren (wie in VNC), möchte ich nur einen Teil davon dynamisch zur Laufzeit delegieren.

0

1 Antwort auf die Frage

0
Wes Sayeed

is there a solution to accelerate a local process using remote PC CPUs (and/or GPU)?

Ja, was Sie beschreiben, wird als Computercluster bezeichnet. Aber ich weiß, dass Sie das bereits gewusst haben, weil Sie die Frage als solche markiert haben. Ich werde mich also mit Ihren Punkten befassen:

work without the need to rewrite the app to use a specific library;

Auf dieselbe Weise muss eine Multithread-Anwendung geschrieben werden, um eine Multi-Core-CPU zu verwenden. Eine verteilte App muss geschrieben werden, um ihre Arbeitslast auf die Knoten in einem Cluster zu verteilen. Logistisch gesehen ist es das gleiche Problem, wenn Sie als Teammitglieder zusammenarbeiten. Sie müssen einen Plan ausarbeiten, ihn in einzelne Aufgaben aufteilen, diese Aufgaben an bestimmte Personen delegieren und dann mit diesen Personen abstimmen, um die Aufgabe zu erledigen. Es muss auf diese Weise geschehen, weil andere Menschen Ihre Erinnerungen nicht teilen können, Ihre Gedanken nicht hören oder die Vision sehen können, die Sie in Ihrem Kopf haben.

work on heterogeneous OSes and archs (using dynamic recompilation if necessary);

Dies ist entweder mit einem Client, der für jede der Zielplattformen geschrieben wurde, oder mit einer gemeinsamen Sprache wie Java oder Python möglich.

support service fail-over: if some network nodes go down execution can still proceed on the remaining nodes (or even just locally if the main node became isolated).

Eine gut geschriebene verteilte App muss sich keine Sorgen darüber machen, dass ein Knoten ausfällt. Rechenaufgaben werden von einem "Leitknoten" in Segmente aufgeteilt und aus einer Liste an Verarbeitungseinheiten delegiert. Wenn ein Verarbeitungsknoten ausfällt, werden diese Aufgaben nie erledigt und bleiben in der Liste, damit andere Knoten sie bearbeiten können.


Egal wie Sie es schneiden, es gibt keine magische Kugel, die einen schlechten Supercomputer-Cluster für Excel-Tabellenkalkulationen und das Ausführen von Spielen bildet. Verteilte Anwendungen müssen speziell für diese Art von Aufgabe entwickelt werden. Denken Sie daran, dass die meisten Anwendungen nicht einmal mehr als einen Prozessorkern in der SAME-Maschine verwenden können, geschweige denn in einem Computer irgendwo in der Cloud.

Ich habe festgestellt, dass die Xgrid-App in der Lage ist, jedes Programm auszuführen, das vom Mac OS X-Terminal aus als Job ausgeführt werden kann (http://xgrid.plasticki.com/). Ich bin nicht sicher, ob es genau das ist, wonach ich suche, und ich besitze keinen Mac, um es auszuprobieren. Übrigens, wenn ich es richtig verstanden habe, zeigt es, dass die Sache möglich ist. eadmaster vor 9 Jahren 0
Ich habe auch festgestellt, dass HTCondor das mit seinem Paralleluniversum kann, aber es hat mehr Einschränkungen und ist schwieriger einzurichten. Wie Xgrid ist es auf Batch-ähnliche Programme beschränkt, nicht auf interaktive / GUI-Programme oder Spiele, an denen ich hauptsächlich interessiert war ... eadmaster vor 9 Jahren 0