Frage

Ich höre oft Leute darüber reden parallel Computer und verteilt Computer, aber ich habe den Eindruck, dass es keine klare Grenze zwischen den 2 gibt, und die Leute neigen dazu, dies ziemlich leicht zu verwirren, während ich glaube, dass es sehr unterschiedlich ist:

  • Parallel Das Computing ist enger mit Multi-Threading gekoppelt oder wie eine einzelne CPU vollständig verwendet werden.
  • Verteilt Das Computing bezieht sich auf den Begriff der Kluft und Eroberung, die Ausführung von Unteraufgaben auf verschiedenen Maschinen und das Zusammenführen der Ergebnisse.

Da wir jedoch in die eingetreten sind Große Daten Ära, es scheint, dass die Unterscheidung in der Tat schmilzt und die meisten Systeme heute eine Kombination aus parallelem und verteiltem Computer verwenden.

Ein Beispiel, das ich in meinem täglichen Job verwende, ist Hadoop mit der Karte/Reduzierung des Paradigmas, ein klar verteiltes System mit Arbeitnehmern, die Aufgaben auf verschiedenen Maschinen ausführen, aber auch die gesamte Maschine mit einigen parallelen Computing voll ausnutzen.

Ich möchte einen Rat bekommen, um zu verstehen, wie genau die Unterscheidung in der heutigen Welt treffen kann, und ob wir immer noch über paralleles Computer sprechen können oder es keine klare Unterscheidung mehr gibt. Für mich scheint es in den letzten Jahren viel gewachsen zu sein, während das parallele Computing zu stagnieren scheint, was wahrscheinlich erklären könnte, warum ich viel mehr über die Verteilung von Berechnungen als über Parallelisierung höre.

War es hilfreich?

Lösung

Dies ist teilweise eine Frage der Terminologie, und als solches erfordert Sie nur, dass Sie und die Person, die Sie sprechen, um sie vorher zu klären. Es gibt jedoch verschiedene Themen, die stärker miteinander verbunden sind Parallelität, Parallelität, oder verteilte Systeme.

Parallelität ist im Allgemeinen so schnell wie möglich mit der Durchführung einer bestimmten Berechnung betroffen, indem es mehrere Prozessoren ausnutzt. Die Skala der Prozessoren kann von mehreren arithmetischen Einheiten innerhalb eines einzelnen Prozessors bis hin zu mehreren Prozessoren, die Speicher teilen, bis hin zur Verteilung der Berechnung auf vielen Computern reichen. Auf der Seite der Berechnungsmodelle geht es in der Parallelität im Allgemeinen darin, mehrere gleichzeitige Berechnungsfäden intern zu verwenden, um ein Endergebnis zu berechnen. Parallelität wird manchmal auch für verwendet Echtzeit reaktive Systeme, die viele Prozessoren enthalten, die eine einzelne Masteruhr teilen; Solche Systeme sind vollständig deterministisch.

Parallelität ist die Untersuchung von Berechnungen mit mehreren Berechnungsfäden. Die Parallelität kommt eher aus der Architektur der Software als aus der Architektur der Hardware. Software kann geschrieben werden, um Parallelität zu verwenden, um die Parallelität der Hardware zu nutzen, aber häufig ist der Bedarf dem Verhalten der Software inhärent, auf verschiedene asynchrone Ereignisse zu reagieren (z. Zu Hardware -Unterbrechungen, indem Sie zu einem Interrupt -Handler -Thread wechseln).

Verteiltes Computer Studien separate Prozessoren, die durch Kommunikationsverbindungen verbunden sind. Während parallele Verarbeitungsmodelle häufig (aber nicht immer) gemeinsamer Speicher annehmen, beruhen verteilte Systeme grundsätzlich auf das Bestehen von Nachrichten. Verteilte Systeme sind von Natur aus gleichzeitig. Wie bei der Parallelität ist die Verteilung häufig Teil des Ziels, nicht nur Teil der Lösung: Wenn sich die Ressourcen an geografisch unterschiedlichen Orten befinden, ist das System von Natur aus verteilt. Systeme, bei denen teilweise Fehler (von Prozessorknoten oder Kommunikationsverbindungen) möglich sind, sind in diesen Bereich fallen.

Andere Tipps

Wie von @Raphael hervorgehoben, ist verteiltes Computing eine Teilmenge des parallelen Computers. Parallele Computing ist wiederum eine Teilmenge des gleichzeitigen Computing.

Parallelität bezieht sich auf Teilen Ressourcen im gleichen Zeitraum. Beispielsweise teilen sich mehrere Prozesse dieselbe CPU (oder CPU -Kerne) oder den Speicher oder ein E/A -Gerät. Betriebssysteme verwalten gemeinsame Ressourcen. Multiprozessor -Maschinen und verteilte Systeme sind Architekturen, bei denen die Gleichzeit -Kontrolle eine wichtige Rolle spielt. Die Parallelität tritt sowohl auf Hardware- als auch auf Softwareebene auf. Mehrere Geräte arbeiten gleichzeitig, Prozessoren haben eine interne Parallelität und arbeiten gleichzeitig an mehreren Anweisungen, Systemen haben mehrere Prozessoren und Systeme interagieren durch Netzwerkkommunikation. Die Parallelität tritt bei der Anwendungsebene bei der Signalbehandlung, in der Überlappung von E/A und der Verarbeitung, in der Kommunikation und in der gemeinsamen Nutzung von Ressourcen zwischen Prozessen oder zwischen Threads im selben Prozess auf.

Zwei Prozesse (oder Threads), die auf demselben System ausgeführt werden, damit ihre Ausführung in der Zeit verschachtelt ist: Prozesse (Threads) teilen die CPU -Ressource. Ich mag die folgende Definition: Zwei auf demselbe System ausführende Prozesse (Threads) sind gleichzeitig gleichzeitig, wenn der zweite Prozess (Thread) die Ausführung beginnt, wenn der erste Prozess (Thread) seine Ausführung noch nicht beendet hat.

Die Parallelität wird Parallelität, wenn Prozesse (oder Threads) ausgeführt werden Verschiedene CPUs (oder Kerne derselben CPU). Die Parallelität in diesem Fall ist nicht "virtuell", sondern "real".

Wenn diese CPUs derselben Maschine angehören, bezeichnen wir die Berechnung als "parallel". Wenn der CPUs zu gehören zu Verschiedene Maschinen, kann geografisch verteilt sein, wir bezeichnen die Berechnung als "verteilt".

Daher ist verteiltes Computer eine Teilmenge paralleler Computing, eine Teilmenge des gleichzeitigen Computing.

Natürlich ist es wahr, dass im Allgemeinen parallele und verteilte Computing als unterschiedlich angesehen werden. Das Parallele Computing bezieht sich auf eng gekoppelte Anwendungen und wird verwendet, um eines der folgenden Ziele zu erreichen:

  1. Rechenintensive Probleme schneller lösen;
  2. Lösen Sie größere Probleme in der gleichen Zeit;
  3. Lösen Sie Probleme mit der gleichen Größe mit höherer Genauigkeit in der gleichen Zeit.

In der Vergangenheit war das erste Ziel der Hauptgrund für paralleles Computer: Beschleunigung der Problemlösung. Im Moment und wenn möglich, verwenden Wissenschaftler hauptsächlich paralleles Computing, um entweder das zweite Ziel zu erreichen (z. B. sind sie bereit, die gleiche Zeit auszugeben, die sie in der Vergangenheit in der Vergangenheit ausgegeben haben, parallel zu einem Problem der Größe $ $ $ bis zu Lösen Sie jetzt ein Problem der Größe von 5x $ $) oder dem dritten (dh sie sind bereit, die gleiche Zeit auszugeben, die sie in der Vergangenheit ausgewendet haben, um parallel ein Problem der Größe $ x $ zu lösen, um jetzt ein Problem zu lösen von Größe $ x $, aber mit höherer Genauigkeit unter Verwendung eines viel komplexeren Modells, mehr Gleichungen, Variablen und Einschränkungen). Paralleles Computing kann gemeinsam genutztes Memory, Nachrichten-Passing oder beides verwendet (z. B. Intra-Knoten mit gemeinsam genutztem Memory unter Verwendung von OpenMP, Message-Passing-Inter-Node mit MPI). Es kann auch GPUs -Beschleuniger verwenden. Da die Anwendung auf einem parallelen Supercomputer ausgeführt wird, berücksichtigen wir normalerweise keine Probleme wie Fehler, Netzwerkpartition usw., da die Wahrscheinlichkeit dieser Ereignisse für praktische Zwecke nahe Null ist. Große parallele Anwendungen wie Klimawandelsimulationen, die mehrere Monate lang dauern können, befassen sich jedoch normalerweise mit Ausfällen und verwenden Checkpoints/Neustartmechanismus, um zu vermeiden, dass die Simulation von Anfang an erneut starten, wenn ein Problem auftritt.

Distributed Computing bezieht sich auf lose gekoppelte Anwendungen, in denen das Ziel (für Distributed Supercomputing) ist, Probleme zu lösen, die sonst zu groß sind oder deren Ausführung auf verschiedene Komponenten geteilt werden kann, die von der Ausführung auf verschiedene Architekturen profitieren könnten. Es gibt mehrere Modelle, darunter Client-Server, Peer-to-Peer usw. Die Probleme, die beim verteilten Computing auftreten, wie Sicherheit, Fehler, Netzwerkpartition usw., müssen zum Entwurfszeit berücksichtigt werden, da in diesem Zusammenhang die Regel und die Regel und die Regel und die Regel sind Nicht die Ausnahme.

Endlich, Netz und Wolke Das Computing ist beide Teilmenge des verteilten Computers. Das Grid Computing-Paradigma entstand als ein neues Feld, das sich durch das traditionelle verteilte Computing unterscheidet, da sich der Schwerpunkt auf großflächige Ressourcenaustausch und innovative Hochleistungsanwendungen konzentriert. Die gemeinsam genutzten Ressourcen gehören normalerweise zu mehreren, unterschiedlichen Verwaltungsbereichen (sogenannte Virtuelle Organisationen). Das Grid Computing ist zwar stark von Wissenschaftlern im letzten Jahrzehnt verwendet, ist für normale Benutzer traditionell schwierig. Cloud Computing versucht, die Lücke zu schließen, indem gewöhnliche Benutzer leicht mehrere Maschinen ausnutzen können, die im selben Rechenzentrum co-loidiert und nicht geografisch verteilt sind, durch die Verwendung von Virtuelle Maschinen Dies kann von den Benutzern zusammengestellt werden, um ihre Anwendungen auszuführen. Aufgrund der Hardware, insbesondere des üblichen Mangels an einer Hochleistungsnetzwerkverbindung (wie Infiniband usw.), werden Wolken nicht für die Ausführung paralleler MPI-Anwendungen ausgerichtet. Verteilte Anwendungen, die auf Wolken ausgeführt werden, werden normalerweise implementiert, um das MAP/Reduzierungsparadigma zu nutzen. Übrigens betrachten viele Menschen MAP/Reduzierung als paralleles Datenflussmodell.

Ich bin mir nicht sicher, ob ich die Frage verstehe. Die Unterscheidung zwischen paralleler und verteilter Verarbeitung ist noch vorhanden. Die Tatsache, dass Sie beide in derselben Berechnung nutzen können, ändert sich nicht, was die Konzepte bedeuten.

Und ich weiß nicht, welche Neuigkeiten Sie folgen, aber ich bin mir ziemlich sicher, dass parallele Verarbeitung nicht stagniert, zumal ich denke, dass es viel häufiger nützlich ist.

Wenn Sie Daten von Daten verarbeiten müssen, ist das verteilte Computer (möglicherweise kombiniert mit parallelem Computing) der richtige Weg. Wenn Sie jedoch etwas auf einem Desktop oder einem Smartphone berechnen müssen, erhalten Sie allein wahrscheinlich die besten Ergebnisse, wenn man bedenkt, dass die Internetverbindung möglicherweise nicht immer verfügbar ist und wenn dies der Fall ist, kann es langsam sein.

Hier ist ein aktuelles Papier, das es wert ist, gelesen zu werden:

Michel Raynal: "Parallel Computing vs. Distributed Computing: Eine große Verwirrung?", Proc. Euro-Par 2015, doi: 10.1007/978-3-319-27308-2_4

Abstrakt:

In diesem Papierpapier wird die Tatsache erörtert, dass aus Sicht der Unterrichtssicht die Parallelität und das verteilte Computing oft verwirrt sind, während sie bei Betrachtung ihrer tiefen Natur unterschiedliche grundlegende Fragen angehen. Daher sollten geeignete Lehrpläne für jeden von ihnen getrennt ausgelegt werden. Die Einstellung „Alles ist in allem (und gegenseitig)) scheint kein relevanter Ansatz zu sein, um den Schülern die wichtigen Konzepte beizubringen, die eine Parallelität auf der einen Seite charakterisieren, und das Verteilte auf der anderen Seite verteilt.

Im Einführungsabschnitt des Buches [1] bieten die Autoren eine andere Perspektive (anders als die in anderen Antworten) zum Vergleich zwischen verteiltem Computer und parallelen Computing.

In großem Umfang besteht das Ziel der parallele Verarbeitung darin, alle Prozessoren für eine große Aufgabe einzusetzen. Im Gegensatz dazu hat jeder Prozessor in einem verteilten System im Allgemeinen eine eigene halbunabhängige Agenda, aber aus verschiedenen Gründen, einschließlich der Austausch von Ressourcen, Verfügbarkeit und Fehlertoleranz, müssen Prozessoren ihre Handlungen koordinieren.

Aus dieser Perspektive fällt das Karte/Reduzierungsparadigma hauptsächlich in den parallelen Computerkontext. Wenn wir jedoch möchten, dass die beteiligten Knoten einen Konsens über einen gemeinsamen Führer erzielen, indem beispielsweise das verwendet wird Paxos (Wiki) Algorithmus, dann betrachten wir ein typisches Problem beim verteilten Computing.

1] Verteilter Computer. Grundlagen, Simulationen und fortgeschrittene Themen. Hagit Attiya und Jennifer Welch. 2004.

Es gibt die Antwort Welches ist hier angemessener. Grundsätzlich, parallel bezieht sich auf memory-shared multiprocessor wohingegen distributed bezieht sich auf seine private-memory multicomputers. Das heißt, das erste ist eine einzelne Multicore- oder Supercalar -Maschine, während ein anderer ein geografisch verteiltes Netzwerk von Computern ist. Letzteres impliziert weniger Kopplung und damit mehr Verfügbarkeit und Fehlertoleranz auf Kosten weniger Leistung. Die Leistung wird erlitten, da Sie in jedem Hin- und Rückflug Daten (DE-) Serialisierung benötigen, und ihre Lieferung über längere Strecken, während Sie einfach ein Memory-Objekt überweisen können, um sie an eine andere CPU in parallelem Prozessor weiterzuleiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top