Prérequis

Connaissance minimale du langage C++. Les notions de classes, d'objets et de conversions (cast) seront supposées connues.

Lieu

Lyon, Campus de la Doua, Ecole Supérieure Chimie Physique Electronique (CPE), salle C223.

Programme

vendredi 02/12

09:20 09:30 Pas de support disponible Pas de résumé disponible

Accueil

09:30 10:45 Télécharger le support

Les design patterns

Aurélien Géron (Institut National Agronomique Paris-Grignon)

  • 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.
10:45 11:00 Pas de support disponible Pas de résumé disponible

Pause

11:00 12:30 Télécharger le support

La STL, Standard Template Library

Aurélien Géron (Institut National Agronomique Paris-Grignon)

  • 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)
12:30 13:30 Pas de support disponible Pas de résumé disponible

Repas

13:30 14:30 Télécharger le support

La STL, suite

Aurélien Géron (Institut National Agronomique Paris-Grignon)

  • 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
14:30 14:45 Pas de support disponible

Tour d'horizon des librairies scientifiques en C++

Aurélien Géron (Institut National Agronomique Paris-Grignon)

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.
14:45 15:00 Pas de support disponible Pas de résumé disponible

Pause

15:00 16:30 Pas de support disponible Pas de résumé disponible

Présentation des principales librairies scientifiques (précision arbitraire, matrices, algèbre linéaire)

Pierre Raybaut

16:30 17:00 Pas de support disponible Pas de résumé disponible

Discussion sur l'utilisation du C++ en calcul scientifique