Formation Programmation Avancée Multithread C/C++

Logo Formation Multithread C et C++

1700€

1530€HT/ personne

3 jours (21 heures)

Objectifs

Cette formation sur la programmation parallèle en général, et l’approche multi­thread en particulier, vous permettra d’approfondir vos connaissances sur les architectures multi­cores modernes, leur support dans Linux (2.6+), les outils de développements afin de développer des applications multi­thread plus simples et plus performantes.

Vous aborderez les concepts, procédés de modélisation et design patterns des applications multithread ainsi qu’un large choix d’outil facilitant leurs conceptions et développements. Un regard approfondi sera porté sur les primitives fournies par le matériel et le système, ainsi que leurs impacts en termes de performance. De même, certaines approches issues de la programmation temps-­réel, pertinentes dans les applications multi­thread classiques ­et leur optimisation, seront étudiées.

 

Public visé

Développeurs, Architectes

 

Pré-requis

  • Connaissance de l’environnement de développement Linux
  • Connaissance des langages C et C++

Programme de la formation Multithread C/C++

Concepts de base de la programmation multi­thread

  • Modèle de gestion de tâches et de mémoire
  • Principe du fonctionnement matériel

 

Étude des APIs POSIX/Linux

  • Threads
  • Primitives de synchronisations
  • Mémoire partagée & sémaphore SYSV, l’approche multi­process
  • Thread local storage

 

Le threading avec C++11

 

Parallèlisation des algorithmes

  • Partitionnement des données
  • Modélisation des dépendances et interactions, définition du pipeline
  • Correspondance avec l’architecture
  • Reduction des données
  • Example de patterns

 

Architecture matérielle

  • Mono/multi processeur, mono/multi-cœur
  • « Hyperthreading »
  • Gestion des caches
  • Gestion de la mémoire et NUMA

 

Ordonnancement

  • Anatomie d’une tâche
  • Changement de contexte et coût en performance
  • Ordonnancement
  • L’ordonnanceur Linux
  • Gestion des priorités
  • Les queues temps-réel
  • Implémentation des primitives de synchronisation.
  • Inversion de priorité

 

Gestion de la mémoire

  • Mémoire virtuelle : MMU, pages et TLB
  • Les optimisations en multi­process
  • Mémoire partagée, TLS
  • Le support de NUMA

 

Un regard sur la latence et le temps-­réel

  • Anatomie d’un syscall
  • Latence des syscalls
  • Gestion de la mémoire et des I/O en userland

 

Étude et pratique des outils de développement

  • Debug multithread sur gdb/lldb
  • Kernel
    • perf
    • lockdep
    • stat
    • autre
  • La suite valgrind, intrinsic
  • Outils d’analyse et de contrôle de la gestion mémoire et des caches.
  • Outils d’analyse et de contrôle du scheduler

 

Étude et pratique des outils de développement

  • Thread safe containers
  • Lock­free data structure
  • Design patterns

 

Optimisation

  • Cache fighting & false sharing
  • Contention autour des verrous
  • Hyper­threading
Langues et Lieux disponibles

Langues

  • Français
  • Anglais / English

Lieux

  • France entière
    • Paris
    • Lille
    • Reims
    • Lyon
    • Toulouse
    • Bordeaux
    • Montpellier
    • Nice
    • Sophia Antipolis
    • Marseille
    • Aix-en-Provence
    • Nantes
    • Rennes
    • Strasbourg
    • Grenoble
    • Dijon
    • Tours
    • Saint-Étienne
    • Toulon
    • Angers
  • Belgique
    • Bruxelles
    • Liège
  • Suisse
    • Genève
    • Zurich
    • Lausanne
  • Luxembourg

Nos Formateurs Référents

Julien

Julien

Notre formateur référent sur cette formation partagera son incroyable expérience acquise chez Facebook !

Témoignages

Donnez votre avis ?

Afficher tous les témoignages

Donnez votre avis ?

Noter la formation

1700€

1530€HT/ personne

3 jours (21 heures)

Une question ? Un projet ?

Pour des informations complémentaires, n’hésitez pas à nous contacter.