Blitz++

Fiche logiciel validé
  • Création ou MAJ importante : 16/04/10
  • Correction mineure : 19/04/10
  • Rédacteur de la fiche : Thierry Dumont - Institut Camille Jordan (Université Lyon 1, CNRS, INSA Lyon, Ecole Centrale Lyon)
  • Relecteur(s) : Violaine Louvet (Institut Camille Jordan)
  • Responsable thématique : Loïc Gouarin (Laboratoire de Mathématiques Orsay)
Mots-clés
Pour aller plus loin

Blitz++ : bibliothèque de tableaux et vecteurs en C++

Description
Fonctionnalités générales

Bibliothèque générique de tableaux et vecteurs en C++.

Autres fonctionnalités
  • Blitz++, en utilisant la technique des « Expression Templates » permet la compilation optimale et sans copie d'expression comportant des opérateurs arithmétiques entre tableaux. Elle permet aussi une syntaxe proche de Fortran 95 pour la manipulation de tableaux et de sous tableaux.
  • La performance est un souci permanent des développeurs dans le but de détrôner le monopole du fortran en matière de manipulation de tableaux.
Interopérabilité

Blitz++ définit des tableaux indexés « à la Fortran » (colonnes avant lignes, indices supérieurs ou égaux à 1).

Contexte d'utilisation dans mon laboratoire/service

Utilisée par moi même pour tous mes dévelopements (méthodes numériques pour la résolution d'équations aux dérivées partielles entre autres).

Limitations, difficultés, fonctionnalités importantes non couvertes

Blitz++ n'est pas une bibliothèque d'algèbre linéaire. Elle incorpore une classe de matrices, non documentée.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Distributions debian-like (et probablement d'autres distributions Linux). A noter que sous Ubuntu, le package est disponible sous certaines versions, mais pas sous d'autres !
Fait partie du package Python Scipy et de l'environnement de mathématiques effectives et calcul formel Sage : http://www.projet-plume.org/fr/fiche/sage .

Plates-formes

Linux (avec gcc > 2.9), MacOsX, Windows (avec les bons compilateurs, dont la liste est donnée dans la documentation de blitz++).

Environnement de développement
Type de structure associée au développement

Communauté OONUMERICS, développée par T. Veldhuizen; voir le site http://www.oonumerics.org/.

Eléments de pérennité

Première version en 1998. La bibliothèque n'évolue plus, si ce n'est pour tenir compte des paticularités des différents compilateurs et de très éventuels bugs. Fiabilité excellente.

Références d'utilisateurs institutionnels

Projets Python Numpy, Scipy, Weave.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

Listes de diffusion :

Documentation utilisateur

Disponible sur http://www.oonumerics.org/blitz/docs/ aux formats html (en ligne), pdf et postscript -en anglais-.
De nombreux exemples facilitant la prise en main : http://www.oonumerics.org/blitz/examples/

Divers (astuces, actualités, sécurité)
  • L'installation et le fonctionnement correct de Blitz++ reposent sur la qualité du compilateur C++. Pour gcc, les versions supérieures à 2.95 conviennent. Pour les autres compilateurs, voir http://www.oonumerics.org/blitz/platforms/
  • L'installation à partir du fichier tar.gz est particulièrement facile, en tout cas avec les compilateurs g++.
  • Réalisée avant tout avec des templates, l'installation de la bibliothèque crée peu de binaires. Des tests extensifs, qui peuvent aussi servir d'exemples sont livrés avec le fichier tar.gz.
  • La compilation de programmes utilisant Blitz++ est gourmande en mémoire (compilation non recommandée avec moins de 500 mega octets).
  • Voir http://osl.iu.edu/~tveldhui/papers/techniques/ pour la description des techniques utilisées (expression templates, template metaprograms. etc).
Contributions

Commentaires

liens obsolètes

les liens faisant référence à oonumerics semblent obsolètes, il faudrait les faire repointer sur sourceforge.