Fakultät Informatik Institut für Software- und Multimediatechnik, Lehrstuhl für Softwaretechnologie Kick-Off Paralleles Programmieren Hauptseminar Thomas Kühn Motivation Moore's Law „The complexity for minimum component costs has increased at a rate of roughly a factor of two per year.“ – G. Moore [1] Physikalische Grenze der Prozessorgeschwindigkeit erreicht ● Taktfrequenz ● Leistung (Energieverbrauch) Trend geht zu Mehrkern- und Co-Prozessorarchitekturen ● Mehrkern CPU's ● CPU und GPU in einem Chip Abbildung 1: Intel CPU Introductions [2] Moore's Law gilt weiterhin! HS Paralleles Programmieren 2 / 12 Motivation The Free Lunch is Over „Software is getting slower more rapidly than hardware becomes faster.“ – N. Wirth [3] Programme profitieren ● direkt von schnelleren Prozessoren ● indirekt von Optimierungen des Compilers für bestimmte Prozessortypen Programme profitieren nicht ● direkt von mehr Kernen im Computer ● indirekt von Spezial-Prozessoren (z.B. GPUs) Nicht jedes Programm ist parallelisierbar [4] Parallelisierung unentscheidbar für Compiler Programmiersprachen müssen Konzepte bereitstellen um paralleles Programmieren zu ermöglichen HS Paralleles Programmieren 3 / 12 Motivation Anforderungen an Programmiersprachen Welche Konzepte moderner Programmiersprachen erleichtern die Entwicklung von parallelen Anwendungen? Abbildung 2: Programmierung der ENIAC [U. S. Army Photo] Unterstützen des Objekt-orientierten Paradigmas Bereitstellen einfacher Konzepte für Parallelität Unterstützen von Synchronisationsmechanismen HS Paralleles Programmieren 4 / 12 Hauptseminar Themenvorschläge Erlang von Ericsson http://www.erlang.org C# zusammen mit Rx von Microsoft http://msdn.microsoft.com/de-de/data/gg577609.aspx Eiffel SCOOP von Bertrand Meyer http://docs.eiffel.com/book/solutions/concurrent-eiffel-scoop Concurrent Haskell von Simon Peyton Jones et. al. http://www.haskell.org/haskellwiki/GHC/Concurrency Go von Google Corperation http://golang.org Rust von Mozilla Research http://www.rust-lang.org ParaSail von Tucker Taft http://parasail-programming-language.blogspot.de B von Mark S. Miller, Dan Bornstein http://www.erights.org Weitere Vorschläge ... HS Paralleles Programmieren 5 / 12 Hauptseminar Szenario: SequentialBank HS Paralleles Programmieren 6 / 12 Hauptseminar Szenario: SequentialBank Muster Role Object Pattern Abbildung 3: Strukture des Role Object Patterns [5] HS Paralleles Programmieren 7 / 12 Hauptseminar Szenario: ParallelBank Abbildung 3: Titan HPC [Courtesy of Oak Ridge National Laboratory, U.S. Dept. of Energy] Implementierung einer parallelen Bankanwendung Implementieren der SequentialBank Parallelisierung der Anwendung mit modernen Sprachkonzepten Anforderungen Transaktionen werden zu jeder Zeit (parallel) durchgeführt Überweisungen können zu jeder Zeit durchgeführt werden Jede Transaktion wird irgendwann ausgeführt (fairness) HS Paralleles Programmieren 8 / 12 Hauptseminar Aufgabenstellung Auswahl einer Programmiersprache Einzelne Bearbeitung der Themen Implementierung des Szenarios mit der gewählten Sprache Präsentation der Programmiersprache ● 45 min. Vortrag ● Sprachfeatures für Parallelität / Nebenläufigkeit ● Implementierung des Szenarios Schriftliche Ausarbeitung ● 7-9 Seiten ● Erstellt mit Hilfe von Latex ● Style Lecture Notes On Computer Science (LNCS) ● Sprachfeatures für Parallelität / Nebenläufigkeit ● Implementierung des Szenarios HS Paralleles Programmieren 9 / 12 Hauptseminar Organisation Nächster Termin 24.10.2013 Themenauswahl Kurze Beschreibung der Sprache (5 min) Weitere Organisation Weitere Plannung Einreichen der Inhaltsangabe und Gliederung Anfang Dezember Abgabe des schriftlichen Teils im Anfang Januar Gemeinsamer Reviewprozess der Arbeiten mit EasyChair.org Vorträge in (einer) Blockveranstaltung im Ende Januar HS Paralleles Programmieren 10 / 12 Referenzen [1] Cramming more Components onto Integrated Circuits Gordon E. Moore Electronics Magazine (1965) [2] The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software Herberd Sutter Dr. Dobb's Journal (2005) [3] A Plea for Lean Software Niklaus Wirth Computer 28.2 (1995) [4] Limits to Parallel Computation: P-completeness Theory Raymond Greenlaw, H. James Hoover, and Walter L. Ruzzo. Oxford university press (1995) [5] The Role Object Pattern Dirk Bäumer, et al. Washington University Dept. of Computer Science (1998) HS Paralleles Programmieren 11 / 12 Kick-Off Paralleles Programmieren Ende HS Paralleles Programmieren 12 / 12