Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
logiciels:mkl:start [2015/06/03 15:51] montap01 [Choisir les bonnes librairies] |
logiciels:mkl:start [2015/06/29 17:39] (Version actuelle) montap01 |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ~~SLIDESHOW~~ | + | ====== Math Kernel Library ====== |
- | ====== Librairie | + | Cette rubrique vous donnera des indications sur l' |
- | La librairie MKL est une librairie de développement. Elle peut être utilisée par des personnes qui produisent leur programme de calcul en écrivant ces programmes dans les langages C, C++ ou Fortran. La documentation de cette rubrique concerne donc essentiellement les développeurs. | + | ~~DIR? |
- | Certains programmes installés sur CALI ont été compilés avec la MKL. Dans ce cas, la [[: | ||
- | |||
- | ===== Références ===== | ||
- | Les documents de référence concernant la librairie MKL sont disponibles sur le site d' | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | |||
- | Cette rubrique n'a pas vocation à se substituer à ces documents, mais à apporter une courte introduction (en français) et à attirer votre attention sur quelques points importants. | ||
- | |||
- | ==== Autres documentations ==== | ||
- | * [[https:// | ||
- | * [[http:// | ||
- | ===== Contenu de la librairie MKL ===== | ||
- | ==== Des librairies optimisées et parallélisées ==== | ||
- | La MKL contient des librairies mathématiques // | ||
- | * elle tirera le meilleur partie des dernières générations de processeurs Intel | ||
- | * elle utilise de façon étendue les possibilités de // | ||
- | * certains composants de la MKL sont également conçus pour du calcul parallèle distribué (via MPI) | ||
- | |||
- | <note important> | ||
- | </ | ||
- | ==== Familles de procédures ==== | ||
- | Plusieurs familles de procédures sont contenues dans la MKL. Certaines sont des implémentations de librairies "bien connues", | ||
- | * BLAS (Basic Linear Algebra Subprograms) | ||
- | * LAPACK 3.5 | ||
- | * ScaLAPACK (utilisable sur architecture à mémoire distribuée) | ||
- | * Basic Linear Algebra Communication Subprograms (BLACS) | ||
- | * General Fast Fourier Transform (FFT), avec implémentation de l' | ||
- | |||
- | ===== Utiliser la MKL ===== | ||
- | ==== Environnement ==== | ||
- | Sur CALI, vous devez suivre les instructions fournies sur [[: | ||
- | * Par défaut, le système positionne l' | ||
- | * Vous **ne devez pas** suivre la documentation d' | ||
- | |||
- | ==== Compilateurs supportés ==== | ||
- | La MKL peut être utilisée avec différents compilateurs. Il n'est donc pas obligatoire d' | ||
- | |||
- | ===== Modèle en couche ===== | ||
- | |||
- | La MKL est conçue pour supporter différents compilateurs et interfaces, différentes implémentations d' | ||
- | |||
- | Conceptuellement, | ||
- | * couche d' | ||
- | * couche de // | ||
- | * couche de calcul | ||
- | |||
- | ==== Couche d' | ||
- | * Sélectionne le type d' | ||
- | * Pour des entiers 32-bit (mode par défaut), choisir l' | ||
- | * Pour des entiers 64-bit, choisir l' | ||
- | * Si vous utilisez un autre compilateur que ceux d' | ||
- | |||
- | ==== Couche threading ==== | ||
- | |||
- | * La librairie MKL est fortement parallélisée. A noter : | ||
- | * elle est // | ||
- | * la parallélisation utilise OpenMP | ||
- | * La couche // | ||
- | * sélectionner le mode // | ||
- | * d' | ||
- | |||
- | Nous reviendrons plus en détail sur la partie // | ||
- | |||
- | ===== Compilation ===== | ||
- | Maintenant que vous avez à l' | ||
- | |||
- | Vous devrez sélectionner plusieurs paramètres : | ||
- | * mode statique ou dynamique | ||
- | * utilisation d' | ||
- | * mode threadé ou séquentiel | ||
- | * etc. | ||
- | |||
- | Plusieurs méthodes de compilation sont possibles, vous devrez choisir l'une **ou** l' | ||
- | |||
- | ==== Option -mkl pour compilateurs Intel ==== | ||
- | * Cette méthode est la plus simple | ||
- | * Elle ne fonctionnera qu' | ||
- | * Options : | ||
- | * '' | ||
- | * '' | ||
- | |||
- | ==== Librairie dynamique unifiée ==== | ||
- | * L' | ||
- | * Ajouter '' | ||
- | * Le choix des couches (mode 64 ou 32 bit, threadé, ...) sera fait **au moment de l' | ||
- | * Par défaut, les modes choisis seront | ||
- | * entiers 32 bit (LP64) | ||
- | * mode // | ||
- | * compatible pour les compilateurs Intel | ||
- | |||
- | ==== Choisir les bonnes librairies ==== | ||
- | La dernière alternative consiste à sélectionner individuellement chacune des librairies pour chacune des couches. | ||
- | * soit vous connaissez très bien les différents composants de la MKL et vous construisez la ligne de compilation avec votre expérience ... | ||
- | * soit vous utilisez un outil qui vous guidera dans le choix des options : le [[http:// |