2010-11-01 3 views
1

J'essaie de mettre en place un cluster MPI. Mais j'ai le problème que le nombre de processeurs ajoutés au fichier mpd.conf n'est pas correctement utilisé. J'ai trois serveurs Ubuntu. opteron avec 48 cores calc1 avec 8 cores calc2 avec 8 cores.mpiexec utilisant le mauvais numéro de cpus

Mon mpd.hosts ressemble:
opteron:46
calc1:6
calc2:6

Après le démarrage (mpdboot -n 3 -f mpd.hosts) le système est en cours d'exécution. mpdtrace -> tous les trois sont répertoriés. Mais l'exécution d'un programme tel que "mpiexec -n 58 raxmlHPC-MPI ..." entraîne que calc1 et calc2 atteignent de nombreux travaux et que opteron en reçoit plusieurs en même temps. Qu'est-ce que je fais de mal?

Cordialement

Bjoern

+0

Après le démarrage de mpiexec, opteron obtient 20, calc1 19 et calc2 19 processus. Cela fait 58, le nombre que j'ai dit mpiexec – Bjoern

Répondre

1

J'ai trouvé une solution de contournement. J'ai utilisé le paramètre supplémentaire "-machinefile /path/to/mpd.hosts" pour la commande mpiexec. Et maintenant, tous les nœuds fonctionnent correctement. Un problème que je suis arrivé est que je suis message d'erreur:

... MPIU_SHMW_Seg_create_attach_templ (671): ouvert a échoué - Aucun fichier ou répertoire ...

Pour résoudre ce problème, je devais définir l'environnement variable MPICH_NO_LOCAL=1

1

Comme vous l'avez compris, vous devez transmettre le fichier machine à mpdboot et mpiexec afin d'utiliser le nombre de processus par hôte. Le problème "Échec ouvert" est un bogue connu dans MPD, le gestionnaire de processus que vous utilisez. Notez que la solution de contournement MPICH_NO_LOCAL=1 fonctionnera, mais entraînera probablement une grande pénalité de performance pour la communication intranode.

Vous utilisez clairement MPICH2 (ou un dérivé MPICH2), mais la version que vous utilisez n'est pas claire. Si vous le pouvez, je vous recommande vivement de passer à MPICH2 1.2.1p1 ou (mieux encore) 1.3.1. Ces deux versions incluent un gestionnaire de processus plus récent appelé hydra qui est beaucoup plus rapide et plus robuste. En 1.3.1, hydra est le gestionnaire de processus par défaut. Il ne nécessite pas de phase mpdboot et il prend en charge une variable d'environnement $HYDRA_HOST_FILE afin que vous n'ayez pas à spécifier le fichier machine sur tous les mpiexec.

Questions connexes