690 likes | 836 Views
De nos outils informatiques. Optimisation des performances. Sommaire. I-Les bases de l’optimisation Bases algorithmiques Bases programmatiques Bases architecturales Bases matérielles II-Les optimisations SSE Principe de fonctionnement des SSE Utilisation des SSE en programmation
E N D
De nos outils informatiques Optimisation des performances
Sommaire I-Les bases de l’optimisation Bases algorithmiques Bases programmatiques Bases architecturales Bases matérielles II-Les optimisations SSE Principe de fonctionnement des SSE Utilisation des SSE en programmation Impact des optimisations SSE III-Exemple d’utilisation multicores Présentation de la technologie multicores Tirer partie d’une technologie multicores Utilisation concrète d’un outil pour le parallélisme
Bases algorithmiques I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Exemple basique : la multiplication • Multiplication « standard » • Multiplication russe ou égyptienne
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
Bases algorithmiques I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Exemple basique : la multiplication • Multiplication « standard » • Multiplication russe ou égyptienne • Algorithme de Karatsuba • Algorithme de Fürer Extrapolation à l’algorithmique
Bases programmatiques I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Le langage assembleur • Les langages compilés • Les langages émulés
Bases architecturales I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Les instructions assembleur • Instructions basiques • Instructions complexes • Les unités ALU et FPU
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
Bases matérielles I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • La course au Mégahertz • Des contraintes physiques • La solution du « pipeline »
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
Bases matérielles I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • La course au Mégahertz • Des contraintes physiques • La solution du « pipeline » • Le « superscalaire »
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
Bases matérielles I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • La course au Mégahertz • Des contraintes physiques • La solution du « pipeline » • Le « superscalaire » • Les multi-cœurs ou multicores • L’ajout d’instructions SIMD
Fonctionnement des SSE I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Apparu en 1999 sur Pentium III • 70 nouvelles instructions assembleur
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
Fonctionnement des SSE I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Apparu en 1999 sur Pentium III 70 nouvelles instructions assembleur • SSE2 ajoute support « 64 bits » • SSE3 orienté « traitement du signal »
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
Programmation des SSE I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Ecriture possible en assembleur
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
Programmation des SSE I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Ecriture possible en assembleur • Librairies de haut niveau • Compilateurs optimisés
Impact des SSE I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Comparaison • Temps de développement du code vs. • Temps d’exécution
Impact des SSE I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Langage C simple • 30s d’exécution, 2min de développement • Optimisé « -O3 » • 19s, et toujours 2min • Langage C correct • 22s, 2min • 14s une fois optimisé «-O3 »
Impact des SSE I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Langage C optimisé • 17s sans optimisation compilateur, 11s avec • Assembleur simple • 9,4s d’exécution, 30min de développement • Assembleur avec SSE • 6,7s et 45min • Assembleur optimal • 3,6s et largement plus d’une heure de dév.
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
Architectures multicores I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Echec de la montée en fréquence Bataille marketing entre Intel et AMD • Technologie issue des serveurs • « Plusieurs processeurs en un »
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation
Tirer partie du multicores I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Difficultés à utiliser plusieurs cores Pas de possibilité de compilation « -O3 » • Il faut alimenter les cores Une tâche définie pour chaque core • Exemple des interfaces graphiques
Tirer partie du multicores I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Impossibilité de parallélisation • Calculs lourds • Calculs matriciels • Raytracing • Simulations • Analyse de données
Intel Parallel Studio I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Suite logicielle composée de : • Parallel Advisor • Parallel Composer • Parallel Inspector • Parallel Amplifier
Intel Parallel Studio I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation • Threading Bulding Blocks Simplifient l’utilisation des cores en C • Débogage pas à pas sur plusieurs threads • Détection des verrous infinis
Conclusion • Nécessité de connaître • Matériel • Logiciel • Lien entre les deux • Choisir entre • Temps de développement • Efficacité d’une solution logicielle
Conclusion • S’adapter aux multicores • Les logiciels s’alourdissent inutilement • Une autre alternative ?
Sommaire I- La base militaire EALAT II- Présentation du projet III-Mise en place du projet IV-Etude du projet V-Réalisation du projet Plateforme de développement Développement de l’application Des tests continus Mise en production et futurs développements
EALAT I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production • Ecole d’Aviation Légère de l’Armée de Terre
I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production
I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production
Le projet I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production • Succéder à plusieurs essais « ratés » • 1- version papier • 2- version Excel basique • 3- DIC • 4- Excel avec macros
I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production
Mise en place I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production • Capitaine Génovèse, chef MOA • Mr Nerrin et moi-même, MOE • Sergent Etourneaux, tests et validations • Planning projet • Nom du projet HELIOPS
Etude du projet I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production • Visites des services impliqués • Réunions pour cahier des charges • Fonctionnement du service aérien
Etude du projet I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production • Méthodologie UML • Diagramme de flux • Diagramme des cas d’utilisation • Diagramme de séquence • Réalisation base de données test • Maquettage
I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production
I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production
I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production
I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production
Mise en place I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production • Serveur 2008 • Visual Studio 2008 SP1 • Silverlight Tools • Microsoft SQL Serveur 2008 SP1 • Subversion • Windows Sharepoint Services
Développement I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production • Etude des possibilités techniques