ATLAS Algèbre linéaire et openmpi sur multicœur avec python
-
26-09-2019 - |
Question
J'utilise mpi4py et openmpi sur une machine multi-processeur / noyau pour faire l'algèbre linéaire. Mon numpy est construit en utilisant ATLAS . Supposons que j'ai une machine 4 de coeur et je voudrais exécuter un script python 4 de noeud qui effectue l'algèbre linéaire sur chaque noeud en utilisant numpy.
Comment puis-je assurer que ATLAS n'utilise pas plus d'un noyau lorsqu'il est en train de faire l'algèbre linéaire dans chaque noeud? Quand je construis ATLAS, il semble y avoir aucune option de l'avoir configuré pour faire fonctionner sur un seul noyau à la fois. Avec Intel MKL, je pense que vous pouvez définir OMP_NUM_THREADS = 1, et ce comportement est garanti. Y at-il un moyen de construire ATLAS juste à cet effet? Il ne semble pas être une variable d'environnement équivalent.
Je devine que l'exécution de plusieurs opérations BLAS simultanément sur chaque noyau d'une CPU multi-cœurs n'est pas une bonne stratégie. Quelqu'un peut-il commenter ce ou donner des règles empiriques où cela est une bonne ou une mauvaise idée?
La solution
Malheureusement, le nombre maximum de threads utilisations ATLAS ne peut pas être contrôlé par une variable d'environnement tels que OMP_NUM_THREADS. Vous devrez réassocier numpy contre la bibliothèque série ATLAS. Voir