Suchen
Company Topimage

MicroConsult Microelectronics Consulting & Training GmbH

https://www.microconsult.de/
Firma bearbeiten

20.07.2020 - 24.07.2020 in München, MicroConsult

Multithread-/Multicore-Programmierung

21.02.2019
Veranstaltungsort: München, MicroConsult
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.

Inhalt

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.