mpirun 保留重定向的标准输出

san*_*ica 6 stdout mpi

我在集群中运行。我尝试用 4 种不同的形式运行我的可执行文件:

  1. 在串行中,与

    myexec
    
    Run Code Online (Sandbox Code Playgroud)

    stdout正如预期的那样,这立即开始提供输出。

  2. 在串行中,重定向stdoutstderr,与

    myexec > out-err.log 2>&1
    
    Run Code Online (Sandbox Code Playgroud)

    out-err.log正如预期的那样,这立即开始提供输出(cat out-err.log在另一个终端中验证)。

  3. 同时,与

    mpirun -n 2 myexec
    
    Run Code Online (Sandbox Code Playgroud)

    stdout正如预期的那样,这立即开始提供输出。

  4. 同时,重定向stdoutstderr,与

    mpirun -n 2 myexec > out-err.log 2>&1
    
    Run Code Online (Sandbox Code Playgroud)

    这将保留输出直到作业完成(由于完成或时间限制)。

在情况 4 中,有没有办法在运行时“刷新”stdout/stderr,以便我可以检查out-err.log

san*_*ica 4

这是 mpi 中重定向的一个已知功能/问题。我找到了解决这个问题的方法:

  1. 添加,export OMPI_MCA_opal_event_include=poll~/.bashrc

  2. 添加(如果目录和/或文件不存在,则创建它们)opal_event_include=poll~/.openmpi/mca-params.conf

用于获取信息的来源是:

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