[Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 ||...

22
Kapitelll Verwaltung der Parallelitat Jede Parallelverarbeitung ist mit einem zusatzlichen Organisationsaufwand ver- bunden, der durch die notwendige Kommunikation und Synchronisation zwischen den unabhangig arbeitenden Einheiten entsteht. In unserer parallelen abstrak- ten Maschine wird diese Organisationsarbeit soweit wie moglich von den Kom- munikationseinheiten geleistet, damit der ReduktionsprozeB, also die Programm- ausfiihrung moglichst wenig durch die Parallelisierung behindert wird. Die von den Reduktionsarbeiten zu leistende Mehrarbeit besteht aus der Annahme von Antwort- und Aktivierungsnachrichten sowie cler Beantwortung von Anfragenach- richten. Zur Bearbeitung dieser Nachrichten sind Zugriffe auf die Graphkompo- nente im lokalen Speicher der Reduktionseinheit erforderlich. Eine Auslagerung dieser Arbeiten in die Kommunikationseinheiten wiirde erfordern, daB der Graph im gemeinsamen Speicher von Kommunikations- und Reduktionseinheit liegt. Dies wiirde allerdings die Zugriffsmoglichkeiten der Reduktionseinheit auf den Graphen erheblich beschranken. Da der gesamte ReduktionsprozeB durch die im Graphen abgelegten Informationen gesteuert wird und somit fast jede Zustandstransforma- tion der Reduktionseinheit einen Zugriff auf den Graphen erfordert, verzichten wir auf eine vollstandige Auslagerung der Verwaltung der Parallelitat in die Kommu- nikationseinheiten. Wir beginnen in diesem Kapitel mit der Beschreibung der Nachrichtenverwal- tung in den Reduktionseinheiten. Sodann wenden wir uns der Spezifikation der Kommunikationseinheiten zu und beschlieBen dieses Kapitel mit der formalen Be- schreibung der gesamten parallelen abstrakten Maschine als nichtdeterministisches Transitionssystem. R. Loogen, Parallele Implementierung funktionaler Programmiersprachen © Springer-Verlag Berlin Heidelberg 1990

Transcript of [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 ||...

Page 1: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

Kapitelll

Verwaltung der Parallelitat

Jede Parallelverarbeitung ist mit einem zusatzlichen Organisationsaufwand ver­bunden, der durch die notwendige Kommunikation und Synchronisation zwischen den unabhangig arbeitenden Einheiten entsteht. In unserer parallelen abstrak­ten Maschine wird diese Organisationsarbeit soweit wie moglich von den Kom­munikationseinheiten geleistet, damit der ReduktionsprozeB, also die Programm­ausfiihrung moglichst wenig durch die Parallelisierung behindert wird. Die von den Reduktionsarbeiten zu leistende Mehrarbeit besteht aus der Annahme von Antwort- und Aktivierungsnachrichten sowie cler Beantwortung von Anfragenach­richten. Zur Bearbeitung dieser Nachrichten sind Zugriffe auf die Graphkompo­nente im lokalen Speicher der Reduktionseinheit erforderlich. Eine Auslagerung dieser Arbeiten in die Kommunikationseinheiten wiirde erfordern, daB der Graph im gemeinsamen Speicher von Kommunikations- und Reduktionseinheit liegt. Dies wiirde allerdings die Zugriffsmoglichkeiten der Reduktionseinheit auf den Graphen erheblich beschranken. Da der gesamte ReduktionsprozeB durch die im Graphen abgelegten Informationen gesteuert wird und somit fast jede Zustandstransforma­tion der Reduktionseinheit einen Zugriff auf den Graphen erfordert, verzichten wir auf eine vollstandige Auslagerung der Verwaltung der Parallelitat in die Kommu­nikationseinheiten.

Wir beginnen in diesem Kapitel mit der Beschreibung der Nachrichtenverwal­tung in den Reduktionseinheiten. Sodann wenden wir uns der Spezifikation der Kommunikationseinheiten zu und beschlieBen dieses Kapitel mit der formalen Be­schreibung der gesamten parallelen abstrakten Maschine als nichtdeterministisches Transitionssystem.

R. Loogen, Parallele Implementierung funktionaler Programmiersprachen© Springer-Verlag Berlin Heidelberg 1990

Page 2: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.1. NACHRICHTENVERWALTUNG - REDUKTIONSEINHEITEN 317

11.1 N achrichtenverwalt ung in den Red uktions­einheiten

Die Nachrichtenbearbeitung erfolgt in den Reduktionseinheiten im Kommunikati­onsmodus, in den sofort, wenn eine Nachricht von der Kommunikationeinheit in die Nachrichtenschlange des gemeinsamen Speichers geschrieben wird, gewechselt wird. Vier verschiedene Arten von Nachrichten werden in der abstrakten Maschine zwischen den Reduktionseinheiten ausgetauscht - Prozefinachrichten, Anfrage-, Aktivierungs- und Antwortnachrichten (siehe Definition 10.3.5)

Eine Prozepnachricht wird nur dann von der Kommunikationseinheit an die Re­duktionseinheit weitergeleitet, wenn das Prozefianforderungsflag im gemeinsamen Speicher von der Reduktionseinheit gesetzt wurde. Die Kommunikationseinheit setzt das Flag immer, wenn sie eine Nachricht an die Reduktionseinheit schickt oder weiterleitet, zuriick, da jede Nachricht zur Aktivierung oder Reaktivierung lokaler Tasks fiihren kann. Dies bedeutet, dafi die Reduktionseinheit beim Erhalt einer Prozefinachricht auf jeden Fall im Wartemodus ist. Je nachdem, ob der in der Nachricht beschriebene Prozefi global oder lokal ist (d.h. eine globale oder lokale Heimatadresse hat), wird ein neuer aktiver Taskknoten generiert oder der existierende Verweisknoten mit einem Taskknoten iiberschrieben. Der 'active task pointer' wird mit der Adresse des Taskknoten belegt. Der Kommunikationsmodus bleibt zunachst bestehen. Erst wenn keine weitere Nachricht im Nachrichtenpuffer enthalten ist, wird in den Reduktionsmodus gewechselt.

Bei der Bearbeitung einer A nfragenachricht iiberpriift der Reduktionsprozessor zunachst den Graphknoten, auf den sich die Anfrage bezieht. Handelt es sich urn einen Terminalknoten, so kann die Anfragenachricht sofort beantwortet werden. Anderenfalls mufi die Beantwortung solange verzogert werden, bis die Auswertung des entsprechenden Teilgraphen bis zur Kombinatornormalform abgeschlossen ist. Dies geschieht, indem die Adresse, an die die Antwort geschickt werden solI, in der Liste der globalen Adressen des in Auswertung befindlichen Task- oder Verweis­knoten notiert wird. Natiirlich ist es moglich, dafi die Auswertung erst durch die Anfragenachricht, die ja insbesondere einen Auswerter enthalt, angestofien wird.

1st die Anfragenachricht an einen Verweisknoten gerichtet, dessen globale Adresse bekannt ist, so wird sie an diese globale Adresse weitergeleitet, damit die Beant­wortung der Anfrage in direkter Weise erfolgen kann.

Eine Aktivierungsnachricht hat denselben Effekt wie die Ausfiihrung einer INIT ARG- oder INITLOC-Instruktion. Schlafende Taskknoten werden indirekt parallel aktiviert. Argumentknoten werden lokal aktiviert. In aktiven Taskkno­ten und Verweisknoten ohne Adressenangabe wird gegebenenfalls der Auswerter

Page 3: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

318 KAPITEL 11. VERWALTUNG DER PARALLELITAT

erhoht. Fiir Datenstrukturknoten, deren Auswerter erhoht wird, erfolgt ein ent­spreehender Eintrag in der Aktivierungsliste.

Eine A ntwortnachricht hat zunaehst zur Folge, dafi der 'pending count' aller in der lokalen Adressenliste des adressierten Verweisknotens vermerkten Taskknoten dekrementiert wird und dafi die Antwortnachricht an alle in der globalen Adres­senliste vermerkten Adressen weitergeleitet wird. Wird der 'pending count' einer lokalen Task dureh das Dekrementieren zu Null, so wird die Adresse der Task in die lokale Taskwarteschlange geschrieben. Zuletzt wird der Verweisknoten mit dem in der Antwortnaehricht enthaltenen Terminalknoten iibersehrieben.

11.1.1 Definition 1m Kommunikationsmodus sind fiir die j-te Reduktionsein­heit RE j folgende Zustandsiibergange moglich:

1. Bearbeitung einer Prozepnachricht

( (em, nil, G, gp, €, €, ps), ([PROCESS, F, arglist, ~, art, hadr]: red-q, eom-q, false) )

I- G[gp/([TASK,F,arglist, (~,ea-e(F,~,art),€, €, 0, €,hadr))], {((em, gp,

RE, gp+l, €, €, ps), (red-q, eom-q, false) )

falls hadr ¢ {(j, ladr) Iladr E LAdr}

G[ladr/([TASK,F,arglist,(t', ea-e(Fl',art),€, €,O,lq,gq ))], {((em,ladr,

gp, €, €, ps), (red-q, eom-q, false))

falls hadr = (j, ladr) G(ladr) = (INDIRECTION, ?, t, lq, gq) und €, = max{C,€},

wobei ps = ( ea-e, ea-f, rg, e-evt, e ) sei.

2. Bearbeitung einer A nfragenachricht

( (em, atp, G, gp, ltq, al, ps), ([REQUEST, (j, ladr), ~, gadr]:red-q, eom-q, false) )

I- {((em, atp, G, gp, ltq, al, ps), RE, (red-q, eom-q: [ANSWER, gadr, G(1adr)], false) )

falls G(ladr) E Terminalnodes, aber G(ladr) ist nieh! Strukturdatenknoten mit Auswerter ~ < ~.

Page 4: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.1. NACHRICHTENVERWALTUNG - REDUKTIONSEINHEITEN 319

{ ((em, atp, G[ladr/(SDATA, c, arglist, ~)],

I- gp, ltq, al: (ladr, e-evt(c,~)), ps), REJ (red-q, eom-q: [ANSWER, gadr, (SDATA, c, arglist, ~)],

false) )

~RE, {

falls G(ladr) = (SDATA, c, arglist, () mit ( < ~, ps=(ea-e,ea-f,rg,e-evt,e).

((em, atp, G[ladr/(INDIRECTION, ?, ~, E, gadr)], gp, ltq, al, ps),

(red-q, eom-q: [PROCESS,F,arglist,~,indir,(j,ladr)l, false) ) falls G(ladr) = (TASK, F, arglist, ~o)

{((em, atp, G[ladr/(TASK,arg,arglist'(~i' Ii, E,lv,O,E,gadr))],

gp, ltq: ladr, al, ps), (red-q, eom-q, false) ),

falls G(ladr)= (ARGUMENT, (arglist,lv) ,(It , 12 , 13 ))

und ~ = ~i mit i E {1,2,3}.

{

((em, atp, G[ladr/(TASK, IL, arglist, (€', ip, ds, lv, pe, lq, gq: gadr)], gp, Itq, aI, ps),

(red-q, eom-q, false) ),

~RE, {

falls G(ladr) = (TASK, IL, arglist, ((, ip, lv, pe, lq, gq ))

und €':= max{(,~}.

((em, atp, G[ladr/(INDIRECTION, ?, (', lq, gq: gadr)], gp, ltq, al, ps),

(red-q, eom-q, false) ), falls G (ladr) =

(INDIRECTION, ?, (, lq, gq) und €' = max{(,O.

((em, atp, G[ladr/(INDIRECTION, adr, t', lq, gq)], gp, Itq, aI, ps),

(red-q, eom-q: [REQUEST,adr'(',gadr], false) ), falls G(ladr) =

(INDIRECTION, adr, t, lq, gq) mit adr f. ? und €' = max{~,€}.

Page 5: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

320 KAPITEL 11. VERWALTUNG DER PARALLELITAT

r {((em, atp, G, gp, hq, aI, ps), RE, ([REQUEST, (j, ladr'), ~, gadr]: red-q, eom-q, false) ),

falls G(ladr) = (LOCAL-IND, ladr').

3. Bearbeitung einer Aktivierungsnachricht

( (em, atp, G, gp, hq, aI, ps), ([INITIATE, (j, ladr'), ~]: red-q, eom-q, false) ),

((em, atp, G, gp, hq, aI, ps), (red-q, eom-q, false) ),

falls G(ladr) E Terminalnodes, aber G(ladr) ist nicht Strukturdatenknoten mit Auswerter ~ < ~.

{((em, atp, G[ladr/(SDATA, c, arglist, ~)],

rRE, gp, hq, al: (ladr, e-evt(c,O), ps), (red-q, eom-q, false) )

~RE, {

falls 9(ladr) = (SDATA, c, arglist, ~) mit ~ <~, ps = ( ea-e, ea-f, rg, e-evt, e ).

((em, atp, G[ladr/(INDIRECTION, ?, ~, €, E)], gp, hq, al, ps),

(red-q, eom-q: [PROCESS,F,arglist,~,indir,(j,ladr)], false) ) falls G(ladr) = (TASK, F, arglist, ~o).

{((em, atp, G[ladr/(TASK, arg, arglist, (~i,li,€,lv,O,€,€))],

rRE, gp,ltq: ladr, aI, ps), (red-q, eom-q, false) ),

falls G (ladr) = (ARGUMENT,(arglist,lv),(h, 12 , 13 ))

und ~ = ~i mit i E {1,2,3}.

{((em, atp, G[ladr/(TASK,jl,arglist,(~', ip, ds, lv, pe, lq, gq)],

rRE, gp, hq, aI, ps), (red-q, eom-q, false) ),

falls G(ladr) = (TASK, jl, arglist, (~, ip, lv, pe, lq, gq))

und ~, := max{~,~}

Page 6: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.1. NACHRICHTENVERWALTUNG - REDUKTIONSEINHEITEN 321

((cm, atp, G[ladr/(INDIRECTION, adr, e', lq, gq)), gp, ltq, al, ps),

(red-q, com-q, false) ), falls G (ladr) =

(INDIRECTION, adr, e, lq, gq) mit (adr = ? oder ~ ~ e) und e' = max{e,O·

((cm, atp, G[ladr/(INDIRECTION,adr,~,lq,gq)), gp, ltq, aI, ps),

(red-q, com-q:[INITIATE,adr,~), false) ), falls G (ladr) =

(INDIRECTION, adr, e, lq, gq) mit adr "I ? und ~ > {

f- {((cm, atp, G, gp, ltq, al, ps), REJ ([INITIATE, (j, ladr'), ~): red-q, com-q, false) ),

falls G(ladr) = (LOCAL-IND, ladr').

4. Bearbeitung einer Antwortnachricht

((cm, atp, G[ladr/ (INDIRECTION, adr', e, ladrl ... ladr[, gadr1 ... gadrk)), gp, ltq, aI, ps),

([ANSWER, (j, ladr), tnode): red-q, com-q, false) )

((cm, nil, G[ladr /tnode,

ladrl/(TASK,/Ll, arglist1, (e, iPl' ds1, IV1,PC1 - 1, lql' gql))'

ladrl/(TASK,/L[, arglist[, (e, ip[, ds[, lVI, pc[ - 1, lq[, gq[))), gp, ltq: ladril" .ladrim' al, ps),

(red-q, com-q: [ANSWER, gadrl' tnode') ...

mit tnode' = {

[ANSWER, gadrk' tnode')' false) ) (SDATA, c, arglist, e)

falls tnode = (SDATA, c, arglist, ~) mit ~ < e

tnode sonst. und G(ladrd = (TASK, /Li,arglisti,(e,pi,dsi,lvi,pci,lqi,gqi))

mit pCi > 0 (1 ~ i ~ l) und {iadrill" ., ladrim} :=

{ladri 11 ~ i ~ l,pci = ~ladr.(ladrl" . 1adrl)} ,

Page 7: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

322 KAPITEL 11. VERWALTUNG DER PARALLELITAT

wobei ~ladr. (ladrl ... ladrm ) die Anzahl der Vorkommen von ladri in ladrl ... ladrt bezeichne, und

{ al: (ladr, c-evt( c, ~)) falls ~ > e und

aI' := tnode=(SDATA,c,arglist', ~), al sonst.

5. Riickkehr in den Reduktionsmodus

( (em, atp, G, gp, ltq, aI, ps), (E, com-q, false) ) f-REJ ((rm, atp, G, gp, ltq, aI, ps), (E, com-q, false) )

Die Arbeit, die von der Reduktionseinheit im Kommunikationsmodus geleistet wird, entspricht dem Mehraufwand, der auf der sequentiellen Ebene fUr die Par­allelisierung aufgebracht werden muB. Wie man leicht an Hand der Definition der Ubergangsrelation f-REJ (1 ~ j ~ n) iiberpriift, arbeitet jede Reduktionseinheit deterministisch.

11.1.2 Lemma Fiir j E {I, ... ,n} ist REj ein deterministisches Transitionssy­stem d.h. zu jedem st E L8tRE x 8M gibt es hOchstens ein st' E L8tRE x 8M, so daB gilt:

st f-REJ st'.

Damit schlieBen wir die formale Spezifikation der Reduktionseinheiten ab und wenden uns den Kommunikationseinheiten zu.

11.2 Der Kommunikationsprozessor

In Abschnitt 9.2 haben wir bereits einen Uberblick iiber den Aufbau und die Aufgaben der Kommunikationseinheiten gegeben. Jede Kommunikationseinheit besteht aus zwei Prozessoreinheiten - dem Netzwerkadapter und dem Kommu­nikationsprozessor, die wiederum iiber einen gemeinsamen Speicherbereich Nach­richten austauschen konnen.

Wie schon die Reduktionseinheiten spezifizieren wir auch die Prozessoreinhei­ten der parallelen Ebene als Transitionssysteme. Wir beginnen in diesem Abschnitt mit der formalen Beschreibung des Kommunikationsprozessors, dessen Hauptauf­gabe die Verteilung der parallelen Prozesse und damit verbunden der dynamische Ausgleich der Arbeitslasten ist. Urn zu entscheiden, welche Prozesse an welche Prozessorelemente verteilt werden, benotigt der Kommunikationsprozessor Infor­mationen iiber die Topologie des Verbindungsnetzwerkes, die Arbeitslast anderer Prozessoreinheiten und selbstverstandlich seine eigene Auslastung. Da wir in der parallelen Maschine von der Topologie des Verbindungsnetzwerkes abstrahieren,

Page 8: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.2. SPEZIFIKATION DES KOMMUNIKATIONSPROZESSORS 323

werden wir auch keinerlei Annahmen und Aussagen iiber den eigentlichen AIgo­rithmus, der zur Prozefiverteilung eingesetzt wird, machen. Wir beschreiben also lediglich die organisatorischen Aspekte und die prinzipielle Arbeitsweise des Kom­munikationsprozessors.

Der Kommunikationsprozessor hat auf drei separate Speicherbereiche Zugriff (siehe Bild 11.1):

• auf den gemeinsamen Speicher mit der Reduktionseinheit,

• auf seinen lokalen Speicherbereich und

• auf den gemeinsamen Speicher mit dem Netzwerkadapter.

Der lokale Speicherbereich enthalt im wesentlichen zwei Komponenten:

• eine Warteschlange fiir Prozesse und

• Informationstabellen.

Ein lokaler Zustand des Kommunikationsprozessors hat also die Form

( pq, inftab ),

wobei pq fiir die Prozefiwarteschlange (process queue) und inftab fiir die Informa­tionstabellen steht.

Die Prozepschlange enthalt aktivierte, aber noch nicht gestartete parallele Pro­zesse, in Form von Prozefinachrichten. Diese Prozesse sind zur AusfUhrung in der Reduktionseinheit bestimmt. Auf Grund des dynamischen Arbeitslastenausgleichs ist es aber moglich, dafi Prozesse aus der Warteschlange zu anderen Prozessorele­menten geschickt werden. Aus diesem Grunde befindet sich die Warteschlange mit den noch nicht gestarteten Prozessen in dem lokalen Speicherbereich des Kommu­nikationsprozessors und nicht etwa im Speicher der Reduktionseinheit.

Alle noch nicht gestarteten Prozesse bleiben auf diese Weise solange wie moglich verlagerbar. Zur Vereinfachung sehen wir in der abstrakten Maschine davon ab, Prozesse, deren Ausfiihrung begonnen wurde, auf andere Prozessorelemente zu verlagern. Dies erscheint uns nur in Ausnahmesituationen sinnvoll, auf deren Behandlung wir auf dem Level der abstrakten Maschine verzichten mochten.

Die AusfUhrung eines parallelen Prozesses wird in der abstrakten Maschine also immer in der Reduktionseinheit beendet, in der sie begonnen wird. Unter Beginn der Ausfiihrung verstehen wir dabei natiirlich nicht die Aktivierung eines Prozesses, sondern den Zeitpunkt, an dem fUr den Prozefi ein aktiver Taskknoten erzeugt wird.

Page 9: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

324

Inports 1 1 I

Netzwerk-

adapter

Kommunika-

tions- i----"'

prozessor

Reduktions-

prozessor ..----.

KAPITEL 11. VERWALTUNG DER PARALLELITAT

Outports

i

* Eingabe-schlange

~

I

~ Red.-

schlange

1 Zeiger auf aktive Task

Programm-speicher

1

i t

Ausgabe- Prozefi-schlange warte-

schlange

i t

Informationstabellen I

Kom.- D schlange Flag zur

D Prozefi-anforderung

Arbeits-modus

Graph

* 11\1 (

~ ~ lokale Task-

I I l I I warte-"- schlange

1 * I

-I Aktivierungsliste -

K o M M U N I K A T I o N S E I N H E I T

R E D U K T I o N S E I N H E I T

Bild 11.1: Gesamtzustandsraum eines Prozessorelementes

Page 10: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.2. SPEZIFIKATION DES KOMMUNIKATIONSPROZESSORS 325

Zu den In/ormationstabellen ziihlen wir aIle Komponenten und Strukturen, die der Kommunikationsprozessor zur ProzeBverteilung benotigt. Dazu gehoren stati­sche Informationen tiber die Vernetzung, also etwa die Anzahl und Nummern der direkten Nachbarprozessorelemente, aber auch dynamische Informationen, etwa tiber die Arbeitslast der tibrigen Prozessorelemente, sofern solche Informationen durch Kommunikation verfiigbar gemacht werden konnen.

Wie bereits gesagt, gehen wir nicht auf Arbeitsverteilungsstrategien ein. Mit Sicherheit werden die Kommunikationsprozessoren mittels spezieller Nachrichten kommunizieren, mit denen sie Informationen iiber die Arbeitslasten austauschen. Wir nennen diese Nachrichten Verwaltungsnachrichten. Ein einfaches Beispiel fUr solche Verwaltungsnachrichten sind Arbeitsanfragenachrichten, mit denen Pro­zessorelemente, die ohne Arbeit sind, von anderen Prozessorelementen Prozesse anfordern konnen. Kommunikationsprozessoren, die eine solche Arbeitsanfrage erhalten, konnen dann, wenn es ihnen moglich ist, Prozesse abzugeben, die Ar­beitsanfrage mit einem oder mehreren Prozessen beantworten oder anderenfalls eine negative Antwortnachricht senden und/oder einen entsprechenden Vermerk in den Informationstabellen vornehmen.

11.2.1 Definition Der lokale Zustandsraum emes Kommunikationsprozessors LStcp (local store) wird definiert durch

LStcp := ProMes* x In/Tab,

wobei ProMes die Menge der ProzeBnachrichten ist (siehe Definition 10.3.5) und In/Tab eine Menge von Informationstabellen ist, die nicht weiter spezi­fiziert wird.

Der gemeinsame Speicher von Kommunikationsprozessor und Netzwerkadapter enthalt zwei Nachrichtenwarteschlangen zur Ein- und Ausgabe von Nachrichten. Der Zustand des Speichers hat also die allgemeine Form

( in-q, out-q ).

Die Eingabewarteschlange (in-q) wird vom Netzwerkadapter mit Nachrichten, die iiber das Netz an das Prozessorelement geschickt werden, beschrieben. Diese Nach­richten sind entweder Reduktionsnachrichten, die bis auf die ProzeBnachrichten an die Reduktionseinheit weitergeleitet miissen oder Verwaltungsnachrichten, die vom Kommunikationsprozessor selbst bearbeitet werden.

Die Eintdige in der Ausgabenachrichtenwarteschlange (out-q) sind Paare be­stehend aus einer Prozessornummer und einer Nachricht. Die Prozessornummer identifiziert das Prozessorelement, an das die Nachricht geschickt werden solI. Wir bezeichnen diese Paare als Netznachrichten, da die Nachrichten in dieser Form durch die Kanale des Netzwerkes geschickt werden.

Page 11: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

326 KAPITEL 11. VERWALTUNG DER PARALLELITAT

11.2.2 Definition Der gemeinsame Speicher von Netzwerkadapter und Kommu­nikationsprozessor SM 10 wird definiert durch:

SMIO := Inputqueue X Outputqueue,

wobei

• Inputqueue := Messages· und

• Outputqueue:= Netmes· sei.

Netmes := {I, ... , n} x Messages bezeichnet dabei die Menge der Netznach­richten (net messages) und

Messages:= RedMes U AdminMes die Menge der Nachrichten schlechthin.

Die Menge RedMes der Hauptnachrichten wurde in Definition 10.3.5 defi­niert.

Die Menge AdminMes der Verwaltungsnachrichten (administration messa­ges) wird nicht weiter spezifiziert.

Die Zustandiibergange des Kommunikationprozessors sind bestimmt durch die Nachrichten, die an ihn iibermittelt werden. Das sind zum einen die Nachrichten von der Reduktionseinheit und die N achrichten von anderen Prozessorelementen. Wir werden in der Spezifikation des Prozessors keine Reihenfolge zur Bearbeitung der beiden Nachrichteneingaben vorgeben. Aus diesem Grunde ist das Thansiti­onssystem des Kommunikationsprozessors nichtdeterministisch.

11.2.3 Definition Sei j E {I, ... , n}.

Der j-te Kommunikationsprozessor CPj wird als Thansitionssystem

CPj:= (SM x LStcp x SMIO,f-cp"INcp,)

mit der Zustandsmenge SM x LStcp x SMIO,

der Ubergangsrelation

f-cp, ~ (SM x LStcp x SMIO ) x (SM x LStcp x SMIO )

und der Anfangszustandsmenge IN cp, ~ (SM x LStcp x SMIO)

definiert.

Die Ubergangsrelation werden wir im folgenden Abschnitt definieren.

Die Anfangszustandsmenge legen wir wie folgt fest:

IN ._ { {«(€,€,false),(€,inftab),(€,€)) I inftab E Inftab} fallsj = 1, cp,.- {«(€, €, true), (€,inftab),(€,€)) I inftab E Inftab} sonst.

Page 12: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.3. NACHRICHTENVERWALTUNG 327

Die Definition der Anfangszustande ist konsistent mit der Festlegung der An­fangszustande der Reduktionseinheiten. Die Berechnung startet auf dem Prozes­sorelement 1, in dessen Speicher das ProzeBanforderungsfiag daher nicht gesetzt ist. AIle Nachrichtenpuffer und Warteschlangen sind zu Beginn einer Berechnung leer. Die Ubergangsrelation des Kommunikationsprozessors wird im nun folgenden Abschnitt definiert.

11.3 Verwaltung der Nachrichten im Kommuni­kationsprozessor

Die Nachrichten, die dem Kommunikationsprozessor von der Reduktionseinheit iibermittelt werden, miissen bis auf die ProzeBnachrichten nur in eine Netznach­richt eingebettet und an den Netzwerkadapter weitergeleitet werden. Dazu wird aus der Zieladresse der jeweiligen Nachricht, die immer in der zweiten Komponente der Aktivierungs-, Anfrage- oder Antwortnachrichten gegeben ist, die Prozessor­nummer herausgeblendet und der Nachricht vorangestellt.

ProzeBnachrichten werden gesondert behandelt. Mittels des ProzeBverteilungs­algorithmus, den wir als Funktion

distribute: PraMes x LStcp -t {I, ... ,n} x In/Tab

vorgeben, wird zu der ProzeBnachricht unter Beriicksichtigung des lokalen Zustan­des die Nummer des Prozessorelementes bestimmt, an das der ProzeB weitergeleitet werden solI. Dies kann durchaus die eigene Prozessornummer sein. In diesem Fall wird die ProzeBnachricht in die ProzeBwarteschlange geschrieben. Anderenfalls wird sie in eine Netznachricht eingebettet und in die Ausgabewarteschlange ge­schrieben. Die getroffene Entscheidung kann in den Informationstabellen vermerkt werden. Daher hat die Funktion distribute den Bereich der Informationstabellen als zweite Komponente in ihrem Wertebereich.

Eine spezielle Mitteilung der Reduktionseinheit an den Kommunikationspro­zessor ist das Set zen des ProzeBanforderungsfiags. Wird dieses Flag gesetzt, so sendet der Kommunikationsprozessor, falls die ProzeBwarteschlange in seinem 10-kalen Speicher nicht-Ieer ist, den erst en ProzeB dieser Warteschlange an die Re­duktionseinheit und setzt das Flag zuriick.

Anderenfalls bearbeitet er zunachst die Nachrichten, die von anderen Prozes­sorelementen geschickt worden sind, da unter diesen ProzeB- oder andere Reduk­tionsnachrichten sein konnen, die ebenfalls zur Aktivierung oder Reaktivierung von Berechnungen fiihren konnen. Falls auch die Eingabewarteschlange leer ist, wird anhand der in den Informationstabellen gegebenen Informationen entschieden, ob

Page 13: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

328 KAPITEL 11. VERWALTUNG DER PARALLELITAT

Verwaltungsnachrichten, etwa Arbeitsanforderungsnachrichten an andere Prozes­sorelemente geschickt werden sollen. Wir geben diesen Entscheidungsalgorithmus wiederum als Funktion

getwork j : InfTab -+ (({I, ... , n} \ {j}) X AdminMes)* X InfTab

vor, die anhand der Informationstabellen geeignete Verwaltungsnachrichten an andere Prozessoren generiert und die Informationstabellen aktualisiert.

11.3.1 Definition "N achrichten" von der Reduktionseinheit bewirken folgende Zustandsiibergange des j-ten Kommunikationsprozessors (1 ::; j ::; n):

1. Bearbeitung von Anfrage-, Antwort- oder Aktivierungsnachrichten

( (red-q, mes:com-q, next), (pq, inftab), (in-q, out-q) } rcP) ( (red-q, com-q, next), (pq, inftab), (in-q, out-q:[pnr, mes]) }

falls mes E RedMes \ ProMes und proj2(mes) = (pnr, ladr) E GAdr.

2. Verteilung von Prozessen

( (red-q, pmes:com-q, next), (pq, inftab), (in-q, out-q) }

I-cPJ

((red-q, com-q, next), (pq:pmes, inftab'), (in-q, out-q)} falls pmes E ProMes und distribute(pmes, (pq, inftab)) = (j, inftab'),

((red-q, com-q, next), (pq, inftab'), (in-q, out-q:[pnr, pmes])} falls pmes EProM es und distribute(pmes, (pq, inftab)) = (pnr, inftab'). mit pnr =I j

Die Funktion

distribute: ProMes xLStcp -+ {l, ... ,n} X InfTab

repdisentiert dabei den Algorithmus zur Prozefiverteilung, von dessen spezieller Struktur abstrahiert wird.

3. Weiterleiten eines Prozesses an die Reduktionseinheit

( (f, com-q, true), (pmes:pq, inftab), (in-q, out-q) } rcp; ( (pmes, com-q, false), (pq, inftab), (in-q, out-q) }

Page 14: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.3. NACHRICHTENVERWALTUNG 329

4. Reaktion auf fehlende A rbeit

( (E,E, true), (E, inftab), (E, out-q) ) I-cp, ( (E, E, true), (E, inftab'), (E, out-q:mesl : ... : mesk) ),

wobei (mesl : ... : meSk, inftab') := getworkj(inftab), also k ~ 0, mesi E ({I, ... , n} \ {j}) x AdminMes.

Aktivierungs-, Antwort- und Anfragenachrichten von anderen Prozessorele­menten werden vom Kommunikationsprozessor lediglich an die Reduktionseinheit weitergeleitet, d.h. in die entsprechende Nachrichtenschlange des gemeinsamen Speicher geschrieben. Das Weiterleiten einer Nachricht an die Reduktionseinheit fiihrt immer zum Zuriicksetzen des Prozefianforderungsflags, da Aktivierungs- und Anfragenachrichten Argumentberechnungen aktivieren konnen und Antwortnach­richten zur Reaktivierung suspendierter Tasks fiihren konnen.

Prozefinachrichten werden La. in die Prozefiwarteschlange geschrieben. Nur wenn das Prozefianforderungsflag gesetzt ist, wird eine Prozefinachricht direkt an die Reduktionseinheit weitergeleitet.

Verwaltungsnachrichten werden vom Kommunikationsprozessor verarbeitet. Zur Spezifikation geben wir eine allgemeine Funktion

handle-admin-message: AdminMes x LStcp --+ ({I, ... ,n} x Messages)* x LStcp

vor, die zu einer Verwaltungsnachricht und einem lokalen Zustand eine Folge von Netznachrichten und einen Folgezustand angibt.

Zum Beispiel konnte diese Funktion zu einer Arbeitsanfragenachricht aus der Prozefiwarteschlange eine Prozefinachricht wahlen und diese als Antwort auf die Arbeitsanfrage senden.

11.3.2 Definition "Nachrichten" von anderen Prozessorelementen bewirken fol­gende Zustandsiibergange des Kommunikationsprozessors

1. Bearbeitung von externen Arbeits-, Anfrage- und Aktivierungsnachrich­ten:

( (red-q, com-q, next), (pq, inftab), (mes: in-q, out-q) } I-cp, ( (red-q, mes:com-q, false), (pq, inftab), (in-q, out-q) }

falls mes E RedMes \ ProMes.

2. Bearbeitung von externen Prozepnachrichten

( (red-q, com-q, next), (pq, inftab), (pmes:in-q, out-q) )

{

(( red-q, com-q, false), (pq:pmes, inftab), (in-q, out-q) ) I- falls pmes E ProMes und next = false,

cP, ( (pmes, com-q, false), (pq, inftab) , (in-q, out-q) ) falls pmes E ProMes und next = true.

Page 15: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

330 KAPITEL 11. VERWALTUNG DER PARALLELITAT

3. Bearbeitung von Verwaltungsnachrichten

( (red-q, com-q, next), (pq, inftab), (ames: in-q, out-q) ) I-cp, ( (red-q, com-q, next), (pq', inftab'),

Die F\lllktion

(in-q, out-q: mesl : ... : mesk))

falls ames E AdminM es und (mesl : ... : meSk, (pq', inftab')) :=

handle-admin-message (ames, (pq, inftab)) ,

handle-admin-message: AdminMes x LStcp ~ ({1, ... ,n} x Messages)* x LStcp

wird nicht weiter spezifiziert.

Damit haben wir die prinzipielle Organisation der Nachrichtenbearbeitung des Kommunikationsprozessors vollstandig beschrieben. Das Transitionssystem des Kommunikationsprozessors ist nichtdeterministisch, da wir keinerlei Vorgaben tiber die Reihenfolge der Bearbeitung von Nachrichten der Reduktionseinheit oder anderer Prozessorelemente gemacht haben. Wir fahren nun fort mit der Spezifi­kation des zweiten Prozessors in der Kommunikationseinheit.

11.4 Spezifikation des N etzwerkadapters

Der Netzwerkadapter ist das Bindeglied zwischen dem Netzwerk und dem Kommu­nikationsprozessor. Auf dem hier betrachteten Abstraktionslevel hat er keinen 10-kalen Speicher, sondern lediglich Zugriff auf die Nachrichtenwarteschlangen im mit den Kommunikationsprozessor geteilten Speicher sowie auf die N etzanschlufistel­len, die wir als "In-" bzw. "Outports" bezeichnen.

Da wir von der speziellen Struktur des Verbindungsnetzwerkes abstrahieren, hat jedes Prozessorelement zu jedem anderen Prozessorelement eine direkte Kopp­lung, d.h. jedes Prozessorelement hat n -1 'Inports' und n -1 'Outports', wobei, wie wir spater sehen werden, das i-te 'Inport' von Prozessorelement j =f=. i mit dem j-ten 'Outport' von Prozessorelement i gekoppelt ist (1 $ i =f=. j $ n).

Wir bezeichnen verbundene Ports in den Spezifikationen mit denselben Namen, und behandeln sie auf dem hier betrachteten Abstraktionslevel wie gemeinsame Speicherzellen. Das i-te 'Inport' von Prozessor j wird mit portij , das i-te 'Outport' von Prozessor j mit portji bezeichnet.

Die Aufgabe des Netzwerkadapters ist einerseits das Einsammeln von Nach­richten von den 'Inports' und andererseits das Verteilen der Nachrichten aus der

Page 16: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.4. SPEZIFIKATION DES NETZWERKADAPTERS 331

Ausgabewarteschlange in die entsprechenden 'Outports'. Die von den 'Inports' gelesenen Nachrichten werden ohne die vorangestellte Prozessornummer in die Eingabewarteschlange geschrieben. Wiederum machen wir keine Annahmen uber die Reihenfolge, in der Nachrichten von den 'Inports' bzw. von der Ausgabewar­teschlange bearbeitet werden. Wir erhalten also folgendes nichtdeterministische Transitionssystem als Spezifikation des Netzwerkadapters.

11.4.1 Definition 1. SeijE{l, ... ,n}.

Der j-te Netzwerkadapter NAj wird als Transitionssystem

NAj:= (SMIO x Xi=l,ii-jPortij x Xi=l,ii-jPortji,f-NA,,INNA,) , ., , .., 'V" 'V'

'Inports' 'Outports'

mit der Zustandsmenge

wobei fur i E {I, ... , n} \ {j} : Portij := Portji := Netmes U {nil},

der Ubergangsrelation

und der Anfangszustandsmenge

2. Die Ubergangsrelation f-NAJ wird dabei wie folgt festgelegt:

Ein Zustand des j-ten Netzwerkadapter hat folgende allgemeine Form:

( (in-q, out-q), port1j , ... ,portnj , portjl' ... ,portjn )

mit (in-q, out-q) E SMlO, portij E Portij, portji E Portji(l ~ i ~ n, i =/:. j).

Wir unterscheiden folgende FaIle:

(a) Einlesen einer Nachricht von 'Inport' portij (1 ~ i ~ n, i =/:. j): ( (in-q, out-q), port1j , ... , [j, mes] , ... , portnj , portjll ... , portjn)

~

portij f-NA, ( (in-q:mes, out-q),

port1j , ... , ~ , ... , portnj , portj1 , ... , portjn)

Port·· lJ

Page 17: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

332 KAPITEL 11. VERWALTUNG DER PARALLELITAT

(b) Laden eines 'Outports' portjj: mit i E {I, ... , n} \ {j}) { (in-q, [i,mes]:out-q),

portlj , ... ,portnj,portjl , .. ·, ~, ... ,portjn)

I-NAJ { (in-q, out-q), Port ..

J'

portlj, ... , portnj , portjll ... , [i, mes]' ... , portjn) ~

portji

3. Die AnJangszustandsmenge IN NAJ des j-ten Netzwerkadapters ist ein­elementig:

1NNAJ:= {{(€,€),?il,.~.,ni9}·

2(n-l)-mal

Damit sind aIle in der parallelen Maschine enthaltenen Prozessoreinheiten for­mal spezifiziert. 1m folgenden Abschnitt zeigen wir, wie die verschiedenen Pro­zessoreinheiten zusammenarbeiten. Wir werden zunachst aus den Transitions­systemen von Netzwerkadapter und Kommunikationsprozessor das Transitions­system der Kommunikationseinheit definieren. Aus den Transitionssystemen von Kommunikations- und Reduktionseinheiten erzeugen wir dann Transitionssysteme zur Spezifikation der Prozessorelemente. Durch Kombination dieser erhalten wir schlieBlich ein nichtdeterministisches Transitionssystem fur die gesamte parallele abstrakte Maschine.

11.5 Komposition der Prozessoreinheiten

Zur Komposition von autonom arbeitenden Prozessoreinheiten, die durch Transi­tionssysteme gegeben sind, definieren wir zunachst einen aIlgemeinen Operator.

11.5.1 Definition Seien Ti = (LSti x SSt, I- j , INj) (i E {1,2} Transitionssy­sterne, deren Zustandsmenge jeweils in einen lokalen Teil LStj (Local Store) und einen gemeinsamen Teil SSt (Shared Store) zerfaIlt.

Sei combine : SSt x SSt X SSt - -+ SSt eine Funktion, die zu einem Zu­stand des gemeinsamen Teils und zwei Folgezustanden, falls moglich, einen kombinierten Folgezustand bestimmt.

Dann heif3t

Tl II(SSt,combine) T2 := (LSt l x SSt x LSt2,1-,IN)

Page 18: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.5. KOMPOSITION DER PROZESSOREINHEITEN 333

die parallele Komposition von T1 und T2 mit Synchronisation auf SSt mittels combine, wobei

wie folgt definiert ist:

(lstt. sst, lst2) I- (lst~, sst', lst~)

gilt, falls

1. (lstt. sst) 1-1 (lst~, sst') und lst2 = lst~ oder 2. (lst2, sst) 1-2 (lst~, sst') und lst1 = lst~ oder 3. (lst1,sst) h (lst~,sstd und (lst2,sst) I- (lst~,sst2)

und sst' = combine(sst,sst1,sst2) E SSt,

und IN:= ((lst1,sst,lst2) I (lst1,sst) E IN1,(lst2,sst) E IN2} ist.

Diese allgemeine Definition der parallelen Komposition von Transitionssyste­men ermoglicht uns nun die Spezifikation der Kommunikationseinheiten, der Pro­zessorelemente und schlieBlich nach Verallgemeinerung des Operators fur mehr als zwei Operanden der gesamten parallelen abstrakten Maschine.

Die Kommunikationseinheit eines Prozessorelementes besteht aus den autonom arbeitenden Einheiten des Netzwerkadapters und des Kommunikationsprozessors, die einen gemeinsamen Speicherbereich mit zwei Nachrichtenwarteschlangen teilen. Der Zugriff auf diese Warteschlangen ist so geregelt, daB jeder Prozessor von einer der beiden Warteschlangen das erste Element lesen und loschen kann und/oder an das Ende der anderen Warteschlange eine oder mehrere Nachrichten schreiben kann. Auf diese Weise konnen keine Konflikte beim Zugriff auf den gemeinsamen Speicher auftreten. Die combine-Funktion wird so definiert, daB als gemeinsa­mer Folgezustand der Zustand gewahlt wird, bei dem die Zustandsveranderungen, die von den beiden Einzelprozessoren vorgenommen wurden, beide berucksichtigt werden.

11.5.2 Definition Die j-te Kommunikationseinheit (1 ~ j ~ n) wird als Transi­tionssystem mittels paralleler Komposition der Transitionssysteme des j-ten Kommunikationsprozessors und des j-ten Netzwerkadapters definiert:

wobei combineIO : SMro -4 SMIO fur (in-qi,out-qi) E SMIO(l ~ i ~ 3) wie folgt definiert wird:

Page 19: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

334 KAPITEL 11. VERWALTUNG DER PARALLELITAT

combineIO ((in-ql, out-ql)' (in-q2' out-q2)' (in-q3' out-~)) (in-q2 . (in-q3 \ in-ql)' out-~ . (out-q2 \ out-ql))'

falls in-ql Prafix von in-~ und in-q2 Suffix von in-ql sowie out-ql Prafix von out-q2 und out-~ Suffix von out-ql'

nicht def. sonst.

Dabei bezeichne . die Konkatenation und \ die Differenz von Worten.

In analoger Weise erhalten wir die formale Spezifikation der Prozessorelemente durch parallele Komposition der Transitionssysteme von Reduktionseinheit und Kommunikationseinheit.

11.5.3 Definition Das j-te Prozessorelement (1 ~ j < n) wird wie folgt als Transitionssystem spezifiziert:

wobei combinepE : SM3 - SM fUr (red-qi, com-qi' nexti) E SM(l ~ i ~ 3) wie folgt festgelegt wird:

combinepE((red-ql' com-ql' next1), (red-q2' com-~, next2), (red-q3' com-q3' next3))

(red-q2' (red-~ \ red-ql),com-~· (com-q2 \ com-ql) , next), falls red-ql Prafix von red-~ und red-q2 Suffix von red-ql, sowie com-ql Prafix von com-q2 und com-~ Suffix von com-q3

{true falls next2 = true

und next := und red-~ = €

false sonst, nicht def. sonst.

Das Prozeflanforderungsflag im gemeinsamen Speicher von Reduktions- und Kommunikationseinheit kann nach einem parallelen Zustandsiibergang nur den Wert true haben, wenn die Reduktionseinheit in den Wartemodus iibergeht, also das Flag setzt und die Kommunikationseinheit keine Nachricht an die Reduktions­einheit sendet, also das Flag nicht zuriicksetzt.

Page 20: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.5. KOMPOSITION DER PROZESSOREINHEITEN 335

Bevor wir auf der Basis der Transitionssysteme fUr Prozessorelemente das Transitionssystem fur die parallele abstrakte Maschine definieren, erweitern wir zunachst den Paralleloperator fur Transitionssysteme fur k Argumente, von denen je zwei einen gemeinsamen Speicherbereich haben.

11.5.4 Definition Sei k ~ 2. Seien

mit (1 :::; i :::; k) k Transitionssysteme.

Fur i,j E {I, ... , k}, i < j teilen Ti und Tj den Zustandsraum SMij .

Seien fur i, j E {I, ... , k}, i > j

(k 2 - k) /2 Funktionen zur Kombination von Folgezustanden der gemeinsa­men Zustandsraume.

Dann definieren wir die parallele Komposition von T1 bis Tk mit Synchroni­sation auf (SMij 11 :::; i < j :::; k) mittels (combineij 11 :::; i < j :::; k) :

durch

( ... ((T1 II(SM12,combine12) T2 ) II(SM13XSM23,(combine13,combine23») T3 )···

••. II(X~':-llsM'k,(combinelk, ... ,combinek_l,k») Tk)'

Dabei bezeichne (combine1j, ... , combinej_1,j) (1 :::; j :::; k) die Paarfunk­tion, fur die gilt:

( b' b') ( j-1 SM )3 j-1sM com me1j,"" com mej_l,j : Xi=1 ij --+ Xi=1 ij

mit

(combinelj, ... , combinej_l,j)

((smL,···, Sm3_I,j), (smij ,···, Sm;_I,j), (sm~j"'" smJ_I,j)) = (combinelj((smL, smij , smV)"'"

combinej-l,j(smJ_I,j, Sm;_1,j' smj_1,j))'

Page 21: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

336 KAPITEL 11. VERWALTUNG DER PARALLELITAT

Mit dieser vorbereitenden Definition folgt unmittelbar die formale Spezifikation der parallelen abstrakten Maschine:

11.5.5 Definition 1. Die gemeinsamen Zustandsraume der verschiedenen Pro-zessorelemente bestehen aus den 'Ports', iiber die die Kommunikation erfolgt.

Wir definieren also

8M~E := Portij x Portji (1 ~ i < j ~ n).

tIber Portij erfolgt der Nachrichtentransfer von i nach j, iiber Portji in umgekehrter Richtung. Zur Kombination der Folgezustande benutzen wir die wie folgt definier­ten Funktionen

Fiir 1 ~ i < j ~ n, (portfj,portji) E 8Mij (1 ~ k ~ 3) ist combinef;E wie folgt definiert:

(port¥, portli) ist der durch PEi gegebene Folgezustand und (portij , portji) der durch PE j gegebene Folgezustand.

combine~E((port}j' port}i)' (portt, port]i), (port~j' port;i))

't ~t _ {port~l falls portll = port~l' IDl por kl - port~l falls portll = port~l' falls portll = port~l oder portll = port~l fiir k,l E {i,j},k =J 1

nicht definiert sonst

2. Die parallele abstrakte Maschine mit n Prozessorelementen wird somit definiert durch

PAM n :=IIn«SMfE combinePE)II<i<J"<n) (PEl, ... , PEn). I, ' '3 - -

Die Spezifikation der parallelen abstrakten Maschine ist sehr allgemein gehal­ten. In der Anfangszustandsmenge sind sogar verschiedene Anfangsbelegungen des Programmspeichers zugelassen. Zur Ausfiihrung von Kombinatorprogram­men nehmen wir allerdings an, daB jede Programmspeicherkomponente in den verschiedenen Prozessorelementen mit dem in Definition 1004.7 festgelegten Pro­grammspeicher zum Kombinatorprogramm initialisiert ist. Die Berechnung startet

Page 22: [Informatik-Fachberichte] Parallele Implementierung funktionaler Programmiersprachen Volume 232 || Verwaltung der Parallelität

11.5. KOMPOSITION DER PROZESSOREINHEITEN 337

mit der Urtask, die der Ausfiihrung des Hauptprogramms entspricht, auf dem er­sten Prozessorelement und endet auch dort, wenn die Urtask mit dem Ergebnis des Hauptprogramms iiberschrieben wurde.

Bevor wir unseren Maschinenentwurf zur parallelen Implementierung funktio­naler Sprachen mit anderen in der Literatur beschriebenen Ansatzen vergleichen, mochten wir im folgenden Kapitel einen Uberblick iiber eine Simulation der ab­strakten Maschine auf einem realen Multicomputersystem geben und auf einige Implementierungsaspekte naher eingehen.