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

4
Kapitel4 Organisation der Parallelisierung Die implizit in funktionalen Programmen enthaltene Parallelitat besteht darin, daB voneinander unabhangige Teilausdriicke auch unabhangig, also insbesondere parallel ausgewertet werden konnen. Dies wird durch die Konfluenzeigenschaft (auch Church-Rosser-Eigenschaft) der Reduktionssemantik gewahrleistet. Die Re- duktion von Ausdriicken erfolgt seiteneffektfrei. Unabhangige Teilausdriicke sind die Argumentausdriicke in Applikationen t. Ob und wann diese Ausdriicke allerdings ausgewertet werden, hangt von der gewahlten Reduktionsstrategie abo Wie wir bereits in Kapitel 1.4 bei der Diskus- sion der "applicative-order" und "normal-order" Strategien gesehen haben, bietet die "applicative-order" Strategie sehr viel mehr Moglichkeiten zur Parallelauswer- tung als die "normal-order" Strategie. Denn bei jeder Applikation konnen aIle Argumentausdriicke parallel ausgewertet werden. Bei der "normal-order" Strate- gie ist eine Parallelauswertung der Argumentausdriicke nur bei Basisfunktionen zugelassen. In allen anderen Applikationen mit beliebigem Funktionsausdruck e wird die Auswertung der Argumentausdriicke el, ... , en solange verzogert, bis ihr Wert zur Fortfiihrung der Gesamtreduktion benotigt wird. Dies fiihrt zu einem streng sequentiellen ReduktionsprozeB. Durch die verzogerte Auswertung wird eine Nichttermination der Berechnung durch di- vergierende Argumentberechnungen, die aber zur Bestimmung des Gesamtergeb- nisses nicht benotigt werden, vermieden. Wertet man bei der Reduktion einer t Die let-Abstraktion wird dabei als besondere Form der Applikation gesehen. R. Loogen, Parallele Implementierung funktionaler Programmiersprachen © Springer-Verlag Berlin Heidelberg 1990

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

Kapitel4

Organisation der Parallelisierung

Die implizit in funktionalen Programmen enthaltene Parallelitat besteht darin, daB voneinander unabhangige Teilausdriicke auch unabhangig, also insbesondere parallel ausgewertet werden konnen. Dies wird durch die Konfluenzeigenschaft (auch Church-Rosser-Eigenschaft) der Reduktionssemantik gewahrleistet. Die Re­duktion von Ausdriicken erfolgt seiteneffektfrei.

Unabhangige Teilausdriicke sind die Argumentausdriicke in Applikationen t. Ob und wann diese Ausdriicke allerdings ausgewertet werden, hangt von der gewahlten Reduktionsstrategie abo Wie wir bereits in Kapitel 1.4 bei der Diskus­sion der "applicative-order" und "normal-order" Strategien gesehen haben, bietet die "applicative-order" Strategie sehr viel mehr Moglichkeiten zur Parallelauswer­tung als die "normal-order" Strategie. Denn bei jeder Applikation konnen aIle Argumentausdriicke parallel ausgewertet werden. Bei der "normal-order" Strate­gie ist eine Parallelauswertung der Argumentausdriicke nur bei Basisfunktionen zugelassen. In allen anderen Applikationen

mit beliebigem Funktionsausdruck e wird die Auswertung der Argumentausdriicke el, ... , en solange verzogert, bis ihr Wert zur Fortfiihrung der Gesamtreduktion benotigt wird. Dies fiihrt zu einem streng sequentiellen ReduktionsprozeB. Durch die verzogerte Auswertung wird eine Nichttermination der Berechnung durch di­vergierende Argumentberechnungen, die aber zur Bestimmung des Gesamtergeb­nisses nicht benotigt werden, vermieden. Wertet man bei der Reduktion einer

t Die let-Abstraktion wird dabei als besondere Form der Applikation gesehen.

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

90 KAPITEL 4. ORGANISATION DER PARALLELISIERUNG

Applikation (*) die Argumente, in denen der Funktionsausdruck e strikt ist, par­allel aus, so wird dieses jedoch auch sichergestellt. Denn eine Nichttermination in strikten Argumenten bedeutet nach Definition der Striktheit Nichttermination der Applikationsauswertung. Eine Strategie, die strikte Funktionsargumente nach dem call-by-value Prinzip und die iibrigen Funktionsargumente nach dem call­by-name Prinzip behandelt, liefert dieselben Ergebnisse wie die "normal-order" Strategie, wobei mehr Moglichkeiten zur Parallelauswertung gegeben sind.

Natiirlich ist die Striktheit von Funktionen i.a. nicht entscheidbar. Eine Strikt­heitsanalyse kann also nie vollstandig sein in dem Sinne, daf3 alle Argumente, in denen eine Funktion strikt ist, ermittelt werden. Es konnen aber gute Approxi­mationen erzielt werden.

Da Striktheitsinformationen Moglichkeiten zur Parallelisierung einer "normal­order" Reduktion aufzeigen, bildet die Striktheitsanalyse das Kernstiick bei der Parallelisierung funktionaler Programme, die eine "normal-order" Auswertung zu­grundelegen. Insgesamt besteht der Parallelisierungsproze:B, den wir in dies em Teil des Buches beschreiben, aus drei Phasen (siehe Bild 4.1).

In der erst en Phase wird das funktionale Programm entschachtelt, d.h. in ein System von globalen Funktionsdefinitionen (Kombinatoren) iibersetzt. Auch die Entschachtelung tragt zur Parallelisierung des Reduktionsprozesses bei. Bei der Reduktion von Kombinatoren ist, wie wir bereits in Kapitel2 gesehen haben, keine zentrale Umgebungsstruktur zur Verwaltung der Variablenbindungen notwendig. Eine solche zentrale Struktur wiirde bei vielen parallelen Prozessen, die darauf zu­greifen, zum EngpaB (engl.: bottleneck) werden. Da Kombinatoren keine globalen oder freien Variablen enthalten, treten bei Kombinatorreduktionen nur die Argu­mentlisten als 'single level'-Umgebungen auf. Durch diese Dezentralisierung der Umgebung wird die Unabhangigkeit der parallelen Reduktionsprozesse vergro:Bert.

Die zweite Phase ist die Striktheitsanalyse, bei der untersucht wird, in welchen Argumenten die Kombinatoren strikt sind. Die Striktheitsinformationen zeigen dann, an welchen Stellen Parallelauswertungen moglich sind. Es ist aber nicht immer sinnvoll, Ausdriicke, die parallel ausgewertet werden konnen, auch tatsach­lich parallel auszuwerten. Denn jede Parallelauswertung ist natiirlich auch mit einem gewissen Mehraufwand, vor allem an Kommunikationskosten tt verbunden, der gro:Ber sein kann, als der Zeitgewinn, den die parallele Auswertung bringt. Aus diesem Grund wird bei der Einteilung der Kombinatorsysteme in parallele Prozesse, die in der dritten Phase der Parallelisierung erfolgt, eine Komplexitats­analyse von "parallelen" Teilausdriicken vorgenommen, die iiber eine tatsachliche

ttzu den Kommunikationskosten zii.hlen neben der Ubertragungszeit von Nachrichten die Er­zeugung und Dekodierung der Nachrichten.

91

funktionales Programm

"- /

I Entschachtelung

"- /

Kombinatorsystem

"- /

I S trikthei tsanalyse I

"- /

Kombinatorsystem mit Striktheitsinformationen

"- /

I Einteilung in parallele Prozesse I

"- /

parallelisiertes Kombinatorsystem

Bild 4.1: Phasen der Parallelisierung

92 KAPITEL 4. ORGANISATION DER PARALLELISIERUNG

ParallelausfUhrung entscheidet. Dies ergibt dann ein Kombinatorsystem, in dem die Stellen, an denen Teilausdriicke parallel ausgewertet werden k6nnen, durch ein spezielles syntaktisches Konstrukt angezeigt werden.

Dieser Teil des Buches ist entsprechend den einzelnen Phasen der Parallelisie­rung organisiert.

In Kapitel 5 beschreiben wir die Transformation von SAL-Programmen in Funktionsgleichungssysteme, welche keine lokalen Funktionsdefinitionen enthalten - sogenannte Kombinatorsysteme. Das hier angegebene Verfahren basiert auf den in [Johnsson 85] und [Hughes 82] vorgestellten Algorithmen.

AnschlieBend beschreiben wir in Kapitel 6 ein Striktheitsanalyseverfahren zur Entdeckung von potentieller ParalleliUit. Dieses Verfahren wurde in [Burn, Han­kin, Abramsky 86] und [Burn 87a/b] entwickelt und erlaubt die Behandlung von Funktionen h6herer Ordnung und frei erzeugten Datenstrukturen bei der Strikt­heitsanalyse.

In Kapitel 7 diskutieren wir die Umsetzung der Striktheitsinformationen zur Einteilung des Kombinatorsystems in parallele Teilprozesse.

Den AbschluB dieses Teiles bildet eine Graphreduktionssemantik fUr die par­allelisierten Kombinatorsysteme. Diese Graphreduktionssemantik beschreibt auf einem hohem abstrakten Level den ReduktionsprozeB, der von der in den nachfol­genden Kapiteln entwickelten Graphreduktionsmaschine durchgefiihrt wird.