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

Slides:



Advertisements
Ähnliche Präsentationen
Programmieren in Logik
Advertisements

C Sharp (C#) Martin Saternus Senior Student Partner
Algorithmentheorie 08 – Dynamische Programmierung (1)
Matrixmultiplikation
Einführung in Prolog Copyright © 1999 by Michael Neumann
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
6. Regelbasierte Systeme
Frame-Logik Eine Einführung Andreas Glausch.
Designing Software for Ease of Extension and Contraction
Objekt – Relationales – Modell Tomasz Makowski IN
Default Logiken Zhao Li
Objektorientierter Entwurf
Algorithmen und Komplexität
Training IT-Grundlagen Interaktive Web-Seiten (HTML-Forms, CGI, Servlets) - Prof. Dr. Böttcher - S. cgi/ 1 Prolog als Datenbanksprache.
Sequentielle Liste - Array
Theorie psychometrischer Tests, III
Listen & Beweisstrategie
Rekursive Listenverarbeitung
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Logische Programmierung: Prolog
Garbage Collection Maik Theisen Betreuer: Guido Tack
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Seminar parallele Programmierung SS 2003
OpenMP Präsentation im Rahmen des Seminars
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Semantik von Prolog & Unifikation
Syntax von Prolog & Familiendatenbasis
Fakten, Regeln und Anfragen
© 2002 Prof. Dr. G. Hellberg 1 XML-Seminar XML-Technologie: XML in Theorie und Praxis Prof. Dr. G. Hellberg XML-Technologie: XML in Theorie und Praxis.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Zusammenfassung Vorwoche
Grundlegende Analysen & Zwischendarstellungen
Seminar: Architekturbeschreibungssprachen
Günter Kniesel Advanced Prolog. 2 Bisher: Grundlagen Klauseln –Regeln –Fakten Terme –Die einzige Datenstruktur in Prolog –Listen als Sonderfall mit eigener.
Objektorientierte DBMS Klassen und Beziehungen Seminar: Verteilte Datenbanken Manuela Fischer.
Der VFP Debugger - Coverage und Profiling. © 1999 TMN-Systemberatung GmbH Der VFP Debugger n Neues Aussehen, eigene Task n Erweiterte Möglichkeiten n.
1 Grundlagen und Anwendung der Extensible Markup Language (XML ) Peter Buxmann Institut für Wirtschaftsinformatik Johann Wolfgang Goethe-Universität Frankfurt.
Visualisierung funktionaler Programme
Duo- und Quad Prozessor-Architektur
? Was ist Informatik? Was ist Informatik? Alexander Lange
Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Numerik partieller Differentialgleichungen, SS 01Teil.
Automatic composition of UI mashups Vortrag zum Seminar Webengineering 2011 Michael Reißner.
Entwicklung der Programmiersprachen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Parallel Matrix Multiplication
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen Übungsmodul 8
Trust and context using the RDF- Source related Storage System (RDF‑S3) and easy RQL (eRQL) Karsten Tolle und Fabian Wleklinski.
Objectives Verstehen was unterDelegate verstanden wird
PHP: Operatoren und Kontrollstrukturen
Das Traveling Salesman Problem (TSP)
Integritätserhaltung und -Überprüfung in deduktiven Datenbanken
7. Formale Sprachen und Grammatiken
Einführung Dateisystem <-> Datenbanksystem
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Einführung in die Programmierung mit Java
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Game Loop & Update Method Robert Nystrom – Game Programming Patterns Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung SS.
Anbindung eines Ontologie- basiertes Risikomanagement- systems an eine XML-Datenbank Datenbankseminar am Lehrstuhl für Praktische Informatik III Vortrag.
Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Grundsätze der Logikprogrammierung.
Prolog-Kurs SomSem 2017 Daniel Beßler/Hagen Langer
 Präsentation transkript:

Parallel Prolog SS 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 Seminar Programmiersprachenkonzepte Parallel Prolog

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

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… Seminar Programmiersprachenkonzepte Parallel Prolog

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

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 ] Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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) Seminar Programmiersprachenkonzepte Parallel Prolog q pp Y a X ungebunden Y = a X 1 Y = a X 2 Y a X ? X 1X 2

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

Restricted OR – Parallelität (2) Seminar Programmiersprachenkonzepte Parallel Prolog Environment B C p(X,Y) :- q(X),r(Y). P p(X,Y) :- r(Y). Y = 1 (time-insensitive) X UnusedX bound ?- 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

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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

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

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

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) Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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

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 Seminar Programmiersprachenkonzepte Parallel Prolog

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

Literatur Oskar Fuhlrott. Möglichkeiten und Grenzen einer Parallelverarbeitung in Prolog, Diplom-Arbeit, Universität Hamburg, Joachim Beer. Concepts, Design and Performance Analysis of a Parallel Prolog Machine, Springer Verlag, Håkan Millroth. Using the Reform Inference System for Parallel Prolog, Upmail Technical Report, William F. Clocksin und Christopher S. Mellish. Programming in Prolog, Springer Verlag, Keith Clark und Steve Gregory. Parlog: Programming in Logic, ACM TOPLAS, Volume 8 (pp. 1-45), Seminar Programmiersprachenkonzepte Parallel Prolog