Habituellement, lorsque j'utilise mpirun, je peux le "surcharger", en utilisant plus de processeurs qu'il n'y en a actuellement sur mon ordinateur. Par exemple, sur mon Mac à quatre cœurs, je peux exécuter mpirun -np 29 python -c "print 'hey'"
aucun problème. Je suis sur une autre machine maintenant, ce qui génère l'erreur suivante:
$ mpirun -np 25 python -c "print 'hey'"
--------------------------------------------------------------------------
There are not enough slots available in the system to satisfy the 25 slots
that were requested by the application:
python
Either request fewer slots for your application, or make more slots available
for use.
--------------------------------------------------------------------------
Pourquoi le mpirun "overclocking" ne fonctionne-t-il pas ici? Existe-t-il un moyen de surmonter ce message d'erreur et de réussir à exécuter avec plus de processeurs que ceux disponibles?
Selon https://www.open-mpi.org/faq/?category=running#oversubscribing vous pouvez sursouscrire votre nœud en utilisant un fichier hôte. Avant de continuer, veillez à ce que vous puissiez gravement dégrader les performances du nœud. En outre, si le système que vous utilisez pour exécuter l'application utilise un système de file d'attente, cela peut ne pas être valide.
Créez d'abord un fichier hôte (nommé fichier hôte) contenant
localhost slots=25
Exécutez simplement votre application comme
mpirun --hostfile hostfile -np 25 python -c "print 'hey'"
Apparemment, la sursouscription peut être obtenue en utilisant l'option "- overubscribe" avec mpirun - a fait l'affaire pour moi avec le couple de course/maui