Kann man die Rechenleistung von 2 Computern kombinieren?

14

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

  1. Kann man die Rechenleistung von 2 Computern kombinieren?
  2. Wie mache ich es?
Wern Ancheta
quelle
7
1) Auf jeden Fall. 2) Mit enormen Schwierigkeiten.
Daniel R Hicks

Antworten:

11

Nicht transparent, wenn ein laufendes Programm den zweiten Computer zum Ausführen von Code verwenden kann, da diese logisch getrennt sind und die CPU nicht miteinander kommunizieren oder auf den Speicher des 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, 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 diese auf dem sekundären Computer ausführen, z. B. Codieren / Rekodieren eines Videostreams.

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

mindless.panda
quelle
1
Angenommen, ich habe 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
5

Eine meiner am häufigsten verwendeten Zeilen - Ja und Nein!

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

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

William Hilsum
quelle
1
@ ~ quack ja, und ich sagte für bestimmte Anwendungen ... Da die Frage mit Windows-7 getaggt war, nahm ich an, dass er einen Alltagscomputer mit einem von der Stange erhältlichen Programm meinte .... Jedenfalls - Beowulf-Cluster nicht erfordern speziell geschriebene Anwendungen? ... Ich bin kein Experte, habe noch nie eine verwendet, aber ich habe schnell beowulf.org/overview/index.html gelesen (insbesondere die letzten beiden Absätze)
William Hilsum
Entschuldigung, habe meinen früheren Kommentar nach dem erneuten Lesen gelöscht und festgestellt, dass Sie bereits mit dem Clustering-Konzept verknüpft waren. beowulfs wurden für Standardkomponenten entwickelt und stellen eine Möglichkeit dar, mehrere Systeme miteinander zu verbinden. Sie haben jedoch Recht, dass sie nicht für Programme geeignet sind, die nicht speziell für diese Systeme entwickelt wurden.
Quack Quijote
4

Das ist sehr gut möglich! Anhand der Einfachheit Ihrer Frage gehe ich jedoch davon aus, dass Sie einfach ein Programm ausführen möchten, das Ihren Computer auf magische Weise doppelt so schnell macht, was nicht möglich ist.

Sie müssen verstehen, dass ein Programm beim Ausführen seinen Status beibehält, indem es die CPU veranlasst, Speicher zwischen den Registern HDD, RAM und CPU sowie Adressen auf verschiedenen Komponenten (z. B. Grafikkarten oder Netzwerkkarten) zu verschieben. Das Problem bei der Verwendung einer CPU von einem anderen Computer besteht darin, dass auf denselben Speicher zugegriffen werden muss. Und um ein Spiegelbild des Arbeitsspeichers Ihres Computers auf einem anderen Computer zu erhalten, ist so viel Aufwand erforderlich, dass der Versuch, einen anderen Computer hinzuzufügen, um Leistung zu erzielen, leicht zunichte gemacht wird :)

Die Art der Dinge, die auf mehrere Computer aufgeteilt werden können, sind Bildwiedergabe oder einige mathematische Berechnungen, die unabhängig voneinander funktionieren können.

Nippysaurus
quelle
3

Wenn Sie nach einer Methode suchen, mit der Sie die Rechenleistung von zwei PCs in einem kombinieren können, ist die "einfachste" Methode, beide als Hosts für virtuelle Maschinen mit Software wie VMWare ESXi zu konfigurieren Gerät mit kompatibler Hardware) und Erstellen einer Ressourcengruppe oder eines Clusters und Erstellen einer virtuellen Maschine, die die Ressourcen beider Computer verwendet. Dadurch erhalten Sie NICHT die doppelte Geschwindigkeit (Sie verlieren Ressourcen aufgrund von Virtualisierung). Aufgrund der wahrscheinlichen Kompatibilitätsanforderungen ist dies eine eingeschränkte Lösung, aber die "richtige" Antwort auf Ihre Frage. Die virtuelle Maschine verhält sich wie ein einzelner PC mit der Verarbeitungsleistung beider Hosts abzüglich des für die Aufrechterhaltung der Virtualisierung erforderlichen Overheads.

George Spiceland
quelle
Ich fürchte, die Kommunikation zwischen den Gastgebern wird der Engpass sein.
Gronostaj
1
Ja, die Kommunikation zwischen Hosts kann ein Engpass sein. Dies ist Teil des Overheads. Nicht-Gigabit-Netze wären die Hauptursache dafür, aber angesichts der günstigen und produktiven Verfügbarkeit von Gigabit empfinde ich dies nicht als besonders nachteilig. Dies gilt jedoch für die gesamte verteilte Netzwerkverarbeitung, und VM ist ein weitaus benutzerfreundlicheres Szenario mit deutlich weniger Komplikationen als Remote Procedure Calls und benutzerdefinierte Anwendungen, die für die verteilte Netzwerkverarbeitung (was ohnehin sein müsste) vorgesehen sind.
George Spiceland
2

Ich stimme den anderen Antworten zu:

  • Wenn Sie über eine riesige Excel-Arbeitsmappe mit mehreren Arbeitsblättern verfügen und Excel doppelt so schnell ausführen möchten (Formeln und Szenarien aktualisieren, Makros ausführen usw.), haben Sie Pech.
  • Wenn Sie über eine benutzerdefinierte Anwendung verfügen, die einfach zu partitionieren ist, z. B. das Ermitteln der Quadratwurzel jeder Ganzzahl von 1 bis 1.000.000, können Sie das Problem problemlos aufteilen und verteilen.
  • Wenn Sie eine benutzerdefinierte Anwendung wie das Berechnen der ersten 1.000.000 Stellen von π (pi) haben, können Sie dies möglicherweise tun, wenn Sie den Problemraum gut genug verstehen.

Wenn Sie über die Entwicklung von Software für eine verteilte Umgebung (mit mehreren Computern) sprechen, finden Sie hier einige Vorschläge:

  • Verwenden Sie Remote Procedure Calls (RPCs) . So wie Sie einen Host zu einem Dateiserver oder einem Webserver machen können, können Sie mit RPCs eine Maschine, im Wesentlichen einen CPU-Server, erstellen. Konzeptionell hätten Sie eine Master-Maschine, die ein RPC-Client wäre, und sie würde Bibliotheksfunktionen aufrufen, die transparent auf dem Server ausgeführt würden. In der einfachsten Form würde diese Architektur keinen Leistungsvorteil bringen, da zu jedem Zeitpunkt nur eine CPU ausgeführt wird. Im asynchronen Modell kann der Client jedoch eine Remote-Prozedur auf dem Server starten und dann andere Aktionen ausführen, während der Server ausgeführt wird.
  • Verwenden Sie eine Sprache für die parallele Verarbeitung, z. B. Unified Parallel C (UPC) . Dies ist eine Erweiterung der C-Sprache mit Funktionen für verteilte Daten und gleichzeitige Ausführung. Verweise:
Scott
quelle