SIGS DATACOM Fachinformationen für IT-Professionals

SOFTWARE MEETS BUSINESS:
Die Konferenz für Software-Architektur
21. - 25. Januar 2019, München

Sessionsdetails

Vortrag: Mo 2
Datum: Mo, 21.01.2019
Uhrzeit: 10:00 - 17:00
cart

Workshop Moderne Parallelität: Technologieauswahl und Architekturdefinition für Multi-Core Projekte

Uhrzeit: 10:00 - 17:00
Vortrag: Mo 2 - Full Day

 

Sie lernen im Tutorial die aktuellen Technologie-Paradigmen der Parallelen Programmierung und innovative Ansätze wie die Parallelisierung in Go kennen, bewerten deren Vor- und Nachteile und konzipieren auf dieser Basis Architekturen für Ihre Parallelisierungsprojekte.
Sie lernen dadurch, Fragen der folgenden Art zu beantworten:
Wann sind User-Mode Task-Scheduler geeigneter als Threads? Wo sollte man transparente Parallelisierungsansätze wie PLINQ oder Parallel Streams nutzen, worin besteht der Vorteil von Channels? Was sind die Auswirkungen der Memory-Modelle moderner Multi-Core CPUs, und wie geht man einfach und sicher damit um?
Wir schauen uns die Architekturen erfolgreicher und gescheiterter Multi-Core-Migrationsprojekte an, sodass sichtbar wird, welche Architektur-Entscheidungen zu tragfähigen Lösungen führen.
Programmierübungen (Java, C#, C++, Go) sichern den Praxis-Transfer.

Hardware / Software Voraussetzungen
Jeder Teilnehmer sollte einen Laptop mit in den Workshop bringen, um die Übungen zu bearbeiten. Folgende Software muss darauf installiert sein:

1.  Oracle Virtual-Box, in einer aktuellen Version. Der kostenlose Download ist unter folgendem Link aufrufbar:  
www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html

Auf dem Workshop wird ein Virtual-Box Image zur Verfügung gestellt, in dem alle Übungen bearbeitet werden können. 

2. Alternativ bzw. ergänzend dazu ist es auch möglich, einen Großteil der Übungen nativ ohne Virtual-Box zu bearbeiten. Dafür ist eine der folgenden Umgebungen erforderlich:
- Java 8 oder neuer, mit geeigneter IDE (z.B. Eclipse) oder
- Microsoft Visual Studio 2017 oder neuer (für C++ / C#)

Zielpublikum: Architekten, Entwickler und Entscheider, die Multi-Core-Software konzipieren oder pflegen
Voraussetzungen: Programmierkenntnisse nötig, OS-Basics hilfreich, Parallelisierungswissen nicht erforderlich
Schwierigkeitsgrad: Fortgeschritten

Extended Abstract
Das Tutorial ist ideal sowohl für Entscheider als auch für Entwickler, die sich eine praxisnahe Übersicht der Parallelisierungs-Technologien verschaffen wollen.
Die Teilnehmer lernen, die aktuellen Technologien der Parallelen Programmierung zu bewerten und auf dieser Basis Software-Architekturen für ihre Parallelisierungsprojekte zu konzipieren.
Das Tutorial schlägt den Bogen von typischen Problemen der Parallelität zu Lösungen mit modernen Technologien. Dabei werden die Unterschiede zwischen den heute relevanten Technologie-Paradigmen deutlich herausgearbeitet und die Teilnehmer lernen einzuschätzen, welche Technologien für welche Anwendungsszenarien geeignet sind. Wann z.B. sind User-Mode Task-Scheduler geeignet und wann sind Threads die bessere Alternative, wo sollte man transparente Parallelisierungsansätze wie PLINQ oder Java Parallel Streams nutzen, und worin besteht der Vorteil von Message Passing, wie beispielsweise mit Channels in der Sprache Go?
Neben den Technologien stehen auch Architekturen im Fokus: Wir schauen uns erfolgreiche und gescheiterte Multi-Core-Migrationsprojekte an, sodass sichtbar wird, welche Architektur-Entscheidungen zu tragfähigen Lösungen in der Praxis führen. Am Beispiel von Realtime-Systemen werden die Konsequenzen und Risiken von Design-Entscheidungen auf vielen Ebenen des Technologie-Stacks verdeutlicht. Es wird z.B. gezeigt, welche Parallelitätskonzepte sich schwer auf Multi-Core CPUs übertragen lassen und welche Alternativen möglich sind.
Es wird gezeigt, wie sich moderne Multi-Core-Hardware auf parallele Software auswirkt. Die Effekte von Relaxed-Consistent Memory-Models werden dabei praktisch erfahrbar gemacht.
Die Inhalte werden durch Übungsaufgaben vertieft. Diese Übungsaufgaben und Musterlösungen liegen in den gängigen Programmiersprachen und Betriebssystem-Umgebungen vor, sodass jeder Teilnehmer in der für sein reales Projekt relevanten Umgebung üben kann. Teilnehmer erhalten ein VM-Image, um die Übungen ohne Installationsaufwand durchzuführen.
Sprachen: Java, C#, C++11, Go