Multithread-/Multicore-Programmierung - Präsenz-Training
Das Training Multithread-/Multicore-Programmierung macht Sie fit, die Eigenschaften von Multithreading-Systemen zielgerichtet in Ihren Projekten einsetzen.
Sie wissen, welche Probleme gelöst werden müssen, um die Prozessorleistung - insbesondere bei modernen Multicore-Systemen - bestmöglich nutzen zu können.
Damit können Sie existierende Applikationen optimieren und implementieren oder neue Applikationen hinsichtlich effizienter Nutzung der Multicore-Architektur entwerfen.
Mit der allgemein gültigen Behandlung der Themen im Seminar Multithread-/Multicore-Programmierung sind Sie imstande, das erworbene Wissen prinzipiell auf jede Multithreading- oder Multitasking-Plattform anzuwenden.
Mit der Fülle an konkreten C- und C++-Codebeispielen verfügen Sie über einen Pool an Anwendungsbeispielen, die sowohl plattformspezifische Lösungen basierend auf Windows (Win32/64), .NET (C++/CLI) und Linux als auch plattformunabhängige Lösungen auf Basis von Pthreads, Boost, QT und C++11 enthalten.
Software-Entwickler, Software-Architekten und Projektleiter, die die Multithread-Programmierung unter bestmöglicher Ausnutzung der Prozessorleistung in Multicore-Systemen einsetzen wollen.
Kenntnis der Programmiersprache C. Da auch viele C++-Beispiele gezeigt werden, sind C++-Kenntnisse hilfreich, aber nicht Voraussetzung. Somit eignet sich dieses Training auch für Teilnehmer, die ausschließlich mit C programmieren.
Einführung
- Software früher und heute
- Prozessorarchitektur: Singlecore/ Multicore/ Manycore, Hyperthreading
- Systemarchitektur: AMP-/SMP-Systeme
Multithreading
- Task und Scheduler
- Zuordnung von Code und Daten
- Prozesse und Threads
- Scheduling-Modelle
- Singlecore-Multithreading/ Multicore-Multithreading
- Zeitscheibenverfahren
- Nebenläufige Ausführung/ parallele Ausführung
Thread-Programmierung
- Thread-Zustände
- Prioritäten, Prioritätsboost, Scheduling
- Threads und Funktionen; Reentrancy
- Threads und Objekte
- Thread-Erzeugung
- Thread-Unterbrechung
- Thread-Beendigung
Synchronisation
- Speichermodelle
- Polling
- Events
- Race Conditions
- Mutexe/ Locks/ Semaphore:
- Rekursiver Zugriff, Scoped Locking, Fairness, Prioritätsinversion, Reader-/Writer-Locks, Deadlock/ Livelock
- Condition Variable
- Atomare Zugriffe
- Lockfreie Programmierung
- Barrieren
- Einmal-Initialisierung
Kommunikation
- Möglichkeiten der Kommunikation
- Charakteristische Eigenschaften
- Typische Implementierungen:
- Message Queues, Pipes, FIFO, Netzwerk-Sockets
Multicore-Programmierung
- Wann lohnt sich Multicore?
- Amdahl'sches Gesetz
- Arten der Parallelität
- False Sharing
- Prozessor-Affinität
- Spinlocks
- Numerische Berechnungen
- Portierung
Applikationsdesign
- Thread-basiert: Thread-Pools
- Pattern-basiert: Loop Parallelism, Master/Worker, Divide And Conquer, Fork/Join, Geometric Decomposition, Pipeline Pattern
- Bibliotheks-/Framework-basiert: OpenMP, Threading Building Blocks (TBB), Task Parallel Library (TPL)
- Generelle Vorgehensweise (Best Practices)
Praktische Übungen im Kurs Multithread-/Multicore-Programmierung
- Multithread-/ Multicore-Applikationsentwicklung
- Zuverlässige Applikationsbeendigung
- Threadlokaler Speicher
- Aufspüren der Multithread-Probleme einer vorgegebenen Applikation sowie deren Behebung mithilfe unterschiedlicher Synchronisationsmechanismen
- Entwurf und Implementierung einer Client-/Server-Anwendung mithilfe geeigneter Kommunikationsmechanismen
- Optimierung eines sequenziell strukturierten Programms zur Nutzung der Rechenleistung eines Multicore-Systems
- Entwicklung einer Multithread-Applikation auf der Basis eines Design Patterns
- Laufzeitmessungen und Effizienzanalysen
- Die Übungen werden wahlweise unter Windows mit Visual Studio oder unter Linux mit Eclipse durchgeführt.
MicroConsult Plus:
- Sie erhalten von uns Ihre Übungsverzeichnisse und Lösungsbeispiele für alle Übungsaufgaben.
Präsenz-Training
Onsite-Training
In maßgeschneiderten Workshops kombinieren wir Ihre konkreten Projektaufgaben mit unserem Trainingsangebot. Dabei berücksichtigen wir Ihre Anforderungen bezüglich Inhalt, Zeit, Ort, Dauer, technischem Umfeld und Vermittlungsmethodik.
Für Ihre Anfrage oder weiterführende Informationen stehen wir Ihnen gern zur Verfügung.