Parallele Programmierung mit Java, SS 2001 Spar/Timber - Programmiersprache und Compiler für high-performance Berechnungen Technische Universität München.

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

ALP II: Objektorientierte Programmierung Sommersemester 2006
Constantin Timm Informatik 12 TU Dortmund
Rechnernetze und verteilte Systeme (BSRvS II)
Technische Universität Dortmund
Inhalt – Technische Grundlagen
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
Einführung in Berechenbarkeit und Formale Sprachen
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
OpenMP Präsentation im Rahmen des Seminars
WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK TotalView Debugger Vorgestellt von Marco Dyballa mail:
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
1 WS 2012 Software-Engineering II Aspektorientierung.
DVG Einführung in Java1 Einführung in JAVA.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
PC II für Biochemiker Eberhard-Karls-Universität Tübingen, Institut für Physikalische und Theoretische Chemie, Prof. Dr. J. Enderlein,
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
/* Fichtenmodell, W.K */ module T; module M1; module S1; module M2; module S2; module M3; module S3; module GU(float incd, int age) extends.
Random Heightmap on GPU
Betriebssysteme, Rechnernetze und verteilte Systeme I (BSRvS 1)
Tino Reindanz - FSU Jena Seminar Aktive Datenbanken – SS 2007 Folie 1 Seminar Aktive Datenbanken Rule Development Rule Development for Active Database.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Duo- und Quad Prozessor-Architektur
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Simple Programmierung
Gegenstand EDV Thema: Informative Webseiten
PPS-Design einer eigenen WWW-Homepage SS 2003 Applets.
SQL Server 2005 CLR-Integration
Entwicklung der Programmiersprachen
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Die Zählschleife int s = 0 for (int k=1; k
Parallel Programming Parallel Matrix Multiplication
Informatik Objekte und Klassen 1. Objektorientiertes Modellieren und Programmieren 1.1 Objekte und Klassen.
Ein Vortrag von Simon Bayer
Hauptseminar SS 2006 Hinweise für Autoren.
Struktur von RDF Fabian Scheller.
Lernspiele Grundschule Vorteile von Lernsoftware Lernen ohne Angst, da Computer emotionslos Angepasstes Lerntempo Angepasste Schwierigkeitsstufe.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Systemsoftware und Betriebssysteme
Interprozess- kommunikation (IPC)
JOMP
Parallelisierung für Multiprozessor-Maschinen
Javelin Internet-based parallel computing using Java.
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
2. Kommunikation und Synchronisation von Prozessen 2
Algorithmen und Datenstrukturen 1 SS 2002
Komplexitätsmanagment
Parallele Programmierung im.NET Framework Darmstadt, Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,
Mensch – Maschine - Kommunikation
Technische Universität München Zentralübung Automotive Software Engineering – Übungsblatt 6.
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
2.3 Implementierung von Prozessen
Nichtsequentielle Programmierung Klaus-Peter Löhr Freie Universität Berlin WS 2002/03.
IT-Zertifikat_Seminar: Metadatenstandards XSLT Eine Transformationssprache.
SHA-1 Collision Search Graz. Wo wurde das Projekt durchgeführt? An der Universität Graz Wann wurde das Projekt gestartet? Am Wann wurde das.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
The IT–Information System
XINFO HORIZONT Überblick zu XINFO Software for Datacenters
Shared Memory Programmierung: Grundlagen
 Präsentation transkript:

Parallele Programmierung mit Java, SS 2001 Spar/Timber - Programmiersprache und Compiler für high-performance Berechnungen Technische Universität München

2 Parallelität in Programmiersprachen - theoretische Hintergründe zZwei Programmiermodelle yohne explizite Parallelität (attraktivere Lösung) ymit expliziter Parallelität zProbleme der parallelen Programmierung yZergliederung in nebenläufige Tasks yBetriebstmittelzuteilung und Ressoursenausnutzung ySynchronisation yKommunikation int search(int b[], int v) { for (int i=0; i<b.length; i++) if (b[i]==v) return i; return -1; }

3 Spar - kurzer Überblick zBequeme Parallelprogrammierung ykeine explizite Kommunikation ySynchronisation implizit in Semantik der Sprachkonstrukte yAnnotationen ztechnisch: Beschränkung auf die Menge von SPC- konformen Programmen ( SPC=sequential/parallel with contention ) zAußerdem Erweiterung der Sprache Java mit Konstrukten, die für wissenschaftliche Berechnungen besonders geeignet sind, darunter yArray Support (echte multi-dimensionale Arrays) yGoodies (komplexe Zahlen, Tupel, dünnbesetzte Matrizen)

4 Spar: sequentielle Konstrukte  neuer primitiver Typ complex zmulti-dimensionale Arrays, die während ihrer Lebenszeit vergrößert und verkleinert werden können zkein direkter Support für dünnbesetze bzw. Blockmatrizen, dafür aber über das Array interface complex a[*,*] = new complex[10,10]; for( v :- [0,0]:a.getSize() ) = 5i; tuple int^2 ix = [5,5]; = 1+2i; class foo(|type t|) { t field;... }

5 Spar: each und foreach Statements  each { s1; s2 } das gesamte Statement – sequentiell die inneren Statements - in willkürlicher Reihenfolge und mit Pragma auch parallel  foreach( i:- 0:N ) { a[i]=0; stmt; } Statements einer einzelnen Iteration – sequentiell ( wenn nichts anderes gesagt ) die Iterationen – in willkürlicher Reihenfolge

6 Spar: Annotations zDie meisten Spar Sprachkonstrukte können mit Annotationen/Pragmas versehen werden zZiel - dem Compiler nützliche Informationen über das Programm und Hinweise für die effizientere Kompilation mitzuteilen zdie Syntax: <$ indepenedent, boundcheck=false, iterations=13, processors=(1 3 5) $> foreach( i :- 0:n ) { sum += i; }

7 Distribution Annotations zDie distribution annotations erlauben: yden Prozessortyp, Prozessorcharakteristiken (wie data alignment, endianness, ob der Prozessor die FPU hat usw.) ydie Anordnung von Prozessoren ydie Verteilung der Daten und der Arbeit auf die Prozessoren: Placement von einem Datenelement, von einem Codeblock, von einer Expression anzugeben. zMomentan sind keine Engines implementiert, die das automatische Code-Placement erlauben würden. Es wird aber daran gearbeitet.

8 Distribution Annotations - Beispiele globalpragmas <$ ProcessorType=((Gpp “Pentium2”),(Dsp “Trimedia”)) Processors=((Gpp gpp1) (Dsp Dsp1D[4]) (Dsp Dsp2D[2,3])) $> X[i]=Y[a*i+b] ~ [block 5]

9 Weitere Beispiele z int foo(int i) {return i+1;} zforeach(i :- 0:100) a[i]=a[i]+1; zint[*,*] b = new int[50,50]; zint sum=0; foreach(i :- 0:a.length) sum+=a[i]; z max(int a,int b) { return a>b?a:b; }

10 Timber – der Compiler für Spar zGeneriert den SPMD-Code zZu lösende Aufgaben bei der Übersetzung SPC-parallelen Spar-Codes in explizit parallelen Code sind: yAufteilung des Programms in “schedulable” Programmteile – Tasks yErmittlung einer Verteilung dieser Tasks auf die Prozessoren yEinfügen von Synchronisations- und Kommunkationsanweisungen, um die korrekte Semantik für each und foreach Statements sicherzustellen yBereitstellung eines globalen Speicherbereichs

11 Timber – Compiler System Vnus Spar Front-End Back-End C++ & runtime Rule-Based Transformation System Scheduler Front-End Textual Vnus

12 Parallelität auf der Vnus-Ebene  Auf der Vnus-Ebene ist die explizite Parallelität durch fork{s1;s2} and forkall[i:n] stmt; dargestellt  fork{s1;s2} erzeugt zwei Threads, die s1, s2 ausführen  forkall[i:n] stmt; erzeugt n Threads  Sollten Spar Statements mit Pragma annotiert worden sein, so werden sie direkt (d.h. ohne Analyse) in entsprechende o.g. Vnus-Statements übersetzt

13 Mutex Mapping zSimples Spar Programm c.init(); foreach (i=0:n){ a[i]=compute(b[i]); c =reduce(c,a[i]); } zWechselseitiger Ausschluss c.init(); foreach (i=0:n){ a[i]=compute(b[i]); c =reduce(c,a[i]); } foreach reduce(0) reduce(n-1) compute(0)

14 Task Annotation & Mapping zTask Annotation c.init(); forkall (i=0:n){ a[i]=compute(b[i]); c =reduce(c,a[i]); } zTask Mapping c.init(); forkall (i=0:n){ a[i]=compute(b[i]); c =reduce(c,a[i]); } zFinal Code c.init(); forkall (i=0:n){ a[i]=compute(b[i]); c=reduce(c,a[i]); }

15 Processors/Mutexes Mapping Schema forkall reduce(0) compute(0)compute(n-1)

16 Internet Quellen zSpar Website, wo unter anderem die “Spar Language Specification” (aktuelle Version 1.4) zu finden ist y zTimber Website. Da Timber unter GPL freigegeben ist, ist dort auch der Sourcecode des Compilers zu finden y