PRAM

PRAM

Als PRAM oder Parallel Random Access Machine bezeichnet man ein Maschinenmodell zur Analyse paralleler Algorithmen. Es handelt sich um eine Registermaschine, die um die Möglichkeit zur parallelen Verarbeitung von Befehlen erweitert wurde. Wie auch bei den Registermaschinen-Modellen gibt es verschiedene Variationen der PRAM. Die allen Modellen gemeinsame Vorstellung besteht darin, dass mehrere Register gleichzeitig Berechnungen ausführen und das Ergebnis in Speicherzellen ablegen können. Die PRAM dient u.a. in der Komplexitätstheorie zur Definition der Klasse NC der effizient parallel entscheidbaren Probleme.

Inhaltsverzeichnis

Beispiel für eine Realisierung

Auch wenn Registermaschinen im engeren Sinne nur einen sehr einfachen Befehlssatz unterstützen, lassen sich äquivalente Registermaschinen definieren, deren Programme in einer höheren Programmiersprache angegeben werden können. Die parallele Verarbeitung von Befehlen kann nun durch die Einführung einer neuen Anweisung erfolgen, die etwa folgendermaßen aussieht:

for <Bedingung> pardo <Anweisungen>

pardo steht für do in parallel. Ein Beispiel:

for i = 1 to 100 pardo xi := 0

Durch diese Anweisung werden 100 Speicherplätze gleichzeitig mit dem Wert 0 initialisiert. x kann beispielsweise als Array betrachtet werden, dessen Felder mit 1 bis 100 indiziert sind. Die allgemeinere Schreibweise xi sieht von solchen Implementierungsdetails ab. Das angegebene Beispiel ist freilich nicht von allzu hoher praktischer Bedeutung. Daher hier ein sinnvolleres Beispiel, das die Leistungsfähigkeit einer PRAM gut demonstriert:

Gegeben sei eine Liste von n verschiedenen Werten, die unsortiert in den Speicherzellen x1 bis xn abgelegt sind. Wir suchen dasjenige xi, das den größten Wert enthält. Diese Suche ist auf einer PRIORITY-CRCW-PRAM (siehe unten), die keine Aktivierung der Prozessoren erfordert, parallel überraschenderweise für beliebig große n in konstanter Zeit durchführbar:

for i=1 to n pardo
    bi := 1
for i,j=1 to n pardo 
    if xj ≥ xi 
    then 
        bi := 0 
    fi
for i=1 to n pardo
    if bi = 1
    then
        m := i
    fi

Nach der zweiten for-Schleife steht nur dann noch in mi der Wert 1, wenn xi das Maximum ist, in allen anderen der Wert 0. Dasjenige i mit mi = 1 ist der gesuchte Index. Am Ende des Programmes steht dann in m der kleinste Index des Maximums. Das Maximum in einer unsortierten Liste einer beliebigen Länge n lässt sich also mit konstantem Aufwand, also in O(1) Zeit berechnen.

Unterschiedliche PRAM-Modelle

SIMD und MIMD-PRAMs

Die oben beschriebene pardo-Anweisung ermöglicht innerhalb eines Zeittaktes die gleichzeitige Ausführung eines bestimmten Befehles auf unterschiedlichen Variablen. Derartige parallele Modelle bezeichnet man als Single Instruction Multiple Data-Modell oder kurz SIMD. Sind innerhalb eines Zeittaktes auch unterschiedliche Befehle erlaubt, so spricht man von einem Multiple Instruction Multiple Data-Modell (MIMD). Die pardo-Anweisung ist für ein solches Modell zu eng definiert.

Gleichzeitige Lese- und Schreibzugriffe auf identische Speicherzellen

Es muss definiert werden, ob gleichzeitige Lese- und Schreibzugriffe auf identische Speicherzellen erlaubt sein sollen oder nicht. Der obige Algorithmus zur Maximumsuche benötigt beides: Innerhalb der ersten pardo-Anweisung wird von verschiedenen Prozessoren gleichzeitig auf identische Speicherzellen zugegriffen, um diese miteinander zu vergleichen. Innerhalb der zweiten pardo-Anweisung wird hingegen gleichzeitig schreibend auf die Speicherzelle mi zugegriffen. Eine derartige Freiheit möchte man nicht immer erlauben. Man unterscheidet daher:

  • CRCW PRAM: Concurrent Read, Concurrent Write - gleichzeitiger Lese- und Schreibzugriff möglich
  • CREW PRAM: Concurrent Read, Exclusive Write - gleichzeitiger Lesezugriff, aber nur exklusiver Schreibzugriff erlaubt
  • EREW PRAM: Exclusive Read, Exclusive Write - nur exklusiver Lese- und Schreibzugriff erlaubt
  • ERCW PRAM: Exclusive Read, Concurrent Write - exklusiver Lese-, aber gleichzeitiger Schreibzugriff erlaubt

Bei einer EREW darf also beispielsweise jeweils nur ein Prozessor lesend oder schreibend auf eine bestimmte Speicherzelle zugreifen. Ansonsten kommt es zu einem Programmabbruch. (Dies gilt allerdings nicht, wenn ein Prozessor lesend und ein anderer schreibend zugreift.)

Schreibzugriffe bei CRCWs

Bei einer CRCW PRAM muss noch geklärt werden, was im Falle eines gleichzeitigen Schreibzugriffes geschehen soll, wenn verschiedene Prozessoren verschiedene Werte in die Speicherzelle schreiben wollen. Man unterscheidet 3 Modi:

  • common: Nur das Schreiben identischer Werte ist erlaubt.
  • arbitrary: Ein zufälliger Wert wird ausgewählt und geschrieben.
  • priority: Der Prozessor mit der niedrigsten Adresse erhält das Schreibrecht.

Die unterschiedlichen Variationen der PRAM führen bei konkreten Algorithmen zu unterschiedlichen Komplexitäten im Ressourcenverbrauch. So ist der oben angegebene Algorithmus zur Maximumsuche wie beschrieben auf gleichzeitigen Lese- und Schreibzugriff angewiesen, also auf eine CRCW PRAM. Auf einer PRAM, die dies nicht erlaubt, wäre eine Lösung in konstanter Zeit somit nicht möglich. Welches PRAM-Modell man für eine konkrete Untersuchung auswählt, hängt also von den Analysezielen ab, die man damit verfolgt.


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Pram — steht für: Schiffe ohne eigenen Antrieb #Prahm, ähnlich einem Ponton geographisch: Pram (Oberösterreich), Marktgemeinde in Oberösterreich Pram (Bayerbach), Ortsteil der Gemeinde Bayerbach bei Ergoldsbach, Bayern Pram (Fluss), Nebenfluss des Inn… …   Deutsch Wikipedia

  • Pram — may refer to:* A conveyance for baby transport, perambulator in full * A term used for a stretcher within emergency medical services * Pram suit, a one piece garment for infants * Pram (band), an electronica band formed in the 1990s * Pram (ship) …   Wikipedia

  • pram — pram1 [präm] n. [Du praam < MLowG prom < Czech prám, ult. < IE base * per , to go (see FARE) > FERRY] a small, flat bottomed boat usually with a square bow; now sometimes, specif., a sailboat made like this pram2 [pram] n. [altered… …   English World dictionary

  • Pram — (pr[a^]m), Prame Prame (pr[=a]m), n. (Naut.) See {Praam}. [1913 Webster] …   The Collaborative International Dictionary of English

  • Pram — (pr[a^]m), n. a {perambulator[3]}; British informal shortened form. [PJC] …   The Collaborative International Dictionary of English

  • pram — ● pram nom masculin (norvégien pram) Bateau de pêche norvégien, non ponté …   Encyclopédie Universelle

  • pram — S3 [præm] n BrE a small vehicle with four wheels in which a baby can lie down while it is being pushed American Equivalent: baby carriage →↑buggy ▪ a young woman pushing a pram …   Dictionary of contemporary English

  • pram — (n.) baby carriage, 1884, shortening of PERAMBULATOR (Cf. perambulator), perhaps influenced by pram flat bottomed boat (1540s), from O.N. pramr, from Balto Slavic (Cf. Pol. prom, Rus. poromu ferryboat ) …   Etymology dictionary

  • pram — sb., men, me, mene (en båd), i sms. pram , fx pramdrager …   Dansk ordbog

  • Pram — Pram, Christ. Henricksen, geb. 1756 zu Lesia in Güldbrandsdal in Norwegen, war 1787–1815 beim Commerzcollegium in Kopenhagen angestellt u. wurde 1819 Zolldirector auf St. Thomas, wo er 1821 starb. Er schr. eine Heroide an Erich (1779); Das Epos… …   Pierer's Universal-Lexikon

  • Pram — Pram, Christen Henriksen, dän. Dichter, geb. 1756 in Norwegen, gest. 1821 als Beamter auf der westind. Insel St. Thomas, besonders durch komische und satirische Gedichte bekannt. (Schönwissenschaftliche Werke in 6 Bdn. durch Rahbek, Kopenh.… …   Herders Conversations-Lexikon

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”