Ceci est une ancienne révision du document !
Nous avons vu dans l'introduction à la MKL que cette librairie est par défaut en mode multi-threadé.
L'objet de cet article est d'exposer dans les grandes lignes :
Nous rappelons que la MKL est thread-safe.
Autrement dit, si votre programme est déjà multi-threadé (quel que soit le moyen utilisé) et que vous faites appel à la MKL dans des threads, l'exécution du programme ne risque pas de “planter” ou de générer des résultats aléatoires.
Si votre programme utilise les compilateurs Intel et OpenMP, la MKL gérera parfaitement les inter-actions, car elle utilise la même librairie de parallélisation. C'est le cas général.
Par contre, si votre code utilise un autre mécanisme de multi-threading, ou un autre compilateur, des inter-actions malvenues surviendront. Le code fonctionnera, mais l'utilisation des ressources sera sous-optimisé, en générant plus de threads que le système n'a de ressources. Vous devez absolument consulter la documentation (section Avoiding Conflicts in the Execution Environment) pour gérer ce cas.