Ist es möglich, die Rechenleistung von 2 Computern zu kombinieren?

95506
Wern Ancheta

Hier sind ein paar Fragen, ich wünschte, Sie könnten mich aufklären.

  1. Ist es möglich, die Rechenleistung von 2 Computern zu kombinieren?
  2. Wie mache ich es?
13
1) Certainly. 2) With enormous difficulty. Daniel R Hicks vor 10 Jahren 7

5 Antworten auf die Frage

11
mindless.panda

Nicht transparent, wo ein laufendes Programm die zweite Maschine irgendwie zum Ausführen von Code verwenden kann, da sie logisch getrennt sind, ohne dass die CPU kommunizieren oder auf den Speicher des jeweils anderen zugreifen kann.

Das bedeutet nicht, dass Sie die Rechenleistung nicht kombinieren können:

  1. Bestimmte Software kann Komponenten enthalten, die auf anderen Maschinen ausgeführt werden können, z. B. Proteinfaltung oder SETI @ home. Diese sind in der Regel spezialisiert, dh Sie können Excel nicht starten und es anweisen, einen anderen Computer für die Berechnung zu verwenden.
  2. Wenn Sie prozessorintensive Aufgaben ausführen, können Sie sie mit dem sekundären Computer ausführen, z. B. Kodieren / Umkodieren eines Videostreams.

Wenn Sie den sekundären Computer in irgendeiner Weise nutzen möchten, ist die Möglichkeit der Fernsteuerung von entscheidender Bedeutung. Zwei Möglichkeiten, dies zu tun, sind über eine Art Fernzugriff (RDP, VNC) oder alternativ etwas wie Synergie +.

Angenommen, ich habe beispielsweise 4 GB RAM auf meinem Laptop und 4 GB auf meinem PC. Kann ich mit einem RDP virtuell ein Programm mit 8 GB RAM ausführen? TGamer vor 6 Jahren 0
4
William Hilsum

Eine meiner meist verwendeten Linien - Ja und Nein!

Ja, es ist möglich - für bestimmte Anwendungen, die auf diese Weise funktionieren. (Allgemein als Cluster bezeichnet - hier weiterlesen )

Nein, es ist nicht möglich (zumindest soweit ich weiß), zwei Computer aus dem Regal zu nehmen, sie "zusammenzubinden" und den kombinierten Speicher, die Verarbeitungsleistung und alles andere zu erhalten.

@ ~ quack ja, und ich sagte für bestimmte Anwendungen ... Da die Frage mit Windows-7 markiert war, ging ich davon aus, dass er jeden Tag einen Computer mit einem beliebigen Programm bedeutete ... Jedenfalls - Beowulf-Cluster nicht erforderlich speziell geschriebene Bewerbungen? ... Ich bin kein Experte, habe noch nie einen benutzt, lese aber schnell http://www.beowulf.org/overview/index.html (besonders die letzten beiden Absätze) William Hilsum vor 14 Jahren 1
sorry, deleted my earlier comment after rereading and noticed you'd already linked to the clustering concept. beowulfs are designed around off-the-shelf components, and are one way of "tieing" multiple systems together, but you're right that they don't really work for programs that aren't specifically designed for them. quack quixote vor 14 Jahren 0
4
Nippysaurus

Das ist sehr gut möglich! Nach der Einfachheit Ihrer Frage zu urteilen, nehme ich an, Sie möchten einfach ein Programm ausführen, das Ihren Computer auf magische Weise doppelt so schnell macht, was nicht möglich ist.

Sie müssen wissen, dass das Programm beim Ausführen eines Programms seinen Status beibehält, indem es die CPU dazu veranlasst, Speicher zwischen den Festplatten-, RAM- und CPU-Registern sowie Adressen verschiedener Komponenten (z. B. Videokarten oder Netzwerkkarten) zu verschieben. Das Problem bei der Verwendung einer CPU von einem anderen Computer aus, um Ihnen zu helfen, besteht darin, dass diese auf denselben Speicher zugreifen muss. Das Aufrechterhalten eines Spiegelbilds des Computerspeichers auf einem anderen Computer erfordert so viel Aufwand, dass der Zweck des Versuchs, einen anderen Computer hinzuzufügen, um die Leistung zu steigern, leicht zunichte gemacht wird.

Die Art von Dingen, die auf mehrere Computer aufgeteilt werden können, sind das Bild-Rendering oder einige mathematische Berechnungen, die unabhängig voneinander arbeiten können.

2
George Spiceland

Wenn Sie nach einer Methode suchen, um die Prozessorleistung von zwei PCs zu einem zu kombinieren, ist die "einfachste" Methode, beide als virtuelle Maschinenhosts zu konfigurieren, indem Sie Software wie VMWare ESXi verwenden Gerät mit kompatibler Hardware) und Erstellen einer Ressourcengruppe oder eines Clusters und Erstellen einer virtuellen Maschine, die die Ressourcen beider Computer verwendet. Auf diese Weise erhalten Sie NICHT die volle doppelte Geschwindigkeit (Sie verlieren durch Virtualisierung Ressourcen). Diese Lösung ist wahrscheinlich aufgrund der möglichen Kompatibilitätsanforderungen eingeschränkt, ist jedoch die "richtige" Antwort auf Ihre Frage. Die virtuelle Maschine verhält sich wie ein einzelner PC, wobei die Verarbeitungsleistung beider Hosts abzüglich des zur Aufrechterhaltung der Virtualisierung erforderlichen Overheads beträgt.

Ich fürchte, die Kommunikation zwischen den Gastgebern wird der Engpass sein. gronostaj vor 10 Jahren 0
Ja, die Kommunikation zwischen Hosts kann zu Engpässen führen. Dies ist Teil des damit verbundenen Overhead. Nicht-Gigabit-Netzwerke wären der Hauptschuldige, aber angesichts der günstigen und umfangreichen Verfügbarkeit von Gigabit empfinde ich das nicht als besonders strafend. Dies gilt jedoch für die gesamte verteilte Netzwerkverarbeitung, und VM ist ein weitaus brauchbareres Szenario mit wesentlich weniger Komplikationen als Remoteprozeduraufrufe und benutzerdefinierte Anwendungen, die für (was müsste es sein müssen) für verteiltes Netzwerk-Computing. George Spiceland vor 10 Jahren 1
1
Scott

Ich stimme den anderen Antworten zu:

  • Wenn Sie über eine riesige Excel-Arbeitsmappe mit mehreren Blättern verfügen und Excel doppelt so schnell ausführen möchten (Formeln und Szenarien aktualisieren, Makros ausführen usw.), haben Sie kein Glück.
  • Wenn Sie über eine benutzerdefinierte Anwendung verfügen, die leicht partitioniert werden kann, z. B. die Quadratwurzel jeder ganzen Zahl von 1 bis 1.000.000, können Sie das Problem leicht in Stücke zerlegen und verteilen.
  • Wenn Sie eine benutzerdefinierte Anwendung haben, z. B. die ersten 1.000.000 Ziffern von π (pi) berechnen, können Sie dies möglicherweise tun, wenn Sie den Problembereich gut genug verstehen.

Wenn Sie über die Entwicklung von Software für die Ausführung in einer verteilten Umgebung (mit mehreren Computern) sprechen, finden Sie hier einige Vorschläge:

  • Verwenden Sie Remoteprozeduraufrufe (RPCs) . So wie Sie einen Host als Dateiserver oder Webserver einrichten können, können Sie mit RPCs einen Computer, im Wesentlichen einen CPU-Server, erstellen. Konzeptionell haben Sie einen Master-Computer, der ein RPC-Client wäre, und würde Bibliotheksfunktionen aufrufen, die transparent auf dem Server ausgeführt werden. In ihrer einfachsten Form würde diese Architektur keinen Leistungsvorteil bieten, da zu jedem Zeitpunkt nur eine CPU ausgeführt wird. Im asynchronen Modell kann der Client jedoch eine Remoteprozedur auf dem Server starten und dann andere Aktionen ausführen, während der Server ausgeführt wird.
  • Verwenden Sie eine für die parallele Verarbeitung entwickelte Sprache, beispielsweise Unified Parallel C (UPC) . Dies ist eine Erweiterung der C-Sprache mit Möglichkeiten für verteilte Daten und gleichzeitige Ausführung. Verweise: