1 / 39

Parallel Prolog

Parallel Prolog. SS 2004 18.410 Seminar Programmiersprachenkonzepte Vortrag von Zehra Öztürk am 17. Juni 2004. Überblick. Prolog Grundlagen OR – Parallelität AND – Parallelität Verschiedene Parallel Prolog Dialekte Zusammenfassung Literatur.

fayre
Download Presentation

Parallel Prolog

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Parallel Prolog SS 2004 18.410 Seminar Programmiersprachenkonzepte Vortrag von Zehra Öztürk am 17. Juni 2004

  2. Überblick • Prolog Grundlagen • OR – Parallelität • AND – Parallelität • Verschiedene Parallel Prolog Dialekte • Zusammenfassung • Literatur 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  3. Überblick • Prolog Grundlagen • OR – Parallelität • AND – Parallelität • Verschiedene Parallel Prolog Dialekte • Zusammenfassung • Literatur 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  4. Was ist Prolog? • Prolog ist eine deklarative Programmiersprache • es werden bekannte Fakten und Beziehungen über ein Problem beschrieben • Programmierung besteht aus • Festlegung von Fakten, Definition von Regeln, stellen von Anfragen • Prolog wird genutzt zur Darstellung von • Relationalen Datenbanken, Logik, Künstlicher Intelligenz… 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  5. Fakten • Fakten wie „John likes Mary“ werden wie folgt dargestellt: likes(john, mary). Konstanten likes(john, ice-cream). Prädikate 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  6. Anfragen • Anfragen gleichen Fakten • Unterschied sind spezielle Zeichen, die vor gesetzt werden ?- likes(john, mary). ?- likes(_, mary). ?- likes(john, X). • Fragen werden mit yes, no oder dem Variablenwert beantwortet 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  7. Regeln (1) • Regeln werden verwendet, wenn ein Fakt abhängig von anderen Fakten ist oder wenn man Definitionen darstellen will John mag jemanden, wenn er Wein oder Essen mag. X ist ein Vogel, wenn: X ein Tier ist und X Federn hat. • Regeln bestehen aus einem Regelkopf und dem Regelrumpf 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  8. Regeln (2) likes(john, X) :- likes(X, win); likes(mary, wine). likes(X, food). likes(peter, food). Regelkopf Regelrumpf Fakten ‘dann, wenn‘-Pfeil Regel, Klausel 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  9. Unifikation • Unifikation ist die Art, wie Prolog matched • es wird ein Paar von gültigen Prolog Entitäten oder Termen unifiziert • Unifikation = zwei Wege matching Prozess • Substitution • Weiterrechnen mit dem Substituenten a(b, c, d(e, F)) = a(B, c, d(E, f)) B unifiziert mit b, E unifiziert mit e, F unifiziert mit f 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  10. Listen • Leere Liste: [ ] • Nicht-leere Listen: zwei Notationsformen • Rekursionsformat • Eine Liste bestehend aus einem Kopfelement und der Restliste (getrennt durch den Separator ‘ | ‘) Beispiel: [ Kopfelement | Restliste ] • Aufzählungsformat • Eine Liste bestehend aus einer Folge von Elementen (getrennt durch den Separator ‘ , ‘) Beispiel: [ Element1, Element2, Element3, …, Elementn ] 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  11. Rekursive Suche • Rekursive Suche erfolgt, wenn eine Struktur andere Strukturen als ihre Komponenten hat member(X, [Y|_]) :- X = Y. member(X, [_|Y]) :- member(X, Y). ?- member(d, [a, b, c, d, e, f, g, h]). yes ?- member(2, [3, a, 4, f]) no 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  12. Backtracking • nach Erhalt einer Lösung, kann man durch ‘;‘ nach anderen möglichen Ergebnissen suchen • Backtracking wird eingesetzt ?- likes(john, X). X = mary; X = ice-cream; no 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  13. ‘Cut!‘ • zur Kontrolle der Informationsausgabe • durch ‘cut‘ wird Backtracking nach Erhalt eines Ergebnisses aufgehalten member(X, [X|_]) :- !. member(X, [_|Y]) :- member(X, Y). ?- member(X, [d, e, f]). X = d • ohne ‘cut‘ würden alle Elemente der Liste als Wert für X wiedergegeben werden 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  14. Überblick • Prolog Grundlagen • OR – Parallelität • AND – Parallelität • Verschiedene Parallel Prolog Dialekte • Zusammenfassung • Literatur 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  15. OR – Parallelität (1) • OR-Parallelität erfolgt immer dann, wenn eine Teilaufgabe mit mehr als einem Klauselkopf unifizieren kann • Klauselkörper werden dann von unterschiedlichen Agenten ausgeführt (OR - Agent) integr( X + Y , X‘ + Y‘) :- integr(X,X‘), integr(Y,Y‘). integr(A + B, X * Y) :- A = X1 * Y, B = X * Y1, integr(X, X1), integr(Y, Y1). ?- integr(5 * x + lnx * x, Z). beide Klauselköpfe können mit der Anfrage unifiziert werden 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  16. OR – Parallelität (2) • jeder OR-Agent liefert unterschiedliche Ergebnisse auf die Anfrage • Folgerung: einfache Implementierung durch straightforward Modifikationen auf existierende sequentielle Technologien • nur bei Independent und Restricted Parallelität möglich • OR-Parallelität in allgemeiner Form erfordert einige komplexe Erweiterungen • Unabhängigkeit der OR-Agents darf nur in der Theorie existieren 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  17. OR – Parallelität (3) ?- q(Y, X), p (Y, X). mit • Berechnung für q erfolgt, durch Bindung von Y an a und ohne X zu binden • P ist definiert durch p(a, 1) und p(a, 2) Y → a Y a X ? q X ungebunden p p Y = a X → 1 Y = a X → 2 X → 1 X → 2 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  18. Independent OR – Parallelität • ist gegeben, wenn die unterschiedlichen Alternativen unabhängig voneinander sind • es wird nicht dieselbe Variable verwendet • in den meisten Fällen, kommen in den Anfragen keine ungebundenen Variablen vor 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  19. Restricted OR – Parallelität (1) • wie Independent OR-Parallelität • erlaubt Nutzung von ungebundenen konditional Variablen • Variablen dürfen keine Konflikte erzeugen • Variablen werden nur gelesen • von einer Alternative genutzte Variable darf nicht von einer anderen Alternative genutzt werden • Konzept könnte gepusht werden • Alternativen dürfen selbe Variable nutzen • Bindungen müssen konsistent sein • die Berechnung der Alternativen ist Zeit-Insensitiv 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  20. Restricted OR – Parallelität (2) ?- p(B, C). p(X,Y):-r(Y). p(X,Y):-q(X),t(Y). r(1). t(1). q(a) :- … Beispiel für Restricted OR-Parallelismus Environment B C P p(X,Y) :- r(Y). p(X,Y) :- q(X),r(Y). Y = 1 (time-insensitive) Y = 1 (time-insensitive) X Unused X bound 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  21. Dependent OR – Parallelität (1) • keine Restriktionen für Parallelität • Ziel: Lösung des Abhängigkeits-Problems und Bindung der konditional Variablen • während Ausführung eines Verarbeitungsschrittes, könnten neue Variablen erzeugt werden • bei paralleler Weiterverarbeitung könnte es dadurch zu Problemen kommen, wenn ein Teil versucht die Variable zu lesen/schreiben, die im anderen Teil erzeugt/verwendet wird 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  22. Dependent OR – Parallelität (2) • Umgebungen müssen so organisiert sein, dass Bindungen nur dem jeweiligen Verarbeitungszweig zur Verfügung gestellt werden • Zwei Wege • Stack copying • binding Arrays 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  23. Dependent OR – Parallelität (3) binding Arrays: jede konditional Variable wird indexiert und jeder Zweig hat einen Array wo Bindungen an Variablen gespeichert werden Processor 1 Binding Array Proc.2 Proc.1 0 1 ?- integr(5 * x + lnx * x, Z). Z = X1 + Y1, … Z = X* Y, … 0 X1 – Y1 0 X * Y 1 1 2 2 Processor 1 Binding Array Processor 2 Binding Array 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  24. Dependent OR – Parallelität (4) Stack copying: Umgebungen der Alternativen werden kopiert und jedem Zweig der Verarbeitung zugefügt Environments Environments ?- integr(5 * x + lnx * x, Y). ?- integr(5 * x + lnx * x, Y). Copied Part X1 + Y1 X1*Y1 Y = X1 + Y1 Y = X * Y 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  25. Überblick • Prolog Grundlagen • OR – Parallelität • AND – Parallelität • Verschiedene Parallel Prolog Dialekte • Zusammenfassung • Literatur 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  26. AND – Parallelität • Teilaufgaben einer Anfrage können durch verschiedene Agenten bearbeitet werden • AND-Agenten • berechnen verschiedene Teile desselben Ziels • Aufteilung zwischen Agenten muss geregelt sein Beispiel: Quicksort qsort([], []). qsort([H|T], R) :- split(T, H, Sm, Lrg), qsort(Sm, R1), qsort(Lrg, R2), append(R1, [H|R2], R). 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  27. Independent AND – Parallelität • verschiedene Teilprozesse dürfen keine ungebundenen Variablen teilen • Beeinflussung der Berechnungen wird verhindert • am Ende jedes parallel berechneten Teilprozesses befindet sich ein barrier • Zurückschaltung zur sequentiellen Verarbeitung, wenn alle Teilaufgaben berechnet wurden 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  28. Restricted AND – Parallelität • ungebundene Variablen dürfen genutzt werden • es dürfen keine Konflikte durch solche Variablenbindungen entstehen 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  29. Dependent AND – Parallelität (1) • Nutzung ungebundener Variablen, auch bei Konfliktentstehung erlaubt p(1). q(2). q(1). ?- p(X), q(X). • wenn p(X) zuerst berechnet wird, wird X = 1 gebunden und p(1) wäre gültig • wird q(X) zuerst berechnet, wird X = 2 und da p(2) nicht vorhanden, würde die ganze Anfrage ungültig werden 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  30. Dependent AND – Parallelität (2) • deshalb für parallele Verarbeitung Einführung von Producer und Consumer • Producer: Teilprozess, der das Recht hat ungebundene Variable zu binden • Consumer: alle anderen Teilprozesse, die diese Variable benötigen • haben nur das Recht, Variable zu lesen • Consumer, die Variable zur Weiterverarbeitung brauchen, müssen warten, bis sie Producer werden • wird durch Prolog Semantik festgelegt 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  31. Ausgabe • bei sequentiellen Interpreter standardmäßige Beantwortung durch einen Wert • alternative Lösungen erst durch Backtracking • bei paralleler Evaluierung sollen alle Lösungen ausgegeben werden • unendliche Ableitungsversuche lassen sich schwer vermeiden • Cut • nur bis zu einer bestimmten Ableitungstiefe parallel evaluieren 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  32. Überblick • Prolog Grundlagen • OR – Parallelität • AND – Parallelität • Verschiedene Parallel Prolog Dialekte • Zusammenfassung • Literatur 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  33. Parallel Prolog Dialekte (1) • Concurrent Prolog • bietet AND- und OR-Parallelität an • besitzt einen read-only Operator • PARLOG • nutzt Consumer und Producer Prinzip der Dependent AND-Parallelität • um Bindungskonflikte zu beheben, gibt es Modus Deklarationen für jede Prozedur 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  34. Parallel Prolog Dialekte (2) • Reform Prolog • eine Single Instruction, Multiple Data (SIMD) Prolog Implementation, die mit Rekursionsparallelität arbeitet • es gibt einen sequentiellen Arbeiter und eine festgelegte Anzahl von parallelen Arbeitern • Ciao Engine (CLIP Group) • basiert auf der AND-Parallelität von Concurrent Prolog • diese ist hergeleitet von SICStus Prolog 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  35. Parallel Prolog Dialekte (3) • Muse • OR-Parallele Prolog Version von SICStus • läuft auf einigen Multiprozessor Plattformen und unterstützt Prolog sowie die meisten SICStus Gebilde • Penny • benutzt AND- und OR-Parallelität und hat einen kompletten Garbage Collector • System benutzt implizite Parallelität • keine Annotationen im Source Code nötig 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  36. Überblick • Prolog Grundlagen • OR – Parallelität • AND – Parallelität • Verschiedene Parallel Prolog Dialekte • Zusammenfassung • Literatur 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  37. Zusammenfassung • Einführung in Prolog • Vorstellung der in Prolog am meisten verwendeten Parallelisierungs-Arten • AND-Parallelität • OR-Parallelität • Vorstellung der verschiedenen Parallel Prolog Dialekte 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  38. Überblick • Prolog Grundlagen • OR – Parallelität • AND – Parallelität • Verschiedene Parallel Prolog Dialekte • Zusammenfassung • Literatur 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

  39. Literatur • Oskar Fuhlrott. „Möglichkeiten und Grenzen einer Parallelverarbeitung in Prolog“, Diplom-Arbeit, Universität Hamburg, 1987. • Joachim Beer. „Concepts, Design and Performance Analysis of a Parallel Prolog Machine“, Springer Verlag, 1987. • Håkan Millroth. „Using the Reform Inference System for Parallel Prolog“, Upmail Technical Report, 1992. • William F. Clocksin und Christopher S. Mellish. „Programming in Prolog“, Springer Verlag, 1981. • http://user.it.uu.se/~thomasl/par-prolog.html • Keith Clark und Steve Gregory. „Parlog: Programming in Logic“, ACM TOPLAS, Volume 8 (pp. 1-45), 1986. 18.410 Seminar Programmiersprachenkonzepte Parallel Prolog

More Related