27
Ibis Jan Frederik Naujoks

Ibis - Universität Kassel: Aktuelles · Was ist Ibis? Ibis ist eine Java-Programmierumgebung für Grids Open Source, entwickelt durch Computer Systems Group des Computer Science

  • Upload
    vonhi

  • View
    237

  • Download
    0

Embed Size (px)

Citation preview

Ibis

Jan Frederik Naujoks

Gliederung:

1. Überblick über das Ibis Projekt

2. Features

3. Architektur

4. Programmiermodelle4. Programmiermodelle

5. Ibis und Middleware

6. Portabilität

7. Entwicklung und Nutzung

8. Fazit

2

Was ist Ibis?

Ibis ist eine Java-Programmierumgebung für Grids

Open Source, entwickelt durch Computer Systems Group des Computer Science Systems Group des Computer Science Department der Faculty of Sciences an der Vrije Universiteit Amsterdam (Niederlande)

3

Bestandteile von Ibis

Zu Ibis gehören mehrere Sub-Projekte:

• Ibis Kommunikationsbibliothek

• verschiedene Programmiermodelle

• Zorilla• Zorilla– P2P Java Grid Middleware

• Java Grid Application Toolkit (JavaGAT)– Schnittstelle zwischen Middleware und Applikation

– Anwendung muss nur mit JavaGAT zusammenarbeiten

– Globus, Unicore, usw.

4

Features

• Portable Anwendungen aufgrund von Java

• Dynamisches Verhalten

• Abstraktion der Kommunikationsebene, dadurch Verwendbarkeit von Systemnativen, dadurch Verwendbarkeit von Systemnativen, optimierten Kommunikationsprotokollen (Myrinet, MPI) und Unterstützung heterogener Netze

5

AUFBAU/ARCHITEKTUR

6

Ibis Modell

Original Quelle: http://www.cs.vu.nl/ibis/images/ibis-design.png (Stand 15.01.2007)

7

Ibis Portability Layer

• Ziel ist das der Einsatz von Ibis bzw. Java keinesfalls die Verwendung von schnellen und optimierten Technologien unterbindet.

• Nutzung bereits vorhandener Technologie• Nutzung bereits vorhandener Technologie

• Abstrahiert Kommunikationstechnologien

• Stellt die Schnittstelle zwischen Anwendungen und Ibis-Implementierungen.

8

• Es kann mehrere Ibis-Implementierungen auf einem System geben, Anwendungen können unterschiedliche Implementierungen (gleichzeitig) Nutzen.

• Zur Laufzeit wird entschieden welche Implementierung genutzt werden soll, dann wird diese geladen.wird diese geladen.

• Entschieden wird nach Anforderungen die die Kommunikationsebene erfüllen muss, z.B. Zuverlässigkeit.

• Programmiermodelle definieren diese Anforderungen selbst.

9

IBIS PROGRAMMIERMODELLE

10

Satin

Satin bietet devide-and-conquer für Java, beinhaltet diverse Optimierungen um devide-and-conquer Anwendungen in weitverteilten Netzen zu ermöglichen.Netzen zu ermöglichen.

Optimierungen sind integriert, bei Programmierung muss also nicht auf die Besonderheiten geachtet werden.

11

Satin ist fehlertolerant und dynamisch, kann also mit zusätzlichen oder ausfallenden Prozessoren umgehen.

Dazu wird der Berechnungsbaum neu strukturiert, hierdurch können redundante Berechnungen verhindert werden.

Satin soll Teilberechnungen von ausfallenden Prozessoren ohne Verlust von Rechenzeit retten können.

Implementierung durch Satin-Runtime und Bytecode-Rewriter.

12

Satin im Detail

Satin bietet spawn und sync

Um Satin zu nutzen muss ein Interface implementiert werden das von ibis.satin.Spawnable erbt. Alle Implementierungen der im Interface deklarierten Implementierungen der im Interface deklarierten Methoden sind Satin-Jobs und als spawnable markiert.

Beispiel: interface Searcher extends ibis.satin.Spawnable {

public int search(int a[], int from, int to, int val); }

13

Quelle:http://www.cs.vu.nl/ibis/progman/node5.html(Stand 21.01.2007)

14

Wird dieser Code mit javac kompiliert wird das Programm sequentiell ausgeführt.

Wird der Satin-Compiler verwendet, werden die als spawnable markierten Methoden parallel ausgeführt (wenn mehrere JVMs verfügbar sind und das ibis-run Script zum starten verwendet wird)verwendet wird)

Rekursive Aufrufe der spawnbaren (Job) Methoden sind erlaubt, dadurch weitere Aufteilung auf Jobs möglich.

15

Einschränkungen

Parameter und Rückgabewerte müssen primitive Datentypen oder serialisierbar sein.

Alle Felder eines Satin-Objektes müssen ebenfalls serialisierbar oder transient sein.ebenfalls serialisierbar oder transient sein.

Dadurch wird ein Transfer auf andere Prozessoren ermöglicht.

16

Satin Scheduling

Satin bietet drei verschieden Scheduling-Strategien:• random work-stealing

– wenn eigene job-queue leer zufällig in der Queue eines anderen Jobs nach Arbeit suchen.

• cluster-aware random work-stealing– wenn eigene job-queue leer zufällig bei Jobs im eigenen Cluster – wenn eigene job-queue leer zufällig bei Jobs im eigenen Cluster

klauen, nur wenn auch deren Queues leer sind auch außerhalb des Clusters suchen.

• master-worker– "master" erstellt aufgaben, alle anderen sind "worker" und

bekommen ihre Aufgaben vom "master".

Boolesche Methode in SatinObject needMoreJobs(), deutet an ob es gut wäre mehr Jobs zu erstellen.

17

Satin "devide-and-share"

Satin kann Objekte zwischen Sub-Tasks "sharen", teilen. Das bedeutet das die einzelnen Sub-Tasks zugriff auf diese gemeinsamen Objekte haben.

Alle Operationen auf gemeinsamen Objekten sind Alle Operationen auf gemeinsamen Objekten sind atomar. Satin stellt sicher das keine Operationen gleichzeitig ausgeführt werden und das devide-and-conquer Aufgaben nicht behindert werden.

Einfach zu nutzen, Semaphore und locks nicht nötig.

18

Ibis RMI und GMI

• Ibis Remote Method Invocation Code = Sun RMI Code, Ibis rmic statt Sun rmic zum kompilieren.

• Ibis RMI optimiert Kommunikation, reduziert Overhead gegenüber Sun RMI.

Ibis Group Method Invocation erlaubt Ibis Group Method Invocation erlaubt Methodenaufrufe sowohl auf Einzelnen als auch auf Gruppen von Objekten. Es ist möglich Gruppen individuelle Parameter zu übergeben. Rückgabewerte können zurückgegeben, verworfen oder zusammengefasst werden.

19

MPJ

MPJ wurde vom Java Grande Forum definiert und bietet MPI-ähnliche Kommunikation in Java. MPJ/Ibis ist eine reine Java-Implementierung des Interfaces. Diese bietet Implementierung des Interfaces. Diese bietet laut Homepage "high-performance communication" und ist dabei sowohl auf Myrinet-Clustern als auch in Grids einsetzbar.

20

RepMI

• Bietet replizierbare Objekte• Es können sog. Objekt-Clouds erstellt werden die

einen Eintrittspunkt (root) definieren. Auf diesem werden alle Methoden aufgerufen.

• Compiler und Runtime-System stellen fest welche • Compiler und Runtime-System stellen fest welche Methoden nur lesen, und welche modifizieren, nur Lesende werden lokal ausgeführt, Schreibende werden auf der gesamten Wolke ausgeführt, so das alle Repliken des Objektes verändert werden.

• Zur Zeit wird überlegt RepMI auf Ibis umzusetzen.

21

Middleware, Portabilität

Durch die Kompatibilität zu Java sind Ibis Anwendungen auf jedem System einsetzbar auf dem Ibis und eine JVM vorhanden sind

Durch das modulare JavaGAT ist die Verwendung Durch das modulare JavaGAT ist die Verwendung verschiedenster Middlewares möglich.

22

Weitere Entwicklung

Ibis scheint aktiv weiterentwickelt zu werden, die aktuelle Version 1.4 wurde im September 2006 freigegeben, die letzte News auf der Homepage wurde November 2006 Homepage wurde November 2006 geschrieben.

23

Projekte die Ibis nutzen

• Am Institute of Numerical Methods and Informatics in Civil Engineering nutzt ein Projekt Ibis bei der parallelen Simulation von Bodenstruktur-Interaktionen.

• Es gibt eine ProActive Portierung auf Ibis.

• das Vrije Universiteit Medical Centre nutzt Ibis bei der Auswertung von Elektroenzephalogrammdaten.

• Jylab nutzt Ibis zur Kommunikation.

24

Fazit

Ibis ermöglicht es, durch verschiedene Optimierungen, durch Portabilität, relativ einfache Handhabung und gute Anbindung an Middleware, Grid-Anwendungen in Java zu Middleware, Grid-Anwendungen in Java zu schreiben.

Dazu bietet Ibis durch die Programmiermodelle eine Reihe von Techniken die paralleles Programmieren in Java vereinfachen.

25

Literatur

• Ibis Homepage http://www.cs.vu.nl/ibis/index.html• Ibis Programmer's Manual

http://www.cs.vu.nl/ibis/progman/index.html• Ibis APIDoc http://www.cs.vu.nl/ibis/api/index.html• Ibis: a Flexible and Efficient Java-based Grid Programming

Environment von Rob V. van Nieuwpoort, Jason Maassen, Environment von Rob V. van Nieuwpoort, Jason Maassen, Gosia Wrzesi´nska, Rutger Hofman, Ceriel Jacobs, Thilo Kielmann, Henri E. Bal - Faculty of Sciences, Department of Computer Science, Vrije Universiteit De Boelelaan 1081a, 1081 HV Amsterdam, The Netherlands http://www.cs.vu.nl/ibis/papers/nieuwpoort_cpe_05.pdf

26

Fragen?

27