2017-06-09 2 views
2

Je cours dans un cluster. J'ai essayé d'exécuter mon exécutable avec 4 formes différentes:mpirun conservant stdout redirigé

  1. En série, avec

    myexec 
    

    Cela commence à donner sortie à stdout tout de suite, comme prévu.

  2. En série, rediriger stdout et stderr, avec

    myexec > out-err.log 2>&1 
    

    Ceci commence à donner en sortie out-err.log tout de suite, comme prévu (vérifié avec cat out-err.log dans un autre terminal).

  3. En parallèle, avec

    mpirun -n 2 myexec 
    

    Cela commence à donner sortie à stdout tout de suite, comme prévu.

  4. En parallèle, la réorientation stdout et stderr, avec

    mpirun -n 2 myexec > out-err.log 2>&1 
    

    Cette conserve sortie jusqu'à ce travail est terminé (en raison de l'allocation d'achèvement ou de temps).

Est-il possible d'avoir stdout/stderr « rincée » lors de l'exécution dans le cas 4, donc je peux vérifier out-err.log?

Répondre

2

Ceci est une fonction/problème connu avec la redirection en mpi. J'ai trouvé comment résoudre ceci:

  1. Ajouter export OMPI_MCA_opal_event_include=poll dans ~/.bashrc, ou

  2. Ajouter opal_event_include=poll dans ~/.openmpi/mca-params.conf (le répertoire et créer/ou le fichier si elles n'existent pas).

Les sources utilisées pour obtenir des informations sont:

https://www.cfd-online.com/Forums/openfoam-installation/162664-openfoam-2-4-0-openmpi-epoll-warning-parallel-job.html

https://github.com/open-mpi/ompi/issues/341

https://www.open-mpi.org/doc/v2.0/man1/mpirun.1.php#sect20