Mpirun:如何只打印一个进程的标准输出?

Mpirun:如何只打印一个进程的标准输出?,mpi,openmpi,Mpi,Openmpi,跑步时 mpirun -n 2 <prg> mpirun-n2 两个进程的STDOUT流被合并并由shell显示。在这种交织格式中,很难分辨哪一行来自哪个节点 有没有办法让MPI只运行一个进程的STDOUT到它的STDOUT流?解决方案提供了以下包装器: #!/bin/sh ARGS=$@ if [[ $OMPI_COMM_WORLD_RANK == 0 ]] then $ARGS else $ARGS 1>/dev/null 2>/dev/null fi

跑步时

mpirun -n 2 <prg>
mpirun-n2
两个进程的STDOUT流被合并并由shell显示。在这种交织格式中,很难分辨哪一行来自哪个节点


有没有办法让MPI只运行一个进程的STDOUT到它的STDOUT流?

解决方案提供了以下包装器:

#!/bin/sh
ARGS=$@
if [[ $OMPI_COMM_WORLD_RANK == 0 ]]
then
  $ARGS
else
  $ARGS 1>/dev/null 2>/dev/null
fi 
多亏了保罗·卡皮诺斯


解决方案提供以下包装:

#!/bin/sh
ARGS=$@
if [[ $OMPI_COMM_WORLD_RANK == 0 ]]
then
  $ARGS
else
  $ARGS 1>/dev/null 2>/dev/null
fi 
多亏了保罗·卡皮诺斯


我不确定这是否可行。我不确定您使用的是哪种语言,但您可以定义一个预处理器宏来重载您的打印语句,这样可以同时写入进程列组,也可以将您的打印语句包装在检查进程列组的if语句中。我不确定这是否可行。我不确定您使用的是哪种语言,但您可以定义一个预处理器宏来重载您的打印语句,这样可以同时写入进程列组,也可以将您的打印语句包装在检查进程列组的if语句中。请尽量避免仅链接的答案。如果网站关闭或被重组,你的答案将不再有效。从链接页面总结解决方案如何?我将总结解决方案。该链接本应作为其占位符。请尽量避免使用仅链接的答案。如果网站关闭或被重组,你的答案将不再有效。从链接页面总结解决方案如何?我将总结解决方案。该链接本来是用来作为它的占位符的。