librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · +...
TRANSCRIPT
![Page 1: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/1.jpg)
Librairies pour le calcul numérique
000
![Page 2: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/2.jpg)
Contexte
Matlab (/Octave, Scilab)
Mais ...
=> Uniquement restreint à réaliser des prototypes
Programmation non numérique laborieuse Pas de structures de données (hash, map, graph, etc)Lent Non interactif
Très bonnes fonctions calcul numérique
001
![Page 3: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/3.jpg)
Contexte
C++
Mais ...
=> Beaucoup de temps passé pour refaire ce que fait un script Matlab
Vrai language de programmation
Rapide
Interactif (Qt, OpenGL, ...)
Structures données avancées
+ bugs
Pas de librairie numérique dans le standard (Matrices, vecteurs, ...)
Standard en entreprise
002
![Page 4: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/4.jpg)
Librairies numériques
Il est possible de réécrire vos propres structures
Inversion matricielle, valeurs propres, matrices creuses, ...
Mais à éviter pour des vrais applications (sauf cas spécifique)
Préférer des librairies existantes
Testées, plus robustes et rapide qu'un code personnel
Une bonne librairie de calcul numérique, plusieurs mois/annéesde developpement
003
![Page 5: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/5.jpg)
Calcul numérique
A l'origine un language est développé spécifiquement pour le calcul numérique
Fortran(FORmula TRANslating system)
004
![Page 6: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/6.jpg)
Fortan
Fortran : un des plus ancien language (1954)(C 1970)
A beaucoup évolué Fortan 66Fortan 77Fortan 90Fortran 2008Fortran 2015...
Autrefois très limité
Aujourd'hui language objet avancé Surchage d'opérateurGestion mémoire dynamiqueHéritagepolymorphismestructure données abstraites
005
![Page 7: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/7.jpg)
Fortan
Language très aggréable pour calcul numérique
Calcul vectoriel en standardArray slicingMatrice en standardParallélisme aisé
INTEGER N = ...
REAL, DIMENSION(N,N) :: A INTEGER, DIMENSION(N) :: v, w DO i = 1, N w(i) = SUM ( A(i, : ) * v ) END DO
Ressemble à Matlab, + simple que C, C++, Java, ...
006
![Page 8: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/8.jpg)
Avantage/limitation Fortran
+ Aggréable pour le calcul numérique+ Portable+ Standard le plus robuste et répendu+ Très rapide (souvent + rapide que C ou C++)+ Mise en place sur les supercalculateurs
- Uniquement centré sur le calcul numérique- Gestion texte difficile- Pas de logiciel en Fortran avec GUI, interaction- Pas de graphique
007
![Page 9: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/9.jpg)
Fortan et Lapack
Librairie numérique de référence
LapackLinear Algebra PACKage
Structure de donnée matrice
Algorithmes d'algèbre linéaire
BLASBasic Linear Algebra Subprograms
(opérations somme, multiplication matricielles)
(inversion matrices, factorisation)
008
![Page 10: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/10.jpg)
Lapack
Lapack à été pendant longtemps le standard "de facto" du calcul numérique
Matlab était une interface au dessus de Lapack
Blas et Lapack sont bas niveau. Peu aggréable à utiliser
Mais ...
~1800 fichiers
009
![Page 11: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/11.jpg)
Autres librairies
Souvent une surcouche au dessus de Lapack
Souvent spécialisé sur un domaine
Conteneur matricielDécomposition matrice pleineDécomposition matrice creuseFitting non linéaireODE / PDE
010
![Page 12: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/12.jpg)
Les grands acteurs: Vue d'ensemble
Matlab / Octave / Scilab
Fortran
Lapack
GPU
Librairies C++Librairies C
Python
+ + Standard+ Robuste et vérifié
- Limité au calcul
+ Très simple d'utilisation
- Limitées aux prototypes
+ Interfaçage direct sur un logiciel complet (Qt, drivers, OS, interaction, etc)
- Apprentissage plus long- Pas de standard- Portabilité
Remplace de plus en plusFortran + Lapack
Numpy+
+ Interfacage aisé avec graphique (Qt) et GPU
- Par défaut plus lent que Fortran
- Lenteur du code
+ Le plus performant
- Codage long et difficile- Portabilité
Pour la puissancede calcul
Pour développerdes logiciels
Pour les protos
Pour le standard
011
![Page 13: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/13.jpg)
Exemple de librairies
GSL: GNU Scientific Library
+ Librairie open source complète
- En C (utilisation fastidieuse)- Moins robuste, vérifiée que Lapack (lib issu de l'open source écrite par des informaticiens)
• Complex Numbers: • Polynomials: • Special Functions: • Vectors and Matrices: • Permutations: • Linear Algebra: • Eigensystems: • Fast Fourier Transforms: • Numerical Integration: • Statistics: • Monte Carlo Integration: • Ordinary Differential Equations: • Interpolation: • Numerical Differentiation: • Series Acceleration: • Wavelet Transforms: • Multidimensional Root-Finding: • Least-Squares Fitting: • Basis Splines: 012
![Page 14: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/14.jpg)
Exemple de librairies
Blitz++
Boost
Dlib
IML++,SparseLib++
...
Vecteur/Matrice dense.Librairie très rapide (utilisation métaprogrammation/template)
Conteneurs pour matrice
Optimisation non linéaire, fittingSimple d'utilisation
Inversion matrices creuses
013
![Page 15: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/15.jpg)
Eigen
Eigen
librairie C++ d'algèbre linéaire récente
Repose sur les templates / métaprogrammationPeut être plus rapide qu'un code C/Fortran équivalent
Conteneur matrice, vecteur, matrice creusesAlgorithme de résolution de systèmes et décomposition matricielles
Utilisation instructions vectorielles, SSE
014
![Page 16: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/16.jpg)
Eigen: Utilisation
Support vecteur nD
015
![Page 17: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/17.jpg)
Eigen: Utilisation
Support matrices
2.4 9-8.4 4.4
016
![Page 18: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/18.jpg)
Eigen: Utilisation
Support inversion de matrices
017
![Page 19: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/19.jpg)
Eigen: Utilisation
Support résolution de système linéaire Ax=b
Choix des approches
018
![Page 20: Librairies pour le calcul numériqueimagine.inrialpes.fr/.../cours/cours_lib_numerique.pdf · + Interfacage aisé avec graphique (Qt) et GPU - Par défaut plus lent que Fortran -](https://reader033.vdocuments.fr/reader033/viewer/2022061001/60b03b74d7a01c018c3545e1/html5/thumbnails/20.jpg)
Eigen: Utilisation
http://eigen.tuxfamily.org/
Support pour:
Décompositions: LU, QR, valeurs singulières, Cholesky, ShurMatrices creusesTransformation géométriques
019