Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Multithread-/Multicore-Programmierung - Präsenz-Training

  • Inhalt
     
  • Ziele -
    Ihr Nutzen
  • Teilnehmer
     
  • Voraussetzungen
     

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.

Im Preis enthalten:
Mittagessen, Getränke, Trainingsunterlagen und Ihr Teilnahmezertifikat


ALL INCLUSIVE!

Verwandte Trainings

RTOS-Grundlagen und Anwendung: Mechanismen und deren Einsatz in Laufzeit-Architekturen für Embedded- und Echtzeitsysteme - Präsenz-Training
Anmeldecode: RTOS-AR

RTOS-Anwendung: Entwicklung von Laufzeit-Architekturen für Embedded- und Echtzeitsysteme - Präsenz-Training
Anmeldecode: RTOS-RT

Embedded C Schulung: Programmiermethoden und -tools für Embedded-Anwendungen - Präsenz-Training
Anmeldecode: EMB-C

Embedded C++: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ und UML - Präsenz-Training
Anmeldecode: EC++

Embedded C++ für Fortgeschrittene: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ - Präsenz-Training
Anmeldecode: EC++FOR

DSP-Grundlagen: Applikationen mit dem Mikrocontroller - Präsenz-Training
Anmeldecode: DSP-G

Embedded-Multicore-Mikrocontroller in der Praxis - Präsenz-Training
Anmeldecode: µCMULTI

Linux Multithread-/Multicore-Programmierung - Präsenz-Training
Anmeldecode: LIN-MMP

Coaching: Embedded- und Echtzeit-Betriebssysteme, RTOS
Anmeldecode: C-EMB-RTOS

Coaching: Windows-Programmierung
Anmeldecode: C-WIN-PRG

Coaching: (Embedded) Linux-Programmierung
Anmeldecode: C-LIN-PRG

Coaching: Multicore-Programmierung
Anmeldecode: C-MULTI

Coaching: Multicore-Mikrocontroller-Auswahl
Anmeldecode: C-MULTISE


Verwandte Trainings

Präsenz-Training

Preis *Dauer
-4,5 Tage
Anmeldecode: MMP
* Preis je Teilnehmer, in Euro zzgl. USt.
> Download Blanko-Anmeldeformular> Trainingsbeschreibung als PDF

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.

> Trainingsbeschreibung als PDF

Live-Online - Deutsch

Dauer
4,5 Tage  

Coaching

Unsere Coaching-Angebote bieten den großen Vorteil, dass unsere Experten ihr Wissen und ihre Erfahrungen direkt in Ihren Lösungsprozess einbringen und damit unmittelbar zu Ihrem Projekterfolg beitragen.

Coaching: Multicore-Mikrocontroller-Auswahl

Multithread-/Multicore-Programmierung - Präsenz-Training

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.

MicroConsult Plus:

  • Sie erhalten von uns Ihre Übungsverzeichnisse und Lösungsbeispiele für alle Übungsaufgaben.