La librairie Intel Math Kernel Library (MKL) est une librairie de développement, pour des calculs mathématiques optimisées. 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.
Certains programmes installés sur CALI ont été compilés avec la MKL. Dans ce cas, la documentation du logiciel sur notre site précisera les conditions particulières à connaître.
Les documents de référence concernant la librairie MKL sont disponibles sur le site d'Intel :
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.
La MKL contient des librairies mathématiques optimisées :
Plusieurs familles de procédures sont contenues dans la MKL. Certaines sont des implémentations de librairies “bien connues”, antérieures à la MKL et qui sont toujours disponibles sous d'autres implémentations. La version MKL apporte en général des gains de performance. La liste complète de ces famille est disponible dans le guide de référence de la MKL. Citons :
Sur CALI, vous devez suivre les instructions fournies sur intel-composer afin de savoir comment positionner l'environnement pour la MKL.
La MKL peut être utilisée avec différents compilateurs. Il n'est donc pas obligatoire d'utiliser la suite Intel, des programmes compilés avec la suite GNU pourront aussi être liés avec la MKL.
La MKL est conçue pour supporter différents compilateurs et interfaces, différentes implémentations d'OpenMP, différents types de processeurs.
Conceptuellement, on peut considérer que la MKL est composée de plusieurs couches pour permettre ces adaptations :
INTEGER*8
en Fortran), soit en utilisant une option du compilateur (-i8
en Fortran)Nous reviendrons plus en détail sur la partie threading dans l'article mkl-et-parallelisme.
Maintenant que vous avez à l'esprit quelques uns des détails de la MKL, nous allons voir comment réaliser la compilation et l'édition de lien d'un programme.
Vous devrez sélectionner plusieurs paramètres :
Plusieurs méthodes de compilation sont possibles, vous devrez choisir l'une ou l'autre.
-mkl
pour utiliser la MKL en version threadé-mkl=sequential
pour utiliser la MKL en version séquentiel-lmkl_rt
La dernière alternative consiste à sélectionner individuellement chacune des librairies pour chacune des couches :