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?

Était-ce utile?

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

http://math-atlas.sourceforge.net/faq.html#tsafe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top