如何打印"收集之前#34;之前"收集后#34;在mpi python mpi4py中

时间:2017-10-15 21:30:48

标签: python mpi stdout hpc mpi4py

请参阅以下收集代码:

from mpi4py import MPI

comm = MPI.COMM.WORLD
size = comm.Get_size()
rank = comm.Get_rank()
stat = MPI.Status()

message = (rank)**2
print "Before Gather ",rank, message

message = comm.gather(message, root=0)

if rank == 0:
        print "After Gather ",rank,message

如何使用 comm.barrier()功能确保“After”步骤始终在所有“Before”步骤之后?

如果我在条件之前放入comm.barrier(),结果将按任何顺序排列。

我已经尝试了冲洗它并没有工作。

我应该使用Gather指定发送缓冲区和接收缓冲区吗?

或者,我应该尝试将所有内容收集到一个进程,然后分散,然后再次聚集?

任何建议都非常受欢迎和赞赏。

1 个答案:

答案 0 :(得分:0)

基本上,你不能。

来自每个MPI任务的

stdout 收集,然后由mpirun打印,并且没有强制执行任何类型的全局订单的机制。

唯一的保证是Before Gather 0 ...

之前始终会打印After Gather 0 ...