PNL

Fiche dév Ens Sup - Recherche
  • Création ou MAJ importante : 29/04/13
  • Correction mineure : 29/04/13
  • Auteur de la fiche : Jérôme Lelong (LJK)
  • Responsable thématique : Dirk Hoffmann (Centre de Physique des Particules de Marseille (CPPM-IN2P3))
Mots-clés

PNL : bibliothèque numérique pour le calcul scientifique en C

Ce logiciel a été développé (ou est en cours de développement) dans la communauté de l'Enseignement Supérieur et de la Recherche. Son état peut être variable (cf champs ci-dessous) donc sans garantie de bon fonctionnement.
  • Site web
  • Système : UNIX-like, Windows, MacOS X
  • Version actuelle : 1.6.0 - 22 mars 2013
  • Licence(s) : LGPL
  • Etat : diffusé, stable
  • Support : maintenu, développement en cours
  • Concepteur(s) : Jérôme Lelong
  • Contact concepteur(s) : jerome.lelong@imag.fr
  • Laboratoire(s), service(s)... : INRIA Paris-Rocquencourt, LJK

 

Fonctionnalités générales du logiciel

Description

PNL est une bibliothèque C pour le calcul scientifique développée dans le même état d'esprit que des bibliothèques comme la GSL. PNL propose une grande variété de fonctionnalités mathématiques (plus de 600 fonctions au total) sur les thématiques suivantes

  • Nombres complexes (pour ceux ne disposant pas de l'extension C99)
  • Distribution de lois de probabilité
  • Transformée de Fourier rapide
  • Transformée de Laplace inverse
  • Algèbre linéaire pour les matrices pleines, tridiagonales et de type bande
  • Recherche de zéros multidimensionnels
  • Polynômes multivariés (régression, évaluation, dérivation)
  • Intégration numérique
  • Générateur de nombres aléatoires et Quasi Monte Carlo
  • Fonctions spéciales
  • Manipulations de tableaux multidimensionnels

Pour une description complète des fonctionnalités de la bibliothèque, nous renvoyons à sa documentation.

PNL est distribuée sous la licence LGPL, ce qui donne une grande liberté quant à la réutilisation et à la modification de son code ce qui n'est pas le cas de solutions comme Numerical Recipes par exemple.

Spécificités

PNL est conçue selon un schéma orienté objet inspiré de celui proposé par la bibliothèque Glib. L'ensemble des structures implémentées dans la bibliothèque dérive donc d'un même objet père. Cette organisation permet de proposer des structures de listes et de tableaux pouvant contenir des éléments de types différents comme cela existe dans numpy par exemple.

PNL est une bibliothèque thread-safe qui a été conçue pour être utilisée dans un environnement de programmation parallèle. A ce titre, elle propose un binding MPI permettant de manipuler via MPI les différents objets de la bibliothèque de manière transparente. Cette fonctionnalité est probablement ce qui différencie le plus PNL d'une bibliothèque comme la GSL, Numerical Recipes ou encore ROOT (pour sa partie mathématique uniquement). Si l'on fait abstraction des licences sous lesquelles ces bibliothèques sont distribuées, elles peuvent dans de nombreuses situations d'utilisation classiques (algèbre linéaire, intégration numérique, recherche de zéros, FFT, fonctions spéciales, ...) se substituer. D'autres thématiques semblent plus spécifiquement prises en charge par PNL comme l'inversion de transformée de Laplace, la régression polynomiale multi-variée.

La manipulation de matrices et de vecteurs est souvent un point délicat dans les codes C : PNL offre des fonctionnalités permettant de les manipuler dans une logique plus proche de celle de Matlab/Octave ou Numpy : mapping terme à terme, extraction de blocs à partir d'expressions booléennes, vues, tris, re-dimensionnement, ...

Pour de nombreuses fonctionnalités, PNL se base sur des bibliothèques Fortran du domaine public disponibles sur http://www.netlib.org comme AMOS, CEPHES, FFTPACK, MINPACK, QUADPACK ou BLAS et LAPACK.

La bibliothèque est accompagnée d'une documentation, rédigée en LaTeX et disponible aux formats PDF et HTML, décrivant l'ensemble des fonctionnalités de la bibliothèque. Ce manuel détaille également les conventions utilisées durant le développement de la bibliothèque.

Installation

Les différentes versions stables ou de développement de la bibliothèque sont disponibles sur gforge.

La compilation de la bibliothèque utilise CMake qui permet de compiler la bibliothèque sur les plateformes suivantes

  • GNU/Linux avec gcc et llvm
  • Mac OS X avec gcc et llvm
  • Windows avec mingw32 et Visual C++

PNL s'appuie sur les bibliothèques BLAS et LAPACK pour la partie algèbre linéaire. Si ces deux bibliothèques sont présentes sur la machine, elles seront utilisées par PNL (la détection s'effectue au moment de la compilation), sinon une version intégrée à la bibliothèque de BLAS et LAPACK sera utilisée.

Historique du projet

Le développement de la bibliothèque a démarré en 2007 sous la direction de Jérôme Lelong avec des contributions de Céline Labart, Ismail Laachir et David Pommier.

Pour un historique des différentes versions de la version actuelle, voir le site http://pnl.gforge.inria.fr

Contexte d’utilisation du logiciel

PNL est aujourd'hui utilisée comme brique de base pour le développement du logiciel PREMIA qui est un logiciel d'évaluation et de couverture de produits financiers développé conjointement par l'INRIA Paris Rocquencourt et l'Ecole des Ponts Paristech et soutenu par un consortium d'institutions financières.

Parallèlement à cette utilisation dans le contexte de PREMIA, la bibliothèque PNL a également été utilisée pour le développement de plusieurs méthodes numériques publiées dans des articles de recherche.

Commentaires

Vous êtes utilisateur(rice) de ce logiciel ?

PLUME cherche un rédacteur pour une "fiche logiciel (à valider, validé). Contactez plume [at] services [dot] cnrs [dot] fr, si intéressé(e).