C++ avancé, STL et librairies scientifiques, 2 décembre 2005

- Pré-requis : connaissance minimale du langage C++. Les notions de classes, d’objets et de conversions (cast) seront supposées connues.

- Intervenant : Aurélien Géron, maître de conférence à INA-PG (Institut National Agronomique Paris-Grignon) et co-auteur du livre "Pour mieux développer avec C++".


PROGRAMME

  • 09h20 Accueil des participants
  • 09h30 Les Design patterns
    • Quelques rappels utiles : templates, namespaces, surcharge d’opérateurs, conversions de types.
    • Introduction aux design patterns (GoF).
    • Les principaux design patterns (Conteneur/Itérateur, Stratégie, Adaptateur, Composite, Fabrique, Singleton, Observateur, Proxy, Visiteur)
  • 10h45 Pause
  • 11h00 La STL, Standard Template Library
    • Objectifs et organisation de la STL
    • Les conteneurs séquentiels : vector, deque, list, bit_vector
    • Les conteneurs associatifs : set, multiset, map, multimap
    • Les itérateurs de la STL
    • Algorithmes et stratégies de la STL (find, for_each, sort, binary_search)
  • 12h30 Repas
  • 13h30 La STL, suite
    • Les adaptateurs de conteneurs (stack, queue, priority_queue), d’itérateurs et de fonctions
    • Les chaînes de caractères (string)
    • La gestion de la mémoire avec la STL (affectations, copies, allocateurs, auto_ptr)
    • Conclusion STL : extensions, interactions avec les autres librairies
  • 14h30 Tour d’horizon des librairies scientifiques en C++
  • 14h45 Pause
  • 15h00 Présentation des principales librairies scientifiques (précision arbitraire, matrices, algèbre linéaire)
  • 16h30 Discussion sur l’utilisation du C++ en calcul scientifique
  • 17h00 Fin de la journée

Support et discussions

- Support du cours

Le tour d’horizon des librairies a pris la forme d’un discussion générale où tout le monde a fait part de ses expériences.

On peut citer une liste non exhaustive de bibliothèques C++ scientifiques qui sont utilisées (ou simplement ont été testées) par les personnes présentes :

- LAPACK++, ARPACK++.
- NEWMAT : librairie d’algèbre linéaire (calculs matrices-vecteurs mais aussi des algo d’algèbre linéaire comme décomposition en valeur singulière, jacobi, ....). Un atout de cette bibliothèque est sa taille : elle est petite et se compile facilement. Son principal défaut : si on l’utilise "basiquement", les perfos sont très mauvaises (elle utilise un mécanisme d’héritage qui plombe souvent les perfos). Mais on peut tirer profits de ses avantages sans avoir à subir (tous) ses inconvénients en faisant attention.
- BLITZ++ par Veldhuizen, l’auteur de "Techniques for scientific C++", qui utilise la technique des expression templates,
- POOMA, développée initialement par le LANL, repris maintenant sous le nom de Free POOMA. Permet de gèrer du parallélisme et du multithreading.
- PETE, Portable Expression Template Engine, utilisé par FreeFEM.
- MTL, ITL, Matrix Template Library et Iterative Template Library.
- CLN, Class Library for Numbers, pour l’arithmétique exacte.
- APFLOAT, pour les grands rationels à précision arbitraire.
- GMP, Gnu Multiple Precision.
- BOOST, qui se veut la continuité du standard.Cette librairie comprend entre autres BOOSTGRAPH, système de gestion de graphe et BOOST UBLAS.
- VTK, ITK pour la visualisation et le traitement d’images.
- QT sur laquelle est basée KDE.
- GTk++, pour les interfaces graphiques.
- Binding C++ pour MPI.
- Openthread, librairie de thread.
- PETSC, manipulation de maillages, matrices... distribués, au dessus de MPI (il existe aussi une version openMP).
- libXML2
- JACKX pour le calcul symbolique.
- Lorene : résolution d’EDP (elliptiques et hyperboliques) à l’aide de méthodes spectrales multi-domaines et en coordonnées sphériques.


Date et Lieu

- Date : Le vendredi 2 décembre 2005
- Lieu : Lyon, Campus de la Doua, Ecole Supérieure Chimie Physique Electronique (CPE), salle C223.


Accueil | Contact | Plan du site | | Statistiques du site | Visiteurs : 5050 / 404168

Suivre la vie du site fr  Suivre la vie du site Présentation du Groupe Calcul  Suivre la vie du site Journées du Groupe Calcul   ?

Site réalisé avec SPIP 3.0.17 + AHUNTSIC

Creative Commons License