2010-09-28 6 views
1

I utilisent 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 cœurs et que je voudrais lancer un script python à 4 nœuds qui fait de l'algèbre linéaire sur chaque nœud en utilisant numpy.ATLAS algèbre linéaire et openmpi sur multiconducteur avec python

Comment puis-je faire en sorte que ATLAS ne pas utiliser plus d'un noyau lorsqu'il est en train de faire l'algèbre linéaire dans chaque noeud? Quand je construis ATLAS, il ne semble pas y avoir d'option pour qu'il soit configuré pour 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 y avoir une variable d'environnement équivalente.

Je suppose 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 ou donner des règles empiriques pour savoir si c'est une bonne ou une mauvaise idée?

Répondre

1

Malheureusement, le nombre maximal de threads ATLAS utilisations ne peut pas être contrôlé par une variable d'environnement tels que OMP_NUM_THREADS. Vous devrez relink numpy contre la librairie ATLAS en série. Voir

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

+0

Merci. Je vais regarder dans la construction d'ATLAS en série. Il est bon d'avoir un chiffrement avec un ATLAS à un seul cœur à cette fin. – Paul

Questions connexes