> Projektseminar im SoSe 2011 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 Mai) Anregungen zu Entwurf und Implementierung
Abschlussarbeiten 8 Abschlusspräsentation Technischer Bericht: Komponenten, Algorithmen, Umsetzung Nach Fertigstellung der Implementierung, erste Messergebnisse (Ende Juli) 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 (Ende August)
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 18.03.2011: Vorbesprechung 05.04.2011: Referate: Grundlagen 31.05.2011: Prototyp Software, Zwischenpräsentation 26.07.2011: Fertigstellung Software, Abschlussvortrag 26.08.2011: Fertigstellung der Ausarbeitung 1 Die Terminplanung ist vorläufig und ändert sich ggf. während des Projektseminars
Projektaufgabe 11 Zwei Aufgabenbereiche (Überlappungen möglich): 1 Entwurf und Implementierung einer OpenCL-Bibliothek zur Verwendung von GPUs und CPUs in Cloud-Systemen Lokalisierung verfügbarer Rechenressourcen Transparente Weiterleitung und Ausführung von OpenCL-Befehlen auf entfernte Rechenressourcen 2 Entwurf und Implementierung einer Ressourcen-Management-Komponente für hybride GPU-/CPU-Clouds Auswahl geeigneter Rechenressourcen Dynamisches Starten geeigneter Cloud-Instanzen
Illustration der Aufgabe 12 Client Anwendung OpenCL Ver Server Verbindungs-Komp. OpenCL CPU GPU Zugriff auf Rechenressourcen in einem verteilten System Dynamisches Anfragen geeigneter Cloud-Instanzen
Aktueller Stand der Entwicklung 13 Festlegung der Programmmodule und deren Interaktion dopencl (Implementierung der OpenCL-API, C) dopencl Kommunikations-API (C) zzgl. C++-Binding dopencl Server (C++) Lokalisierung von Rechenresourcen und Informationsabfrage Erzeugung diverser OpenCL-Objekte (Context, Buffer, CommandQueue,...) Transfer von Daten und Programmen
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 Cloud-Computing 2 Ressourcen-Management-Strategien 3 Performance-Modelle 4 OpenCL-Programmiermodell 5 OpenCL-API 6 Netzwerk-Programmierung mit Sockets 7 Related Work
Einführungsreferate: Themen 15 1. Cloud-Computing Grundlegende Konzepte: IaaS-Prinzip, Hardware-Virtualisierung, Kommunikation mit Cloud Service Architektur der Eucalyptus Private Cloud und des Amazon EC2 Webservice 2. Ressourcen-Management-Strategien Abstrakter Aufbau einer Ressourcen-Management-Komponente Klassifizierung vorhandener Ansätze: Systemorganisation, Ressourcenbeschreibung, Strategien zur Lastverteilung Konkrete Umsetzungen 3. Performance-Modelle Strategien zur Auswahl geeigneter Verarbeitungseinheiten Methoden zur Laufzeitabschätzung
Einführungsreferate: Themen 16 4. OpenCL-Programmiermodell Vorstellung der wichtigsten Konzepte von OpenCL: Host, Device, Kernel,... Erläuterung des Aufbaus eines OpenCL Devices Erläuterung der Ausführung eines OpenCL Kernels auf einem Device 5. OpenCL-API Einführung in die praktische Programmierung mit OpenCL Erstellung und Vorführung eines einfachen Beispielprogramms in OpenCL
Einführungsreferate: Themen 17 6. Netzwerk-Programmierung mit Sockets Grundlegende Konzepte der Socket-Programmierung: Verbindungsaufbau, Datenübertragung, Protokolle, Fehlerbehandlung Erstellung und Vorführung eines einfachen Beispielprogramms in C 7. Related Work Vorstellung und ggf. Vergleich bisheriger Arbeiten zu netzwerkbasierten OpenCL-Implementierungen Evaluation und Selektion möglicher Lösungsansätze für die Aufgabenstellung des Projektseminars
Nächste Schritte 18 1 Jetzt: Priorisierung der Themen in Liste eintragen (alle Themen berücksichtigen!) Zuordnung bis Montag 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 Gegebenenfalls Besprechung mit dem Betreuer 4 Vortrag am 05. April 2011
Themen 19 1 Cloud-Computing (Dominik) 2 Ressourcen-Management-Strategien (Dominik) 3 Performance-Modelle (Dominik) 4 OpenCL-Programmiermodell (Michel) 5 OpenCL-API (Michel) 6 Netzwerk-Programmierung (Philipp) 7 Related Work (Philipp)
20 Weitere Informationen unter http://pvs.uni-muenster.de/pvs/lehre/ss11/projekt/