Softwarekonferenz für parallele, nebenläufige
und asynchrone Programmierung und HPC
Heidelberg, Print Media Academy, 6.-8. März 2018

// Parallele Mechanismen in C++ für Fortgeschrittene

C++11 hat für parallele Abläufe in C++ die Grundlagen geliefert. Modernes C++ bietet einige Mechanismen, um den Einsatz von Multithreading einfach zu gestalten. Aber sobald man die üblichen Wege verlässt und spezielle Anforderungen umsetzen will, lauern jede Menge Fallen. Wenn diese Fallen jedoch vermieden werden, bietet C++ viele Möglichkeiten, hochperformante oder auch einfach nur korrekt funktionierende Programme zu entwickeln.

Dieser Workshop präsentiert die üblichen Mechanismen zur Realisierung paralleler und nebenläufiger Strukturen in C++ und welche Risiken und Nebenwirkungen dabei lauern bezüglich Korrektheit und Performanz. Darauf aufbauend werden die Möglichkeiten vorgestellt, um diesen Fallen auszuweichen und sowohl korrekte als auch hochperformante Systeme zu realisieren. Dabei wird unter anderem auch auf Unterschiede der verschiedenen Hardwarearchitekturen eingegangen und die Auswirkungen sowohl auf die Korrektheit als auch auf die Performanz erläutert. Auch das Testen und die Fehlersuche wird an konkreten Beispielen demonstriert.

Agenda

  • ab 10.00: Registrierung und Begrüßungskaffee

  • 11.00: Beginn

  • 11.00 - 12.30:


    • Standardmechanismen zur Parallelisierung und Concurrency und ihre Probleme

    • Mechanismen ohne Synchronisation


  • 12.30 - 13.30: Mittagspause

  • 13.30 - 15.00: Memory-Model und Atomics

  • 15.00 - 15.15: Kaffeepause

  • 15.15 - 16.30: Lock-free-Mechanismen mit Atomics

  • 16.30 - 16.45: Kaffeepause

  • 16.45 - 18.00: Lock-free-Mechanismen ohne Atomics

  • ca. 18 Uhr: Ende

Vorkenntnisse
* C++17-Kenntnisse zur Synchronisation und Parallelisierung
* Dieser Workshop setzt High-Level-Mechanismen wie parallele Algorithmen, async, futures und grundlegendes Locking voraus und legt den Schwerpunkt auf Low-level-Aspekte und Lock-free-Strukturen.

Lernziele
* Verständnis für die Einschränkungen der High-level-C++-Mechanismen zur Umsetzung paralleler und nebenläufiger Systeme.
* Kenntnisse zur Umsetzung eigener (möglicherweise lock-free) Daten- und Kontrollstrukturen, um spezielle Anforderungen zu erfüllen und bessere Performanz zu erreichen


// Detlef Vollmann Detlef Vollmann

ist ein aktives Mitglied des C++-Standardisierungskommitees (hauptsächlich in der Unterkommission zur Concurrency). Er ist einer der (vielen) Autoren des "C++ Performance Report" und führte die Futures in C++11 ein. Er liefert Support und Schulung zu Embedded-Systemen und Concurrency in C++.