MPI不支持有序打印日志。有没有办法打印每个节点的日志?
更细粒度的方法是使用带有openmpi的--output-filename
,它将stdout,stderr写到每个进程的节点中的文件,也就是说,如果我在2个节点上运行一个mpi作业,每个节点上有2个进程,我可以看到:
Node1:
rank.0/stdout, rank.0/stderr
rank.1/stdout, rank.1/stderr
Node2:
rank.2/stdout, rank.2/stderr
rank.3/stdout, rank.3/stderr
如何动态合并这些文件并将其写入单个文件(或该节点上的stdout )?
理想情况下,我希望将node1上的所有日志合并到一个日志中,并将node2上的所有日志合并到node2上的另一个日志中。
附言:我正在开发python3
发布于 2021-07-16 16:06:34
你可以的
MPI_Gather
,并将它们从根进程中写出。在MPI中同步写入的其他尝试可能不会起作用。
发布于 2021-07-17 01:33:00
一些实现允许在mpiexec
中使用"prepend“参数。例如,使用MPICH,我可以执行mpiexec -np 4 -l -prepend-rank
,并且每一行都以[N]
为前缀,其中N是秩。
如果您将这些日志用于工作流中的其他步骤,则可能需要查看MPI-IO选项,并协调将日志写入一个文件。(请注意,MPI-IO和文本文件可能是一项挑战。使用二进制数据推断MPI-IO行为要容易得多)。
https://stackoverflow.com/questions/68401743
复制相似问题