Parallele externer Gedächtnis

PEM -Modell

In Informatik, a PEM -Modell (Parallele External Memory) ist ein Cache-Awesare, Externer Speicher abstrakte Maschine.[1] Es ist die parallelmorbende Analogie zum Einzelprozessor Externer Speicher (EM) Modell. In ähnlicher Weise ist es die von Cache-bewusstes Analogie zur Cache Parallele Zufallszugriffsmaschine (KINDERWAGEN). Das PEM -Modell besteht aus einer Reihe von Prozessoren, zusammen mit ihren jeweiligen privaten Caches und einem gemeinsamen Hauptgedächtnis.

Modell

Definition

Das PEM -Modell[1] ist eine Kombination aus dem EM -Modell und dem PRAM -Modell. Das PEM -Modell ist ein Berechnungsmodell, das besteht Prozessoren und zweistufig Speicherhierarchie. Diese Gedächtnishierarchie besteht aus einer großen Externer Speicher (Hauptspeicher) der Größe und klein interne Erinnerungen (Caches). Die Prozessoren teilen den Hauptspeicher. Jeder Cache ist exklusiv für einen einzelnen Prozessor. Ein Prozessor kann nicht auf den Cache eines anderen zugreifen. Die Caches haben eine Größe was in Größenblöcken verteilt ist . Die Prozessoren können nur Vorgänge für Daten ausführen, die sich in ihrem Cache befinden. Die Daten können zwischen dem Hauptspeicher und dem Cache in Größe der Größe übertragen werden .

E/A -Komplexität

Das Komplexitätsmaß des PEM -Modells ist die E/A -Komplexität,[1] Dies bestimmt die Anzahl der parallelen Blöcke zwischen dem Hauptspeicher und dem Cache. Während eines parallelen Blocks kann jeder Prozessor einen Block übertragen. Also wenn Prozessoren laden parallelly einen Datenblock der Größe Bilden Sie das Hauptgedächtnis in ihre Caches, es wird als E/A -Komplexität von betrachtet nicht . Ein Programm im PEM -Modell sollte die Datenübertragung zwischen Hauptspeicher und Caches minimieren und so viel wie möglich mit den Daten in den Caches arbeiten.

Konflikte lesen/schreiben

Im PEM -Modell gibt es keine Direkter Kommunikationsnetzwerk zwischen den P -Prozessoren. Die Prozessoren müssen indirekt über das Hauptgedächtnis kommunizieren. Wenn mehrere Prozessoren versuchen, denselben Block im Hauptspeicher gleichzeitig auf Konflikte zuzugreifen/zu schreiben[1] geschehen. Wie im Pram -Modell werden drei verschiedene Variationen dieses Problems berücksichtigt:

  • Concurrent Read Concurrent Write (CRCW): Der gleiche Block im Hauptspeicher kann von mehreren Prozessoren gleichzeitig gelesen und geschrieben werden.
  • Gleichzeitige Read Exclusive Write (Crew): Der gleiche Block im Hauptspeicher kann von mehreren Prozessoren gleichzeitig gelesen werden. Nur ein Prozessor kann jeweils in einen Block schreiben.
  • Exklusive Read Exclusive Write (EREW): Der gleiche Block im Hauptspeicher kann nicht von mehreren Prozessoren gleichzeitig gelesen oder verfasst werden. Nur ein Prozessor kann gleichzeitig auf einen Block zugreifen.

Die folgenden zwei Algorithmen[1] Lösen Sie die Crew und das Problem, wenn Prozessoren schreiben gleichzeitig in denselben Block. Ein erster Ansatz ist die Serialisierung der Schreibvorgänge. Nur ein Prozessor nach dem anderen schreibt in den Block. Dies führt zu insgesamt von insgesamt Parallelblocktransfers. Ein zweiter Ansatz braucht Parallelblocktransfers und ein zusätzlicher Block für jeden Prozessor. Die Hauptidee besteht darin, die Schreibvorgänge in a zu planen binäre Baummode und allmählich die Daten in einen einzelnen Block kombinieren. In der ersten Runde Prozessoren kombinieren ihre Blöcke in Blöcke. Dann Prozessoren kombinieren die Blöcke in . Dieses Verfahren wird fortgesetzt, bis alle Daten in einem Block kombiniert werden.

Vergleich mit anderen Modellen

Modell Multi-Core Cache-Awesare
Zufallszugriffsmaschine (RAM) Nein Nein
Parallele Zufallszugriffsmaschine (KINDERWAGEN) Ja Nein
Externer Speicher (EM) Nein Ja
Parallele externer Gedächtnis (PEM) Ja Ja

Beispiele

Multiway -Partitionierung

Lassen Seien Sie ein Vektor von D-1-Pivots, die in zunehmender Reihenfolge sortiert sind. Lassen ein ungeordneter Satz von N -Elementen sein. Eine D-Way-Partition[1] von Ist ein Satz , wo und zum . wird der I-Th-Eimer genannt. Die Anzahl der Elemente in ist größer als und kleiner als . Im folgenden Algorithmus[1] Die Eingabe wird in n/p-Größe zusammenhängende Segmente unterteilt im Hauptgedächtnis. Der Prozessor, den ich in erster Linie im Segment arbeitet . Der Multiway -Partitionierungsalgorithmus (PEM_DIST_SORT[1]) verwendet ein PEM Präfix -Summe Algorithmus[1] Berechnung des Präfixsumme mit dem optimalen E/O -Komplexität. Dieser Algorithmus simuliert einen optimalen Pram -Präfix -Summenalgorithmus.

// Parallelly eine D-Way-Partition in den Datensegmenten berechnen  für jeden Prozessor i parallel tun     Lesen Sie den Vektor von Pivots  in den Cache. Trennwand  in D -Eimer und Vektor lassen  Seien Sie die Anzahl der Elemente in jedem Eimer.Ende für Führen Sie die PEM -Präfix -Summe auf dem Satz der Vektoren aus  gleichzeitig. // Verwenden Sie den Präfix -Summenvektor, um die endgültige Partition zu berechnenfür jeden Prozessor i parallel tun     Schreiben Sie Elemente  in Speicherorte angemessen durch  und .Ende für Verwenden der Präfix -Summen in gespeicherten in  Der letzte Prozessor P berechnet den Vektor  von Eimergrößen und gibt es zurück.

Wenn der Vektor von Pivots M und der Eingangssatz A befinden sich in zusammenhängendes Speicher, dann kann das D-Way-Partitionierungsproblem im PEM-Modell mit gelöst werden E/O -Komplexität. Der Inhalt der endgültigen Eimer muss sich in einem zusammenhängenden Speicher befinden.

Auswahl

Das Auswahlproblem geht es darum, den k-ten kleinsten Element in einer ungeordneten Liste zu finden von Größe . Der folgende Code[1] benutzt von Pramsort Das ist ein praktischer optimaler Sortieralgorithmus, der hereinläuft , und AUSWÄHLEN, was ein Cache-optimaler Einzelprozessor-Auswahlalgorithmus ist.

wenn  dann     Rückkehr  Ende wenn  // Median von jedem finde  für jeden Prozessor  parallel tun    Ende für  // Mediane sortieren // Partition um Median der Mediane aufteilt wenn  dann   Rückkehr  anders   Rückkehr  Ende wenn 

Unter der Annahme, dass der Eingang in zusammenhängendes Speicher gespeichert ist, wird PEMSELECT hat eine E/A -Komplexität von:


Verteilungsart

Verteilungsart Partitionen eine Eingabeliste von Größe hinein Disjunkte Eimer ähnlicher Größe. Jeder Eimer wird dann rekursiv sortiert und die Ergebnisse werden zu einer voll sortierten Liste kombiniert.

Wenn Die Aufgabe wird an einen Cache-optimalen Einzelprozessor-Sortieralgorithmus delegiert.

Ansonsten der folgende Algorithmus[1] wird genutzt:

// Probe  Elemente von  zum jeder Prozessor  parallel tun  wenn  dann           Belastung  in -Greize Seiten und sortieren Sie Seiten einzeln anders           Laden und sortieren  als einzelne Seite Ende wenn     Wählen Sie jeden aus Das Element von jeder sortierten Speicherseite in zusammenhängenden Vektor  von ProbenEnde für  parallel tun     Vektoren kombinieren  in einen einzigen zusammenhängenden Vektor      Machen  Kopien von :  Ende tun // Finden  Pivots  zum  zu  parallel tun   Ende für Packen Sie die Drehpunkte in zusammenhängender Array ein  // Partition Umdrehungen in Eimer   // rekursive Eimer sortierenzum  zu  parallel tun     rekursiv anrufen  auf Eimer von Größe      Verwendung  Prozessoren, die für Elemente im Eimer verantwortlich sind  Ende für 

Die I/O -Komplexität von Pemdistsort ist:

wo

Wenn die Anzahl der Prozessoren ausgewählt wird und Die I/O -Komplexität lautet dann:

Andere PEM -Algorithmen

PEM -Algorithmus E/A -Komplexität Einschränkungen
Zusammenführen, sortieren[1]
Listenranking[2]
Euler Tour[2]
Ausdrucksbaum Auswertung[2]
Finden a Mst[2]

Wo ist die Zeit, die es braucht, um zu sortieren Artikel mit Prozessoren im PEM -Modell.

Siehe auch

Verweise

  1. ^ a b c d e f g h i j k l Arge, Lars; Goodrich, Michael T.; Nelson, Michael; Sitchinava, Nodari (2008). "Grundlegende parallele Algorithmen für private Cache-Chip-Multiprozessoren". Verfahren des zwanzigsten jährlichen Symposiums zur Parallelität in Algorithmen und Architekturen - SPAA '08. New York, New York, USA: ACM Press: 197. doi:10.1145/1378533.1378573. ISBN 9781595939739.
  2. ^ a b c d Arge, Lars; Goodrich, Michael T.; Sitchinava, Nodari (2010). "Parallele externe Speichergraphenalgorithmen". 2010 IEEE Internationales Symposium für parallele und verteilte Verarbeitung (IPDPS). IEEE: 1–11. doi:10.1109/ipdps.2010.5470440. ISBN 9781424464425.