Parallel RAM

Im Informatik, a Parallele Zufallszugriffsmaschine (Parallel RAM oder KINDERWAGEN) ist ein geteilte Erinnerung abstrakte Maschine. Wie der Name schon sagt, ist der Kinderwagen als parallelübergreifende Analogie zur Zufallszugriffsmaschine (RAM) (nicht zu verwechseln mit Arbeitsspeicher). Auf die gleiche Weise, wie der RAM von sequentiellen Algorithmus-Designern verwendet wird, um die algorithmische Leistung (z. B. Zeitkomplexität) zu modellieren, wird der Kinderwagen von parallel-Algorithmus-Designern verwendet, um parallele algorithmische Leistung zu modellieren (z. angenommen ist typischerweise auch angegeben). Ähnlich wie das RAM -Modell praktische Probleme vernachlässigt, wie z. Synchronisation und Kommunikationbietet jedoch eine (problematisierende) Anzahl von Prozessoren. Die Kosten für Algorithmus werden beispielsweise unter Verwendung von zwei Parametern O (Zeit) und O (Zeit × Prozessor_Number) geschätzt.

Konflikte lesen/schreiben

Lesen/Schreibkonflikte, die häufig als ineinander greifen, wenn Sie gleichzeitig auf denselben gemeinsamen Speicherort zugreifen, werden durch eine der folgenden Strategien gelöst:

  1. Exklusive Read Exclusive Write (EREW) - Jede Speicherzelle kann von jeweils nur von einem Prozessor gelesen oder geschrieben werden
  2. Concurrent Read Exclusive Write (Crew) - Multiple -Prozessoren können eine Speicherzelle lesen, aber nur eine kann gleichzeitig schreiben
  3. Exklusive Lesen gleichzeitlich Schreibweise (ERCW) - nie in Betracht gezogen
  4. Concurrent Read Concurrent Write (CRCW) - Multiple -Prozessoren können lesen und schreiben. Ein CRCW -Kinderwagen wird manchmal genannt Gleichzeitige Zufallszugriffsmaschine.[1]

Hier stehen E und C für "exklusiv" bzw. "gleichzeitig". Das Lesen verursacht keine Diskrepanzen, während das gleichzeitige Schreiben weiter definiert ist als:

Verbreitet- Alle Prozessoren schreiben den gleichen Wert; Ansonsten ist illegal
Willkürlich- Nur ein willkürlicher Versuch ist erfolgreich, andere gehen in den Ruhestand
Priorität- Processor -Rang gibt an, wer schreiben darf
Eine andere Art von Array -Reduktion Operation wie Summe, logisch und oder max.

Bei der Entwicklung von Algorithmen für Kinderwagen werden mehrere vereinfachende Annahmen erfolgen. Sie sind:

  1. Die Anzahl der Prozessoren in der Maschine ist keine Begrenzung.
  2. Jeder Speicherort ist von jedem Prozessor einheitlich zugänglich.
  3. Die Menge des gemeinsam genutzten Speichers im System ist keine Begrenzung.
  4. Ressourcenkonkurrenz ist abwesend.
  5. Die auf diesen Maschinen geschriebenen Programme sind im Allgemeinen vom Typ Simd.

Diese Art von Algorithmen ist nützlich, um die Ausbeutung der Parallelität zu verstehen, das ursprüngliche Problem in ähnliche Unterprobleme zu unterteilen und parallel zu lösen. Die Einführung des formalen "P-RAM" -Modells in Wyllies 1979 These von 1979[2] hatte das Ziel, die Analyse von parallelen Algorithmen auf eine Weise zu quantifizieren, die zum Analog an das analog ist Turing Maschine. Die Analyse konzentrierte sich auf ein MIMD -Programm der Programmierung unter Verwendung eines Besatzungsmodells, zeigte jedoch, dass viele Varianten, einschließlich der Implementierung eines CRCW -Modells und der Implementierung auf einer SIMD -Maschine, nur mit konstantem Overhead möglich waren.

Implementierung

Pram -Algorithmen können nicht mit der Kombination von parallelisiert werden Zentralprozessor und Dynamischer Direktzugriffsspeicher (DRAM), weil DRAM keinen gleichzeitigen Zugang zulässt; Sie können jedoch in Hardware implementiert werden oder in den internen lesen/schreiben Statische Zufallszugriffsgedächtnis (SRAM) Blöcke von a Feldprogrammierbares Gate-Array (FPGA) kann es mit einem CRCW -Algorithmus erfolgen.

Der Test auf praktische Relevanz von Pram (oder RAM) -Algorithmen hängt jedoch davon ab, ob ihr Kostenmodell eine effektive Abstraktion eines Computers bietet. Die Struktur dieses Computers kann ganz anders sein als das abstrakte Modell. Das Wissen über die Software- und Hardwareschichten, die eingefügt werden müssen, liegt außerhalb des Rahmens dieses Artikels. Aber Artikel wie Vishkin (2011) zeigen, wie eine pramähnliche Abstraktion von der unterstützt werden kann explizite Multi-Threading (XMT) Paradigma und Artikel wie z. Caragea & Vishkin (2011) zeigen, dass ein Pram -Algorithmus für die Maximales Durchflussproblem Kann starke Beschleunigungen im Vergleich zum schnellsten seriellen Programm für dasselbe Problem liefern. Der Artikel Ghanim, Vishkin & Barua (2018) zeigten, dass PRAM-Algorithmen AS-is-is-Is-Wettbewerbsleistung erzielen können, auch ohne zusätzliche Anstrengungen, um sie als Multi-Thread-Programme auf XMT zu besetzen.

Beispielcode

Dies ist ein Beispiel für Systemverilog Code, der den Maximalwert im Array in nur 2 Taktzyklen findet. Es vergleicht alle Kombinationen der Elemente im Array auf der ersten Uhr und verschmilzt das Ergebnis auf der zweiten Uhr. Es verwendet CRCW -Speicher; m [i] <= 1 und Maxno <= Daten [i] sind gleichzeitig geschrieben. Die Parallelität verursacht keine Konflikte, da der Algorithmus garantiert, dass der gleiche Wert in denselben Speicher geschrieben wird. Dieser Code kann ausgeführt werden FPGA Hardware.

Modul Findmax #(Parameter int Len = 8)  (Eingang bisschen Uhr, Zurücksetzen, Eingang bisschen[7:0] Daten[Len], Ausgang bisschen[7:0] Maxno);  Typedef Auflauf bisschen[1:0] {VERGLEICHEN, VERSCHMELZEN, ERLEDIGT} Bundesland;                       Bundesland Zustand;  bisschen m[Len];  int i, j;       immer_ff @(Posedge Uhr, Negedge Zurücksetzen) Start  wenn (!Zurücksetzen) Start  zum (i = 0; i < Len; i++) m[i] <= 0;  Zustand <= VERGLEICHEN;  Ende anders Start  Fall (Zustand)  VERGLEICHEN: Start  zum (i = 0; i < Len; i++) Start  zum (j = 0; j < Len; j++) Start  wenn (Daten[i] < Daten[j])) m[i] <= 1;  Ende  Ende  Zustand <= VERSCHMELZEN;  Ende                   VERSCHMELZEN: Start  zum (i = 0; i < Len; i++) Start  wenn (m[i] == 0) Maxno <= Daten[i];  Ende  Zustand <= ERLEDIGT;  Ende  Endgepäck  Ende  Ende Endmodule 

Siehe auch

Verweise

  1. ^ Neil Immerman, Ausdrucksfähigkeit und parallele Komplexität. Siam Journal on Computing, Vol. 18, nein. 3, S. 625-638, 1989.
  2. ^ Wyllie, James C. Die Komplexität paralleler Berechnungen, Doktorarbeit, Abteilung für Informatik, Cornell University
  • Eppstein, David; Galil, ZVI (1988), "Parallele algorithmische Techniken zur kombinatorischen Berechnung", Annu. Rev. Comput. Sci., 3: 233–283, doi:10.1146/annurev.cs.03.060188.001313
  • Jaja, Joseph (1992), Eine Einführung in parallele Algorithmen, Addison-Wesley, ISBN 0-201-54856-9
  • Karp, Richard M.; Ramachandran, Vijaya (1988), Eine Übersicht über parallele Algorithmen für gemeinsame Memory-Maschinen, University of California, Berkeley, Abteilung für EECS, Tech. Rep. UCB/CSD-88-408
  • Keller, Jörg; Christoph Keßler; Jesper Träff (2001). Praktische Kinderwagenprogrammierung. John Wiley und Söhne. ISBN 0-471-35351-5.
  • Vishkin, Uzi (2009), Paralleles Denken: Einige grundlegende datenparallele Algorithmen und Techniken, 104 Seiten (PDF), Klassennotizen von Kursen zu parallelen Algorithmen, die seit 1992 an der University of Maryland, an der University of Maryland, an der Universität Tel Aviv und im Technion unterrichtet wurden
  • Vishkin, Uzi (2011), "Verwendung einfacher Abstraktion zum erneuten Erfunden von Computing für Parallelität", Kommunikation der ACM, 54: 75–85, doi:10.1145/1866739.1866757
  • Caragea, George Konstantin; Vishkin, Uzi (2011), "Kurze Ankündigung: Bessere Geschwindigkeit für paralleles Max-Flow", Verfahren des 23. ACM -Symposiums zur Parallelität in Algorithmen und Architekturen - Spaa '11, p. 131, doi:10.1145/1989493.1989511, ISBN 9781450307437
  • Ghanim, Fady; Vishkin, Uzi; Barua, Rajeev (2018), "Easy Pram-basierte Hochleistungs-Parallelprogrammierung mit Eis", IEEE -Transaktionen auf parallelen und verteilten Systemen, 29 (2): 377–390, doi:10.1109/tpds.2017.2754376, HDL:1903/18521

Externe Links