Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte de performances

Click here to load reader

  • date post

    08-Aug-2015
  • Category

    Software

  • view

    95
  • download

    1

Embed Size (px)

Transcript of Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte de performances

  1. 1. 18/03/2013 ANEO Tous droits rservs 1Du Polymorphisme dynamique au polymorphisme statique : abstraction sans perte de performancesRencontre C++ Francophone-CoverityMetascaleWilfried KIRSCHENMANNSenior Consultantwkirschenmann@aneo.fr122, avenue du Gnral LeclercF-92100 Boulogne-BillancourtTl. : +33 1 46 44 24 66Fax : +33 1 46 44 28 63
  2. 2. 19/03/2013 ANEO Tous droits rservs 2ANEO en quelques motsQuels outils pour dvelopper des logiciels multidisciplinaires ?Les langages ddis embarqus en C++ConclusionSommaire
  3. 3. ANEOestunCabinetdeConseilenOrganisationetTechnologies.Fonden2002,lamajoritducapitalestdtenupardesAssocis,Excutifs.SonCA2012estestim23Mpouruneffectifde190personnes.ANEOdploiesonexpertisedansdeuxdomaines:BusinessPerformanceTechnologiesetSystmesFiche didentit18/03/2013 ANEO Tous droits rservs 3ANEO en quelques mots18/03/2013
  4. 4. De la stratgie la dclinaison oprationnelle18/03/2013 ANEO Tous droits rservs 4ANEO en quelques motsANEOaccompagnesesclientsdans-ladclinaisonoprationnelledeleurstratgie-ladclinaisondesimpactsdeleurstratgied'entreprisesurl'organisationetlesystmed'information.
  5. 5. Les interventions de la practice HPCLedomaineduHPCregroupelensembledesexpertisesimpliquesdanslarductiondestempsdexcutiondeslogicielsdecalculNosinterventionssontessentiellementorientessurlesactivitssuivantes:CadragedeprojetsHPCConseiltechnologique(architecturesmatrielles,logicielsdecalcul,architecturelogicielle)PropositiondescenariidemiseenoeuvredelogicielsHPCImplmentationetdploiementDveloppementApportdexpertisestechnologiquesDfinitionetmiseenplacedeprocduresdetestsetdevalidationdesperformancesSupportetexploitationCentresdeservicesDfinitionetmiseenplacedeprocduresdereportingAmliorationcontinueIdentifieretvaluerlesopportunitsdamliorationsdeperformancesdunechanedecalculNous intervenons principalement dans le domaine de la BFI o la demande en calcul est forte. 18/03/2013 ANEO Tous droits rservs 5ANEO en quelques motsRP: HOUCEM HAMZA / 1,9 M/ SERVICE ET CONSEIL / 19 ETP
  6. 6. Les expertises de practice HPCMise au point dun base de benchmarksImplmentation de diffrents algorithmesImplmentations sur diffrentes architectures matriellesImplmentations avec diffrents niveaux defforts de dveloppementObjectif : pouvoir estimer a priorile cot et les gains apports par un changement dalgorithme, de matriel ou par des optimisations spcifiquesEtudede la propagation des erreurs darrondis dans les code de calcul numriqueAnalyse de la non reproductibilit des rsultats numriquesEstimation de la prcision des rsultats numriquesImplmentation dalgorithmes minimisant la propagation des erreurs darrondisObjectif : garantir la fiabilit dun rsultat numriqueOutils et mthodes pour la mise au point de codes de calcul multiciblesHPCLib : une bibliothque C++ gnrique dalgbre linaireMise au point dune bibliothque C++ de paralllisation multicibletude des outils de dveloppement multicibles disponibles sur le marchObjectif: assurer la portabilit des performances sur diffrentes architectures matrielles19/03/2013 ANEO Tous droits rservs 6ANEO en quelques motsRP: HOUCEM HAMZA / 1,9 M/ SERVICE ET CONSEIL / 19 ETP
  7. 7. 18/03/2013 ANEO Tous droits rservs 7ANEO en quelques motsQuels outils pour dvelopper des logiciels multidisciplinaires ?Exemple dun logiciel de simulation physiqueLes sources de complexitHistorique de diffrentes solutionsLes langages ddis embarqus en C++ConclusionSommaire
  8. 8. Quand lcriture du logiciel ncessite la mise en oeuvre de comptences multidisciplinairesAnalyse physiqueDescription du phnomneMise sous forme dquations physiquesAnalyse fonctionnelle ou stochastiqueCaractrisation des proprits mathmatiques des quations mises en oeuvreChoix des espaces de rsolutionAnalyse numriqueDiscrtisation et choix des mthodes de rsolutionInformatique scientifiqueCaractrisation et visualisation du problmeMise en oeuvre de lalgorithme de rsolution18/03/2013 ANEO Tous droits rservs 8Les projets logiciels multidisciplinaires : des projets complexesEXEMPLE DUN LOGICIEL DE SIMULATION PHYSIQUE
  9. 9. Les complexits inhrentes chaque discipline sajoutentSi une modlisation physique nest pas solvable dans un temps raliste, les solutions sont :Modifier la modlisationRetirer les termes ngligeablesLinariser prs du point de fonctionnementModifier lespace de rsolutionrsolution de lquation de la chaleur dans lespace de FourrierUtilisation des espaces de Hilbert en mcaniqueModifier les mthodes de rsolutionRsolution itrative plutt que directeGauss-Seidel au lieu de JacobiModifier limplmentationParalllisationUtilisation de bibliothquesChacune de ces solutions un impact sur les autres lments de la chaneUn tel projet ncessite une organisation et des outils spcifiques18/03/2013 ANEO Tous droits rservs 9Les projets logiciels multidisciplinaires : des projets complexesLES SOURCES DE COMPLEXIT
  10. 10. Le compromis entre performances et abstraction18/03/2013 ANEO Tous droits rservs 10Les projets logiciels multidisciplinaires : des projets complexesHISTORIQUE DE DIFFRENTES SOLUTIONSLapproche des langages ddis (enfouis) permet de dissocier le traitement des complexits informatiques des complexits mathmatiquesImplmentation+++Langages gnralistes (C)for(inti=0; i
  11. 11. 19/03/2013 ANEO Tous droits rservs 11ANEO en quelques motsQuels outils pour dvelopper des logiciels multidisciplinaires ?Les langages ddis embarqus en C++Smantique du langageConstruire un arbre syntaxique lors de lexcutionConstruire un arbre syntaxique lors de la compilationConclusionSommaire
  12. 12. La mise au point dun langage enfouis (DSEL) est soumise aux possibilits syntaxiques du langage hteAppel de la fonction ff()Addition de A et BA+BMultiplication de A par BA*BSoustraction dans A de BA-BDivision de A par B (si dfini)A/BProduit scalaire de A et BAffectation A de BABAccs au ilment de AAi18/03/2013 ANEO Tous droits rservs 12Les langages ddis embarqus en C++SMANTIQUE DU LANGAGELe langage des mathmatiques appliques dfinit un certain nombre doprateurs et de notations et leur accorde une smantiqueIl est impossible de reprendre le langage des mathmatiques directement
  13. 13. Un DSEL C++ sappuie sur la surcharge des oprateur afin de mimer un langageUn DSEL C++ accorde une smantique aux oprateur surchargeablesen C++La mise au point dun langage enfouis (DSEL) est soumise aux possibilits syntaxiques du langage hteAppel de la fonction ff()Addition de A et BA+BMultiplication de A par BA*BSoustraction dans A de BA-BDivision de A par B (si dfini)A/BProduit scalaire de A et Bdot(A,B)Affectation A de BA=BAccs au ilment de AA[i]18/03/2013 ANEO Tous droits rservs 13Les langages ddis embarqus en C++SMANTIQUE DU LANGAGE
  14. 14. Une classe dfinissant un DSEL ddi aux oprations vectorielles de lalgbreclass Vector{public:Vector(constintsize);Vector(constVector& v);~Vector();constVector& operator=(constVector& v);Vectoroperator+(constVector& v) const;Vectoroperator-(constVector& v) const;Vectoroperator*(constVector& v) const;constfloat& operator[](inti) const;float& operator[](inti);intsize() const;private:constintsize_;float* data_;};floatdot(constVector& a, constVector& b)18/03/2013 ANEO Tous droits rservs 14Les langages ddis embarqus en C++SMANTIQUE DU LANGAGEVectorX(N), Y(n), Z(n);floata, b;Y = a*X+b*Z+Y;
  15. 15. Un code client simple mais quid des problmatiques informatiques ? (ex: performances)Vectortmp1(N);for(inti=0; i
  16. 16. Comment encapsuler le corps de la boucle dans un objet pour fusionner les boucles ?19/03/2013 ANEO Tous droits rservs 16Les langages ddis embarqus en C++CONSTRUIRE UN ARBRE SYNTAXIQUE LORS DE LEXCUTIONY = a*X+b*Z+Y;ObjectifStructVectorExpression{constfloat& operator[](inti) const{return a*X[i]+b*Z[i]+Y[i];}Vector& X, & Y, & Z;floata,b;};VectorExpressioncompute_operation= ... ;for(inti=0; i
  17. 17. Une arborescence de classes pour reprsenter les expressions vectoriellesUne expression vectorielle peut tre :La somme de deux expressions vectoriellesLa multiplication dune expression vectorielle par un scalaireUn vecteur19/03/2013 ANEO Tous droits rservs 17Les langages ddis embarqus en C++CONSTRUIRE UN ARBRE SYNTAXIQUE LORS DE LEXCUTIONVectorExpressionAddExpressionScaleExpressionVector
  18. 18. Une arborescence de classes pour reprsenter les expressions vectoriellesUne expression vectorielle peut tre :La somme de deux expressions vectoriellesLa multiplication dune expression vectorielle par un scalaireUn vecteur19/03/2013 ANEO Tous droits rservs 18Les langages ddis embarqus en C++CONSTRUIRE UN ARBRE SYNTAXIQUE LORS DE LEXCUTIONclass VectorExpression{public:virtualintsize() const=0;virtualconstfloat& operator[](inti) const=0;};
  19. 19. Une arborescence de classes pour reprsenter les expressions vectoriellesUne expression vectorielle peut tre :La somme de deux expressions vectoriellesLa multiplication dune expression vectorielle par un scalaireUn vecteur19/03/2013 ANEO Tous droits rservs 19Les langages ddis embarqus en C++CONSTRUIRE UN ARBRE SYNTAXIQUE LORS DE LEXCUTIONclass AddVectorExpr: public VectorExpression{public:AddVectorExpr(constVectorExpression& l, constVectorExpression& r): l_(l), r_(r) { assert(l_.size== r_.size()); }virtualintsize() const{ return l_.size(); }virtualconstfloat& operator[](inti) const{ return l_[i]+r_[i]; }private:constVectorExpression& l_;constVectorExpression& r_;};AddVectorExproperator+(constVectorExpression& r, constVectorExpression& r){return AddVectorExpr(l, r);}
  20. 20. Une arborescence de classes pour reprsenter les expressions vectoriellesUne expression vectorielle peut tre :La somme de deux expressions vectoriellesLa multiplication dune expression vectorielle par un scalaireUn vecteur19/03/2013 ANEO Tous droits rservs 20Les langages ddis embarqus en C++CONSTRUIRE UN ARBR