mpirun保留重定向的标准输出

mpirun保留重定向的标准输出,mpi,stdout,Mpi,Stdout,我正在集群中运行。我尝试使用4种不同的表单运行可执行文件: 连载 myexec 正如预期的那样,这会立即在stdout中开始输出 在串行模式下,重定向stdout和stderr,使用 myexec > out-err.log 2>&1 mpirun -n 2 myexec > out-err.log 2>&1 这会按照预期立即在out err.log中提供输出(在另一个终端中通过cat out err.log进行验证) 同时,与 mpirun -n

我正在集群中运行。我尝试使用4种不同的表单运行可执行文件:

  • 连载

    myexec
    
    正如预期的那样,这会立即在
    stdout
    中开始输出

  • 在串行模式下,重定向
    stdout
    stderr
    ,使用

    myexec > out-err.log 2>&1
    
    mpirun -n 2 myexec > out-err.log 2>&1
    
    这会按照预期立即在
    out err.log
    中提供输出(在另一个终端中通过
    cat out err.log
    进行验证)

  • 同时,与

    mpirun -n 2 myexec
    
    正如预期的那样,这会立即在
    stdout
    中开始输出

  • 同时,重定向
    stdout
    stderr
    ,使用

    myexec > out-err.log 2>&1
    
    mpirun -n 2 myexec > out-err.log 2>&1
    
    这将保留输出,直到作业完成(由于完成或时间限制)


  • 在案例4中,有没有办法让stdout/stderr在运行时“刷新”,这样我就可以检查出err.log?

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

  • ~/.bashrc
    中添加
    export OMPI\u MCA\u opal\u event\u include=poll
    ,或

  • ~/.openmpi/mca params.conf
    中添加
    opal\u event\u include=poll
    (如果目录和/或文件不存在,则创建它们)

  • 用于获取信息的来源包括: