> Projektseminar im WiSe 2011/12 Prof. Sergei Gorlatch, Philipp Kegel, Dominique Meiländer, Michel Steuwer AG Parallele und Verteilte Systeme, Westfälische Wilhelms-Universität Münster
Lernziele 2 Erlernen grundlegender Eigenschaften von GPUs und Cloud-Systemen Aneignen von Techniken und Know-How zur grundlegenden Programmierung anhand von Handbüchern und Spezifikationen Verständnis von Beispielcode und -programmen Im Team ein lauffähiges und kommentiertes Softwaresystem entwerfen, implementieren, evaluieren und öffentlich präsentieren Verwaltung von GPUs und CPUs in Cloud-Systemen Effiziente Auswahl von Verarbeitungseinheiten Evaluation aktueller Forschungsarbeiten Verständnis von Ideen und Ansätzen in Forschungspapern und anschließende Bewertung und Adaption
Projektablauf 3 Theoretische und praxisorientierte Phasen Theorie: Aneignen von theoretischen Grundlagen, Vergleich und Bewertung verschiedener Forschungsansätze Praxis: Anwendung der erlernten Theorie, Implementierung von Softwaresystemen Zusammenarbeit und Entwicklung in wechselnden Teams Grundlegende Kenntnisse der Programmiersprachen C und C++ bzw. eine entsprechende Einarbeitung bis Semesterbeginn werden vorausgesetzt! Siehe Website
Wöchentliche Treffen 4 Bei den wöchentlichen Treffen gibt jede Gruppe einen (kurzen) Zwischenbericht ab: Im Allgemeinen knapp, evtl. auf ein bis zwei Folien Was wurde bearbeitet (abgeschlossen oder Fortschritt, evtl. Probleme)? Was steht als Nächstes an? Demonstrationen! Hinweis: Hier erstelltes Material kann für spätere Berichte (Ausarbeitung) verwendet werden
Umgebung 5 Projektraum Bietet Möglichkeit sich dort zum gemeinsamen Arbeiten zu treffen 24/7 zur freien Verfügung, gern selbst ausstatten (Kaffee!) Mehrere Rechner (planet) vorhanden, selbst konfigurierbar Subversion-Server (SVN) Code, aber auch Dokumente, Folien, etc. trunk soll immer lauffähig sein und den aktuellen Stand widerspiegeln branches für die Entwicklung neuer Programmfunktionen verwenden Meilensteine sollen als tag gekennzeichnet werden trac: Wiki (+ SVN Anbindung) zur Projektplanung, Koordination Weitere Wünsche?
Koordination 6 (Teil-)Aufgaben werden von uns vorgegeben ( trac) Bearbeitung und Verteilung organisiert ihr selbst Dazu gehört: Absprache/Nutzung der Kommunikationswege (Mailingliste, trac) Coding-Conventions einhalten Verantwortlich sind grundsätzlich alle Vorgegebene Aufgaben schaffen Ansprechpartner für einzelne Bereiche Kommt bei Fragen und Problemen (rechtzeitig!) zu uns
Zwischenpräsentation 7 Vorstellung des Projekts vor unserer Arbeitsgruppe Bericht über Organisation und Koordination im Projekt Technischer Zwischenbericht: Komponenten, Algorithmen, Umsetzung, Prototyp (evtl. Demo) Inhaltlich, technisch soweit nötig und möglich (Konzept, Überblick) In Form eines Vortrags (ca. 30 Min.) Nach Fertigstellung des Softwareentwurfs, evtl. Prototyp-Implementierung (Ende November) Anregungen zu Entwurf und Implementierung
Abschlussarbeiten 8 Abschlusspräsentation Technischer Bericht: Komponenten, Algorithmen, Umsetzung Nach Fertigstellung der Implementierung, erste Messergebnisse (Mitte Februar) Anregungen für schriftliche Ausarbeitung Vortrag (ca. 30 Min.) inklusive (live) Präsentation des fertigen Systems, Messungen Ausarbeitung Design/Konzeption des realisierten Systems und einzelner Komponenten Evaluation des Systems: Funktionalitäts- und Performance-Tests Soll eure individuellen Leistungen im Projekt widerspiegeln Ende des Projektseminars (Mitte März)
Bewertungskriterien 9 Individuelle Benotung Schriftliche Ausarbeitung Vorträge und Referate Code (inkl. Dokumentation) Engagement und Teamarbeit insbesondere aktive (!) Teilnahme an den wöchentlichen Treffen
Meilensteine 1 10 26.09.2011: Vorbesprechung 11.10.2011: Referate: Grundlagen 29.11.2011: Prototyp Software, Zwischenpräsentation 14.02.2012: Fertigstellung Software, Abschlussvortrag 16.03.2012: Fertigstellung der Ausarbeitung 1 Die Terminplanung ist vorläufig und ändert sich ggf. während des Projektseminars
Projektziel 11 Anwendung OpenCL Programmierung von Cloud-Ressourcen via OpenCL
Projektziel 11 Zugriff auf (physikalische) Ressourcen in einem verteilten System
Projektziel 11 Zugriff auf (physikalische) Ressourcen in einem verteilten System Dynamische Anforderung von Ressourcen aus der Cloud
Projektaufgabe 12 Zwei überlappende Aufgabenbereiche: 1 Entwurf und Implementierung einer Verwaltungskomponente für hybride Cloud-Ressourcen (CPU/GPU) Auswahl geeigneter Cloud-Ressourcen zu einer Anfrage Dynamisches Starten von Cloud-Ressourcen Ausnutzung von Abrechnungsintervallen der Cloud 2 Weiterentwicklung von dopencl durch Implementierung fehlender OpenCL-Funktionen Weiterleitung und Ausführung von OpenCL-Befehlen auf entfernten Ressourcen Implementierung von Testanwendungen und Performance-Tests
Aktueller Stand der Entwicklung 13 4 Programmmodule dopencl ICD: OpenCL-Treiber dopencl Server: OpenCL-Proxy Kommunikationsbibliothek: gemeinsame Kommunikationsobjekte für ICD und Server Cloud-Connector: Cloud-Systeme und Server verwalten, einfaches Mapping Ausführung einfacher OpenCL-Programme in verteilten Systemen und Clouds To Do Vollständige Unterstützung der OpenCL 1.1 API: Synchronization mit Events, Mapping von Speicherobjekten, uvm. Stand-Alone Ressourcen-Manager für Multi-Client-Systeme
1. Aufgabe: Einführungsreferate 14 Ziele: Den anderen Teilnehmern soll ein Einblick ins Thema vermittelt werden Vortragende sollen Experten/Ansprechpartner auf ihrem Themengebiet werden Möglichst praxisbezogene Darstellung: Demo, Pseudo-Code, etc. Themen: 1. OpenCL Programmiermodell + API 2. Eucalyptus Architektur + API 3. Xen Hypervisor + VM Images 4. dopencl Netzwerk-Komponente 5. dopencl Cloud-Komponente 6. Mapping von Anforderungen zu Ressourcen in dopencl
Einführungsreferate: Themen 15 1. OpenCL Programmiermodell + API Vorstellung der wichtigsten Konzepte von OpenCL: Host, Device, Kernel,... Erläuterung der Ausführung eines OpenCL Kernels auf einem Device Erstellung und Vorführung eines einfachen Beispielprogramms in OpenCL 2. Eucalyptus Architektur + API Architekturkonzept der Eucalyptus Cloud Bedienung und Kommunikation mit der Eucalyptus Cloud (euca2ools, Web-Interface) Starten einer Cloud-Ressource im Netzwerklabor
Einführungsreferate: Themen 16 3. Xen Hypervisor + VM Images Konzepte zur Ausführung virtueller Maschinen GPU-Virtualisierung Erstellen einer Imagedatei für Xen 4. dopencl Netzwerk-Komponente Aufbau der Netzwerk-Komponente Konfiguration von Servern Vorführung eines Beispielprogramms mit dopencl
Einführungsreferate: Themen 17 5. dopencl Cloud-Komponente Aufbau der Cloud-Komponente Konfiguration der Cloud Starten einer Cloud-Ressource im Netzwerklabor mit dopencl 6. Mapping von Anforderungen zu Ressourcen in dopencl Illustration des Mapping-Problems: OpenCL- vs Cloud-Sicht Mapping in dopencl Probleme und Lösungsansätze
Nächste Schritte 18 1 Jetzt: Priorisierung der Themen in Liste eintragen (alle Themen berücksichtigen!) Zuordnung bis Dienstag durch Betreuer; Benachrichtigung per Email 2 Einarbeitung in zugewiesenes Referatsthema und Erarbeiten eines Kurzvortrags (10 Minuten pro Thema) Einarbeitung heißt nicht nur lesen, sondern auch Erprobung in der Praxis 3 Besprechung des Vortrags ca. eine Woche vor dem Vortragstermin Folien per Email an Betreuer Besprechung mit dem Betreuer 4 Vortrag am 11. Oktober 2011
Themen 19 1. OpenCL Programmiermodell + API (Philipp) 2. Eucalyptus Architektur + API (Dominik) 3. Xen Hypervisor + VM Images (Dominik) 4. dopencl Netzwerk-Komponente (Philipp) 5. dopencl Cloud-Komponente (Philipp) 6. Mapping von Anforderungen zu Ressourcen in dopencl (Dominik)
20 Weitere Informationen unter http://pvs.uni-muenster.de/pvs/lehre/ws11/projekt/