Outils pour utilisateurs

Outils du site


logiciels:mkl:start

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:36]
montap01 [Couche threading]
logiciels:mkl:start [2015/06/29 17:39] (Version actuelle)
montap01
Ligne 1: Ligne 1:
-~~SLIDESHOW~~+====== Math Kernel Library ======
  
-====== Librairie MKL ======+Cette rubrique vous donnera des indications sur l'utilisation de la librairie Intel //Math Kernel Library// ou MKL.
  
-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?cols=page;desc~~
  
-Certains programmes installés sur CALI ont été compilés avec la MKL. Dans ce cas, la [[:logiciels: | documentation du logiciel sur notre site]] précisera les conditions particulières à connaître. 
- 
-===== Références ===== 
-Les documents de référence concernant la librairie MKL sont disponibles sur le site d'Intel : 
-  * [[https://software.intel.com/en-us/mkl_11.2_ug_lin | User's Guide for Intel® Math Kernel Library 11.2 for Linux OS]]  
-  * [[https://software.intel.com/en-us/mkl_11.2_ref | Reference Manual for Intel® Math Kernel Library 11.2 ]] 
- 
-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://software.intel.com/en-us/mkl_cookbook | Intel® Math Kernel Library Cookbook]] 
-  * [[http://cali2.unilim.fr/intel-xe/mkl/mkl_documentation.htm]] : toute la documentation de la MKL installée sur CALI 
-===== Contenu de la librairie MKL ===== 
-==== Des librairies optimisées et parallélisées ==== 
-La MKL contient des librairies mathématiques //optimisées// 
-  * elle tirera le meilleur partie des dernières générations de processeurs Intel 
-  * elle utilise de façon étendue les possibilités de //multi-threading// (calcul parallèle sur des architectures multi-coeurs SMP) 
-  * certains composants de la MKL sont également conçus pour du calcul parallèle distribué (via MPI) 
- 
-<note important>Vous pouvez remarquer d'ores et déjà que vous devrez tenir compte de la capacité au //multi-threading// **automatique** de la MKL . Vous devrez en tenir compte lors de la phase de compilation et lors de la phase d'exécution du programme. 
-</note> 
-==== Familles de procédures ==== 
-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 [[https://software.intel.com/en-us/mkl_11.2_ref | le guide de référence de la MKL]]. Citons : 
-  * 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'interface FFTW3 
- 
-===== Utiliser la MKL ===== 
-==== Environnement ==== 
-Sur CALI, vous devez suivre les instructions fournies sur [[:logiciels:intel-composer]] afin de savoir comment positionner l'environnement pour la MKL. 
-  * Par défaut, le système positionne l'environnement pour la dernière version stable de la MKL 
-  * Vous **ne devez pas** suivre la documentation d'Intel concernant la configuration des variables d'environnement 
- 
-==== Compilateurs supportés ==== 
-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. 
- 
-===== Modèle en couche ===== 
- 
-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 : 
-  * couche d'interface  
-  * couche de //threading// 
-  * couche de calcul 
- 
-==== Couche d'interface ==== 
-  * Sélectionne le type d'entier utilisé dans votre code 
-    * Pour des entiers 32-bit (mode par défaut), choisir l'interface LP64 
-    * Pour des entiers 64-bit, choisir l'interface ILP64. Ce mode est sélectionné soit en utilisant des entiers explicitement 64-bit dans le code (''INTEGER*8'' en Fortran), soit en utilisant une option du compilateur (''-i8'' en Fortran) 
-  * Si vous utilisez un autre compilateur que ceux d'Intel, certaines parties doivent être adaptées 
- 
-==== Couche threading ==== 
- 
-  * La librairie MKL est fortement parallélisée. A noter : 
-    * elle est //thread-safe// 
-    * la parallélisation utilise OpenMP. 
-  * La couche //threading// permet de  
-    * sélectionner le mode //threadé// ou //séquentiel// de la MKL 
-    * d'adapter la couche de threading à votre compilateur (Intel ou GNU) 
- 
-Nous reviendrons plus en détail sur la partie //threading// dans l'article [[mkl-et-parallelisme]]. 
- 
-===== Compilation ===== 
-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 : 
-  * mode statique ou dynamique 
-  * utilisation d'entiers 64 ou 32 bits 
-  * mode threadé ou séquentiel 
-  * etc. 
- 
-Plusieurs méthodes sont possibles pour connaître les options de compilation adaptées, nous ne décrirons dans la suite que deux méthodes par souci de simplicité. 
- 
-==== Option -mkl pour compilateurs Intel ==== 
-  * Cette méthode est la plus simple 
-  * Elle ne fonctionnera qu'avec les compilateurs Intel, avec un choix limité d'option 
-  * Options :  
-    * ''-mkl'' pour utiliser la MKL en version //threadé// 
-    * ''-mkl=sequential'' pour utiliser la MKL en version //séquentiel// 
logiciels/mkl/start.1433338612.txt.gz · Dernière modification: 2015/06/03 15:36 de montap01