Multithread-/Multicore-Programmierung - Live-Online-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.
Dauer | |
---|---|
4,5 Tage |
Anmeldecode: L-MMP * Preis je Teilnehmer, in Euro zzgl. USt. |
> Download Blanko-Anmeldeformular
> Trainingsbeschreibung als PDF