CATALOGUE Formations 2018 - La performance des logiciels
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
FORMATIONS Vue d’ensemble NUMSCALE propose une NUMSCALE, participant de variété de formations sur manière active à l’évolution du différents thèmes pour langage C++ auprès du comité de transférer son expertise normalisation ISO, impliquée technique aux équipes de entre autre dans l’élaboration des développement logiciel sur tous nouveaux standards sortis en les aspects du parallélisme et 2011 et 2014, propose en de la vectorisation. particulier des formations de pointe autour de ce langage, permettant de maîtriser des Le programme de formation de concepts avancés du langage. NUMSCALE comprend ainsi des formations sur les bonnes Les formations se veulent pratiques pour la performance, le interactives et basées sur la parallélisme et les différents participation des apprenants. La mécanismes des nouvelles manipulation du logiciel est Formations C++ architectures de calculs, en prépondérante. Ainsi, chaque particulier pour le HPC (High concept sera immédiatement suivi Performance Computing). d'une application sur des exemples Formations C Le calcul numérique et de complexités croissantes scientifique est également permettant d'acquérir puis de Formations HPC abordé, le tout autour des maîtriser chacun d'entre eux. Des langages C++, C. exercices plus complets seront Formations GPU aussi proposés afin de compléter l'apprentissage et d'échanger entre participants et formateurs.
FORMATION C++ Les bases du C++ Programme : I. Introduction Historique du langage Pourquoi C++ ? L’héritage du C Normes et évolutions Objectif pédagogique : II. Structures de base d’un programme C++ Le C++ s’impose comme un langage de Types et variables prédilection pour le développement d’applications Structures de contrôle critiques. Il s’agit d’un langage riche dont la prise Fonctions et procédures en main peut s’avérer complexe. Processus de compilation Cette formation a pour objectif de familiariser les III. Aspect impératif apprenants avec C++ en leur fournissant des Définir une fonction bases saines et solides reposant sur les dernières Paramètres, arguments et valeurs de retour normes du langage (C++14 et C++17). Inférence de type Gestion des erreurs Bénéfices attendus : IV. Entrées/sorties Notions de flux Maîtriser les bases de C++14, savoir développer Entrées et sorties standards une application complète en C++ et se familiariser Fichiers textes et binaires avec ses multiples paradigmes. V. La bibliothèque standard Conteneurs Public : Algorithme Fonctions mathématiques Cette formation s’adresse à des développeurs qui Dates et heures désirent s’initier au langage C++ ou migrer de C à Expressions régulières C++. VI. Programmation orientée objets Principes généraux Notion d’interface Héritage Principes de substitution de Liskov Durée de la formation : 3 jours VII. Gestion des ressources systèmes Principe de la RAII Sémantique de valeur, sémantique d’entité Pointeurs à sémantique riche VIII. Programmation générique Fonctions génériques Structures génériques
FORMATION C++ Templates C++ : méta-programmation et techniques avancées Programme : I. Introduction Objectif pédagogique : Principes généraux Classes et fonctions template La programmation par templates en C++ est un Paramètres template : types, valeurs et templates ensemble de techniques avancées permettant Templates et édition de liens d’utiliser le compilateur pour automatiser la Outils et bibliothèques génération de codes complexes. II. Techniques de base Cette formation a pour objectif de familiariser Instanciation, typage et validation l’apprenant avec les techniques de base de ce type Résolution de nom et désambiguïsation de programmations. Spécialisation et surcharge III. Conception avec templates Bénéfices attendus : Calculs à la compilation Méta-fonctions et structures de données Connaître les mécanismes avancés de la Tuples et algorithmes programmation générique et générative en C++. IV. Arbres et expression templates Principes généraux Public : Rappels sur les ASTs Introduction à Boost.Proto Cette formation s'adresse à des développeurs expérimentés en C++ qui souhaitent approfondir leurs compétences sur cet aspect du langage. Durée de la formation : 3 jours
FORMATION C++ Les bonnes pratiques du C++ pour la performance Programme : I. Introduction Objectif pédagogique : Rappel de C++ Le C++ peut-il être performant ? Le C++ s’impose comme un langage de prédilection Historique du langage pour le développement d’applications critiques. Il Pourquoi C++ ? s’agit d’un langage riche dont la prise en main peut s’avérer complexe. II. Notions de base Valeurs, références et pointeurs Cette formation a pour objectif de fournir aux Optimisation et élision des copies apprenants les réflexes permettant de spécifier et de Gestion de la durée de vie des variables développer des composants logiciels performants en C++. III. Gestion des ressources Principes de la RAII La formation se basera sur les dernières normes du Pointeurs à sémantique riche langages C++ (C++14 et C++17). Gestion des temporaires IV. Algorithmes et conteneurs Bénéfices attendus : Performance des algorithmes standards Customisation des allocations mémoires Connaître et savoir adapter les éléments Customisation du parcours des données fondamentaux du C++ afin de garantir les Cache, alignement et mémoire virtuelle performances d’un composant logiciel. V. Polymorphisme et performance Principe des Polymorphismes Public : Performance du Polymorphisme dynamique Le Pattern NVI Cette formation s’adresse à des développeurs C++ Polymorphisme statique vs Polymorphisme pour lesquels les critères de performance sont dynamique critiques. VI. Le parallélisme en C++ Principes généraux OpenMP Durée de la formation : 3 jours bSIMD
FORMATION C++ C++14 et au-delà : évolution du langage et des bonnes pratiques Programme : I. Simplicité Objectif pédagogique : Déduction automatique : auto, decltype, trailing return type Le C++ est un langage vivant soumis à de Boucles généralisées nombreuses évolutions régulières. Cette formation a Fonctions Lambdas pour objectif d’introduire les changements Généricité appliquée: template alias, générique fondamentaux issus de la norme 2014 afin que les variadique apprenants puissent maîtriser et intégrer dans leur Autres éléments de syntaxes simplifiées pratique de développement les nouveaux idiomes qui en découlent. II. Sûreté La RAII et ses applications : gestion avancée des ressources Bénéfices attendus : Pointeur à sémantique forte et sémantique faible Pourquoi bannir new ? Maîtriser les nouveaux éléments du langage C++14. Conteneurs et algorithmes : nouveautés et Anticiper et planifier les changements à apporter changements fondamentaux dans un code Legacy. III. Performances Notions de transférabilité et optimisation des Public : copies : Les r-value references Cette formation s'adresse à des ingénieurs, Polymorphisme Statique vs Polymorphisme techniciens, scientifiques avec des connaissances Dynamique en C++ de niveau intermédiaire. Le multi-threading via std ::thread Parallélisation via Future Durée de la formation : 3 jours Les apprenants pourront mettre en pratique ces éléments sur leur propre base de code. La formation se terminera sur un point prospectif en regardant les nouveautés déjà présentes dans C++ 17.
FORMATION C++ Design Pattern Programme : I. Introduction Pourquoi le design pattern ? Principes généraux de la programmation orientée objets Méthodologie SOLID Application vs bibliothèque Objectif pédagogique : II. Patterns de création Factory & Abstract factory Cette formation a pour objectif de familiariser Composite l’apprenant aux différents patrons de conception et Decorator d’apprendre à structurer l’ensemble de l’architecture Proxy du programme afin de respecter les bonnes pratiques dictées par SOLID. III. Patterns comportementaux Visitor Cette formation est importante pour un apprenant Observer désirant éviter toute erreur de conception dès le Entity/Component/System départ permettant de produire un code extensible et State/Strategy testable. IV. Anti-pattern Singleton Bénéfices attendus : Blob God Object Se familiariser et maîtriser les bonnes pratiques de la programmation orientée objet en sachant reconnaître, choisir et implémenter des patrons de conception adaptés aux besoins. Public : Cette formation s'adresse à des développeurs familiers d’un langage orienté objets. Durée de la formation : 3 jours
FORMATION C Les bases du C Programme : I. Introduction Historique du langage Pourquoi C ? Normes et évolutions Les principaux compilateurs Unités de compilations Makefiles Objectif pédagogique : II. Présentation générale du C Le C s’impose comme un langage de prédilection pour le développement d’applications critiques et Structure générale d’un programme performantes. Il s’agit d’un langage très utilisé Structures de contrôles dans tous les secteurs et dans les couches Variables et types de bases basses. Fonctions et procédures Les entrées/sorties Cette formation a pour objectif de familiariser les apprenants avec le langage C en leur fournissant III. Présentation des structures de contrôles des bases saines et solides. Structuration en bloc et portée des variables Bloc conditionnel if Bloc conditionnel switch Bénéfices attendus : Les boucles for/while/do-while Les instructions break/continue Maîtriser les bases du C, savoir développer une application complète en C et se familiariser avec IV. Les fonctions et procédures ses paradigmes. Notions de fonctions et paramètres Les règles de portées des variables Les règles de visibilité des fonctions Public : V. Les entrées/sorties Cette formation s'adresse à des développeurs qui Notions de flux désirent s'initier au langage C. Entrées et sorties standards Fichiers textes et binaires VI. La bibliothèque standard Présentation de la bibliothèque standard Fonctions mathématiques Dates et heures Expressions régulières Durée de la formation : 4 jours VII. Vers la programmation orientée objets Pointeurs et tableaux Présentation des structures Allocation dynamique de la mémoire Principes généraux pour la manipulation des structures
FORMATION C Programme : Techniques I. Types de bases et conversions Présentation approfondie des pointeurs, tableaux, des structures, des unions, des enums et des typedefs avancées en II. Le pré-processeur C Principe général du fonctionnement du pré-processeur Définition de macros constantes et de macros langage C fonctions Gestion des conditions avec le pré-processeur Concaténation et "stringification" à l'aide du pré-processeur III. Plus de détails sur les types de base Les types intégral et leurs promotions Les conditions et les expressions conditionnelles Objectif pédagogique : La manipulation des champs de bits Les types flottants (la norme IEEE754) Le C s’impose comme un langage de prédilection Les opérateurs sur les types de bases pour le développement d’applications critiques et performantes. Il s’agit d’un langage très utilisé dans tous les secteurs et dans les couches basses. IV. La gestion des erreurs Récupération des erreurs systèmes avec errno Cette formation a pour objectif de familiariser les Gestion des erreurs avec les codes de retours apprenants avec le langage C en leur fournissant Sortie d'erreur et fonction exit() des bases saines et solides. V. Les structures de données principales Implantation des listes doublement Bénéfices attendus : et simplement chainées Implantation des arbres binaires Maîtriser les bases du C, savoir développer une Implantation d'un conteneur de chaînes application complète en C et se familiariser avec de caractères gérant la mémoire ses paradigmes. Implantation d'une table de hachage générique VI. Portabilité/intéractions avec le matériel et le Public : système d’exploitation Les normes POSIX et SUS Cette formation s'adresse à des développeurs qui Les différentes normes du C désirent s'initier au langage C. Les différences entre les systèmes Windows/ Linux/*BSD - Appels systèmes Utilisation de l'assembleur inline VII. Déboggage et profilage Déboggage avec GDB sous UNIX Suivi de l'utilisation de la mémoire avec Valgrind Durée de la formation : 4 jours sous UNIX Profilage avec gprof et perf sous UNIX Désassemblage du binaire produit pour vérifier les instructions générées
FORMATION C Les bonnes pratiques du langage C pour la performance Programme : I. Techniques de base d’optimisations Objectif pédagogique : Quand et comment faut-il penser à l'optimisation ? Le C s’impose comme un langage de prédilection Que faut-il optimiser ? pour le développement d’applications critiques et Les capacités d'optimisations automatiques des performantes. Il s’agit d’un langage très utilisé dans compilateurs tous les secteurs et dans les couches basses. Sur l'utilisation du mot clé inline Factorisation de boucle for et while Cette formation a pour objectif de fournir aux Auto-vectorization de boucle for et while apprenants les réflexes permettant de spécifier et de développer des composants logiciels performants en C. II. Optimisation de l'utilisation mémoire Occupation et fragmentation mémoire Cache du processeur et alignement mémoire Bénéfices attendus : III. Optimisation de la vitesse d’exécution Maîtriser les différentes techniques d'optimisations Choisir les structures de données et d'un programme écrit en langage C. les algorithmes adaptés Déroulage et fusion de boucles Polymorphisme dynamique et types algébriques Public : IV. Le parallélisme en C Quand faut-il faire du parallélisme ? Cette formation s'adresse à des développeurs Principe généraux, différents niveaux expérimentés en C qui souhaitent approfondir leurs de parallélisme connaissances en optimisations. Parallélisme massif et à grande échelle, OpenMPI Parallélisme multi-coeur, OpenMP, Durée de la formation : 3 jours POSIX threads Parallélisme sur un coeur, un premier pas vers le SIMD
Les offres de formations NUMSCALE HPC
FORMATION HPC Comprendre les nouvelles architectures de calculs Programme : Objectif pédagogique : I. Introduction Rappel historique Obtenir des connaissances théoriques et pratiques Adéquation logiciel/matériel sur les composants des systèmes de calculs Métrique et vocabulaire modernes, leurs interactions et leurs prises en mains au niveau logiciel. II. Pipeline Principes généraux Impact sur l’exécution des boucles Bénéfices attendus : Optimisations logicielles Maximiser les performances d’un logiciel en III. Jeux d’instruction appliquant des connaissances pointues sur les Principes généraux composants matériels de son système de calcul. Systèmes super-scalaires Jeux d’instructions SIMD Jeux d’instructions orientés métiers Public : IV. Caches Cette formation s'adresse à des scientifiques, Principes généraux techniciens et ingénieurs en développement logiciel. Associativité Cache multi-niveaux V. Gestion de la mémoire Principes généraux Mémoire virtuelle Pagination et TLB VI. Architectures Multi-coeurs Principes généraux Durée de la formation : 3 jours Impact sur les caches Gestion des threads VII. Architectures NUMA Problématiques Bibliothèque libnuma Autres solutions logicielles
FORMATION HPC L’accélération des calculs avec bSIMD Programme : Objectif pédagogique : I. Introduction Historique Les jeux d’instructions SIMD sont des composantes 1 001 saveurs de SIMD fondamentales des processeurs modernes. Leur Compilateurs vs développeurs maîtrise est néanmoins rendue complexe de part leur Introduction à bSIMD grande variété. II. Opérations de base Cette formation a pour objectif de familiariser Types SIMD l’apprenant avec ces jeux d’instructions et les bonnes Interaction avec la mémoire pratiques nécessaires à leur exploitation via des Opérations arithmétiques et logiques outils modernes. Comparaison et structure de contrôle Bénéfices attendus : III. Calcul en nombres flottants Principes généraux Maîtriser les techniques de développement SIMD et Manipulation de la mantisse et de les appliquer de manière efficace. l’exposant Algorithmes itératifs pour la précision Public : IV. Mélange et formatage Principes généraux Cette formation s'adresse à des scientifiques, Mélanges et mélanges parfaits techniciens et ingénieurs en développement logiciel Accès mémoire irréguliers ayant une expérience en C ou C++. Transposition V. Techniques d’intégration Gestion de la variabilité des jeux d’instruction Gestion de la mémoire : AoS ou SoA Durée de la formation : 3 jours Interaction avec d’autres langages VI. Applications
FORMATION HPC Techniques d’optimisations pour le calcul numérique Programme : I. Introduction Objectif pédagogique : II. Concevoir pour la performance Algorithmes et structures de données La maîtrise des architectures parallèles passe aussi Mémoire et I/O par une connaissance approfondie de la relation Savoir parler compilateur entre les algorithmes et leurs implémentations Anticiper le parallélisme numériques. III. Boucles & Layout mémoire Cette formation a pour objectif de se familiariser avec les stratégies de développement permettant Rappel d’implanter de manière optimale des algorithmes Cache et optimisation classiques. Transformation de boucles AoS ou SoA IV. Précision vs vitesse Bénéfices attendus : Rappel sur IEEE 754 Se familiariser avec les problématiques de Mesure de la précision performance du calcul numérique ; maîtriser les outils Pièges classiques logiciels du domaine et éviter les erreurs. Précision mixte V. Algèbre linéaire Public : Inversion vs résolution Systèmes creux, systèmes denses Exploiter le contexte métier Cette formation s'adresse à des scientifiques, Choisir un solveur techniciens et ingénieurs en développement logiciel ayant une expérience en C ou C++. VI. Briques logicielles de base bSIMD OpenMP MPI Autres bibliothèques Durée de la formation : 3 jours
FORMATION HPC Cryptographie et HPC Programme : Objectif pédagogique : La cryptographie s’impose comme une discipline indispensable dans les communications modernes et est l’une des bases de la cyber-sécurité. Elle assure la confidentialité, l’authenticité et l’intégrité de nos I. Quelques points de vocabulaire et de bon sens messages. Pourquoi la cryptographie ? Vocabulaire Depuis les débuts de l’informatique la cryptographie Le principe de Kerckhoff et les systèmes de calcul sont intimement liés. Cette Implantation et temps de calcul formation a pour but de présenter ses liens étroits. On connaît le cryptosystème parfait II. La cryptographie asymétrique Bénéfices attendus : RSA El-Gamal Maîtriser la cryptographie et savoir l’appliquer dans le cadre du HPC. III. La cryptographie symétrique Fonctions de hachage Codes par flots Public : Codes par blocs Générateurs aléatoires Cette formation s’adresse à des développeurs qui souhaitent s’initier à la cryptographie ayant quelques IV. Les différences entre les niveaux de l’implantation connaissances de base en arithmétique. et sémantique Niveau sémantique Niveau de l’implantation Durée de la formation : 5 jours V. Chiffrement/Déchiffrement Cryptographie symétrique Cryptographie asymétrique Fonctions de hachage VI. Cryptanalyse : la factorisation et le logarithme discret Rappels de complexités Notions de théorie algorithmique des nombres Algorithmes de base Algorithme d’index calculus VII. Chiffrement homomorphe VIII. Alternatives à la cryptographie usuelle
FORMATION HPC Programmation pour les systèmes distribués Programme : I. Introduction Pourquoi des applications distribuées Rappel historique Challenges et imitations II. Métriques de performance Utilité des métriques Objectif pédagogique : Loi d’Amdahl Loi de Gustafson-Barsis Cette formation a pour objectif de présenter les outils, Métrique de Karp-Flatt les métriques et les algorithmes nécessaires à Gflops ou Go/s ? l’exploitation optimale des systèmes distribués quelque soit leur échelle. III. MPI Principes généraux Bénéfices attendus : Fonctions de base Communications synchrones Maîtriser les techniques de programmation sur Communications collectives systèmes distribués, développer les applications Communications asynchrones distribuées avec un haut niveau d’abstraction et de performance. IV. Le modèle BSP Principes généraux Modèle de performance Public : Primitives BSP Algorithmes BSP classiques Cette formation s'adresse à des scientifiques, techniciens et ingénieurs en développement logiciel V. Squelettes algorithmiques Principes généraux ayant une expérience en C ou C++. Squelettes data-parallel Squelettes task-parallel Durée de la formation : 3 jours
FORMATION HPC Programmation multi-coeurs avec OpenMP Programme : Objectif pédagogique : Les architectures multi-cœurs sont désormais largement répandues mais nécessitent une prise en I. Introduction main effective. Les architectures multi-cœurs Pourquoi OpenMP ? Cette formation va permettre à l’apprenant de se familiariser avec ces architectures, de maîtriser la II. Principes généraux technologie OpenMP, l’appliquer à des cas réalistes et de savoir reconnaître les pièges classiques de ce Notion de threads type de développement. Le parallélisme de données Interaction avec les caches Bénéfices attendus : III. Mise en œuvre Maîtriser les techniques de développement sur Sections parallèles architectures multi-cœurs via la technologie OpenMP. Boucles parallèles Réductions Synchronisation Public : IV. Aspects avancés Boucles ou sections ? Cette formation s'adresse à des scientifiques, Gestion des tâches techniciens et ingénieurs en développement logiciel Le problème du faux partage ayant une expérience en C ou C++. Durée de la formation : 3 jours
Les offres de formations NUMSCALE GPGPU
FORMATION GPU Programmation GPGPU avec OpenCL Programme : Objectif pédagogique : Les accélérateurs de calcul type GPU sont devenus des systèmes de calcul incontournables. Néanmoins leur modèle de programmation est radicalement différent des modèles séquentiels classiques. I. Introduction Dans cette formation l’apprenant sera familiarisé Historique avec les stratégies de développement sur GPU et manipulera la technologie OpenCL afin d’en maîtriser Un changement de paradigme les aspects techniques. Du SIMD au many-cores L'architecture GPGPU Bénéfices attendus : Comparaison entre les différentes architectures Maîtriser les techniques de développement sur GPU GPGPU vs SIMD et les appliquer de manière efficace. GPGPU vs multi-processeurs GPGPU vs Shaders Public : II. Programmation avec OpenCL Cette formation s'adresse à des scientifiques, Le modèle de programmation GPGPU techniciens et ingénieurs en développement logiciel Structure d’un noyau de calcul GPGPU Les interactions entre les données et le ayant une expérience en C ou C++. code Branches, récursion et autres points bloquants Les bases de la programmation avec OpenCL Repérage et sélection d’un GPU Durée de la formation : 3 jours Ecrire et lancer les kernels OpenCL Gestion de la mémoire Gestion de la communication Gestion de la synchronisation Sujets avancés Mise au point des noyaux Timing et optimisation des noyaux Streaming & Multibuffering
FORMATION GPU Programmation GPGPU avec CUDA Programme : Objectif pédagogique : Les accélérateurs de calcul type GPU sont devenus des systèmes de calcul incontournables. Néanmoins leur modèle de I. Introduction programmation est radicalement différent des modèles séquentiels classiques. Historique Dans cette formation l’apprenant sera familiarisé Un changement de paradigme avec les stratégies de développement sur GPU et Du SIMD au many-cores manipulera la technologie CUDA afin d’en maîtriser L'architecture GPGPU les aspects techniques. Comparaison entre les différentes architectures Bénéfices attendus : GPGPU vs SIMD GPGPU vs multi-processeurs Maîtriser les techniques de développement sur GPU GPGPU vs Shaders et les appliquer de manière efficace. II. Programmation avec OpenCL Public : Le modèle de programmation GPGPU Cette formation s'adresse à des scientifiques, GPGPU Code Flow techniciens et ingénieurs en développement logiciel Les interactions entre les données et le code ayant une expérience en C ou C++. Branches, récursion et autres points bloquants Les bases de la programmation avec CUDA Repérage et sélection d’un GPU Ecrire et lancer les kernels CUDA Durée de la formation : 3 jours Gestion de la mémoire Gestion de la communication Gestion de la synchronisation Sujets avancés Mise au point des noyaux Timing et optimisation des noyaux Streaming & Multibuffering
Machine Vision Finance & Banking Telecom Aerospace Automotive Oil & Energy Image & Sound Security Big Data & Analytics
Con- NUMSCALE SAS Digiteo Bâtiment 660 Rue Noetzlin 91190 Gif-sur-Yvette Tel : 01 69 15 49 35 formations@numscale.com Capital : 117 600 euros Immatriculation : RCS Evry B 749 983 631 SIRET : 749 983 631 00021 Numéro TVA : FR15 749983631 N° d’organisme de formation : 11 91 07537 91 CIR 2019
Vous pouvez aussi lire