Fakultät Informatik Institut für Software- und Multimediatechnik, Lehrstuhl für Softwaretechnologie Kick-Off Paralleles Programmieren 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! 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 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 4 / 12
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... 5 / 12
Szenario: SequentialBank 6 / 12
Szenario: SequentialBank Muster Role Object Pattern Abbildung 3: Strukture des Role Object Patterns [5] 7 / 12
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) 8 / 12
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 9 / 12
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 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) 11 / 12
Kick-Off Paralleles Programmieren Ende 12 / 12