Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Multithread-/Multicore-Programmierung

  • 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 Fülle von 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 der 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:

  • Alle Lösungen und verwendeten Methoden werden vom Trainer individuell mit den Teilnehmern besprochen. Ferner bekommen Sie von MicroConsult einen kostenlosen USB-Stick und können darauf alle Ihre erstellten Übungsbeispiele und Musterlösungen speichern. Damit stehen Ihnen alle praktischen Lerninhalte für den Einsatz bei Ihren Entwicklungen zur Verfügung.


Im Preis enthalten:

Mittagessen, Getränke, Trainingsunterlagen und Teilnahmezertifikat


Für Personalabteilungen

Sie können in unserem Online-Formular bis zu 5 Teilnehmer auf ein Training buchen.
Möchten Sie mehrere Teilnehmer auf verschiedene Trainings buchen, kontaktieren Sie uns bitte!

Bitte beachten Sie auch unser Bonusprogramm bei der gleichzeitigen Buchung von mehreren Trainings und/oder Teilnehmern.

Für Personalabteilungen

Verwandte Trainings

Embedded-Multicore-Mikrocontroller in der Praxis
Trainings-Code: µC-MULTI

RTOS-Grundlagen und Anwendung: Mechanismen und deren Einsatz in Laufzeit-Architekturen für Embedded- und Echtzeitsysteme
Trainings-Code: RTOS-ARCH

OSEK-Grundlagen
Trainings-Code: OSEK

Embedded C Schulung: Programmiermethoden und -tools für Embedded-Anwendungen
Trainings-Code: EMB-C

Embedded C++: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ und UML
Trainings-Code: EC++

Embedded C++ für Fortgeschrittene: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++
Trainings-Code: EC++/FOR

C++ Kurs: Objektorientierte Programmierung mit C++
Trainings-Code: C++

C++ Schulung für Fortgeschrittene: Weiterführende Programmiertechniken für C++ Entwickler
Trainings-Code: C++/FOR


Verwandte Trainings

Offenes Training

TerminPreis *Dauer
12.03. – 16.03.20182.250,00 €4,5 Tage 
11.06. – 15.06.20182.250,00 €4,5 Tage 
05.11. – 09.11.20182.250,00 €4,5 Tage 
11.03. – 15.03.20192.250,00 €4,5 Tage 
Anmeldecode: MMP
* Alle Preise zzgl. der gesetzlichen USt.


> Download Blanko-Anmeldeformular
> Trainingsbeschreibung als PDF

Inhouse 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

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.

Für Ihre Anfrage oder weiterführende Informationen stehen wir Ihnen gern zur Verfügung.

Multithread-/Multicore-Programmierung

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:

  • Alle Lösungen und verwendeten Methoden werden vom Trainer individuell mit den Teilnehmern besprochen. Ferner bekommen Sie von MicroConsult einen kostenlosen USB-Stick und können darauf alle Ihre erstellten Übungsbeispiele und Musterlösungen speichern. Damit stehen Ihnen alle praktischen Lerninhalte für den Einsatz bei Ihren Entwicklungen zur Verfügung.

Merkzettel


Sie haben derzeit keine Trainings auf dem Merkzettel.