Parallele Programmierung

2-tägiger Workshop über Programmierung, Technologie und Architekturen für moderne parallele Anwendungen auf Multicore-Prozessoren

Zielsetzung:

Die Parallele Programmierung ist heute eine Schlüsseltechnologie für die Performancesteigerung von Software. Aufgrund begrenzter Taktratensteigerung und steigender Anzahl der Kerne in Standard-CPUs kann nur noch diejenige Software von Hardwareinnovationen profitieren, die kontinuierlich weiter parallelisierbar ist. Die Techniken der Parallelen Programmierung gehören daher zum unabdingbaren Handwerkszeug für Entwickler und Architekten.

In diesem Seminar wird die parallele Programmierung praxisnah und von Grund auf erschlossen. Wir arbeiten uns von den theoretischen Grundlagen über die klassische Parallelisierung mit Threads hin zu den heute wichtigen Task-Schedulern. Dabei sehen wir, wie Synchronisations-Konzepte für die Koordination paralleler Aufgaben am besten genutzt werden, und wir lernen mit den Memory-Modellen moderner Multicore-CPUs umzugehen. Alle Unterrichtsinhalte werden durch konkrete Programmierübungen vertieft, die wahlweise in Java, C#  oder in C++ durchgeführt werden können.

 

Seminarinhalte:

Die praktische Anwendung aktueller Technologien für die Parallele Programmierung steht im Mittelpunkt des Seminars. Das Seminar gliedert sich in die folgenden drei Themenfelder:

  • Anwendung moderner Task Scheduling APIs
  • Grundlagen der Parallelverarbeitung (klassisches Multi-Threading)
  • Hardware-Architekturen und Memory-Modelle

Praktische Übungen legen das Fundament für den erfolgreichen Transfer in die Praxis. Die Übungen, Musterlösungen und Beispiele liegen in C#, Java, C++ 11, P-Threads, und Win32 vor, so dass jeder Teilnehmer in seiner realen Arbeitsumgebung üben kann.

Task Scheduler, wie TPL, TBB und Java Fork-Join, bei denen feingranulare Tasks auf Threads abgebildet werden, finden sich heute in den meisten Programmierumgebungen. Paradigmen, wie die transparente Parallelisierung (z.B. mit PLINQ in C# und OpenMP in C++), Message-Passing zur Sicherung der Datenkonsistenz oder Lock-Free Programmierung zur Performancesteigerung gewinnen derzeit ebenfalls an Bedeutung. Im Seminar werden die Programmiermodelle sowie die Grenzen dieser Technologien erarbeitet und anhand vieler praktischer Beispiele erläutert.

Basis all dieser moderneren Ansätze sind die klassischen Thread APIs und deren Synchronisationsmechanismen (z.B. Mutex, Monitor und Semaphor). Ein gründliches Verständnis dieser Technologien wird im Seminar erarbeitet, um das Verhalten und die Anwendbarkeit der oben genannten abstrakteren Technologien einschätzen zu können.

Moderne Hardware- und Software-Umgebungen (z.B. Intels IA 64 und die Java VM) sind mit sogenannten schwachen Memory-Modellen ausgestattet, um die Performance paralleler Programme bei wachsender Anzahl der CPU-Kerne kontinuierlich zu steigern. Im Seminar werden die oftmals kontraintuitiven Verhaltensweisen dieser Modelle aufgezeigt und die Vorgehensweisen zur Entwicklung korrekter paralleler Programme vermittelt.

Architekturen für parallele Softwaresysteme müssen sowohl die Komplexität der Parallelverarbeitung kapseln als auch ein effizientes Laufzeitverhalten ermöglichen. Im Seminar werden geeignete Patterns und Vorgehensweisen für die Konzeption der Architektur nebenläufiger Systeme vorgestellt.

 

Zielgruppe:

Zielgruppe des Seminars sind Entwickler und Softwarearchitekten, die in ihren Projekten parallele Software entwickeln oder dieses planen. Es werden sowohl die besonderen Herausforderungen der Parallelisierung vorhandener Software als auch die Konzeption und Realisierung komplett neuer Systeme behandelt.

 

Voraussetzungen:

  • Programmierkenntnisse in einer der Programmiersprachen C, C++, Java, C# sind notwendig
  • Grundkenntnise von Betriebssystemen sind hilfreich
  • Wenn möglich sollte ein Laptop mit Visual Studio 2012 (oder neuer) oder mit Java 7 (oder neuer) mit in den Kurs gebracht werden

 

Der Workshop ist auf 12 Teilnehmer begrenzt!

 

++ Sichern Sie sich für den Zusatztermin bis 6. Februar 10% Frühbucherrabatt ++

Teilnahmegebühr (inkl. MwSt.):
Frühbucherticket: 1.071,00 Euro (bis 06.02.2017)
Standardticket: 1.190,00 Euro

++++++++++++++++++++++++++++++++++++++++++++++++++

 

nach oben

Programm Parallele Programmierung

Tag 1

08:30 - 09:00 Uhr Registrierung

 
09:00 - 10:30 Uhr

TEIL 1: The State of The Art: Übersicht der aktuellen Parallelisierungs-Technologien

  • Threads
  • Tasks
  • Transparente-Parallelisierung, Message-Passing, Cluster-Computing


10:30 - 11:00 Uhr Kaffeepause

 

11:00 - 12:30 Uhr

Fortsetzung TEIL 1: The State of The Art: Übersicht der aktuellen Parallelisierungs-Technologien


12:30 - 13:30 Uhr Mittagspause


13:30 - 15:00 Uhr

TEIL 2: Klassische Thread-Programmierung, mit Übungen zu Java und C# Thread-APIs

  • Parallelität: Threads
  • Gegenseitiger Ausschluss: Synchronisation, Mutex und Lock
  • Koordination von Threads: Monitor und Procedur-Consumer

 

15:00 - 15:30 Uhr Kaffeepause

 

15:30 - 17:00 Uhr

Fortsetzung TEIL 2: Klassische Thread-Programmierung, mit Übungen zu Java und C# Thread-APIs

Tag 2
 
09:00 - 10:30 Uhr

TEIL 3: Task-Programmierung: Work-Stealing User-Mode Task-Scheduler in Theorie und Praxis

  • Task-Programmierung
  • Task-Konzepte
  • .Net C# TPL und Java Fork-Join Tutorial

 

10:30 - 11:00 Uhr Kaffeepause

 

11:00 - 12:30 Uhr

Fortsetzung TEIL 3: Task-Programmierung: Work-Stealing User-Mode Task-Scheduler in Theorie und Praxis

 

12:30 - 13:30 Uhr Mittagspause

 

13:30 - 15:00 Uhr

TEIL 4: Memory-Modelle in moderner Multicore-Hardware

  • Relaxed Consistancy: Definition und Motivation
  • Maßnahmen zur Konsistenz-Sicherung in Hardware und Software
  • Atomare Instruktionen und Spinlocks: HW-Grundlagen für Semaphoren in OS

 

15:00 - 15:30 Uhr Kaffeepause

 

15:30 - 17:00 Uhr

Fortsetzung TEIL 4: Memory-Modelle in moderner Multicore-Hardware

 

nach oben

Termin:

7. - 8. März 2017

 

Veranstaltungsort:

Heise Medien GmbH & Co.KG
Karl-Wiechert-Allee 10
30625 Hannover

Marwan Abu-Khalil

Referent:

Marwan Abu-Khalil ist Senior Software Architekt (SSWA) in der Siemens AG und arbeitet seit über 10 Jahren an der Parallelisierung unterschiedlichster Systeme vom Server-Backend bis zum Embedded-Device. Er ist langjähriger Trainer für Software-Architektur und spricht auf Konferenzen über Parallelisierung, z.B. auf der kommenden OOP 2016.

Haben Sie noch Fragen zur Anmeldung oder zum Workshop?​

Silvia Langer

Tel.: +49 511 5352-366

E-Mail: sil@heise.de