Io mpi输出的格式是什么?

Io mpi输出的格式是什么?,io,parallel-processing,mpi,Io,Parallel Processing,Mpi,这对我来说真的很新鲜。我正在一台机器上测试这个hello world代码 program hello include 'mpif.h' integer rank, size, ierror, tag, status(MPI_STATUS_SIZE) character(12) message call MPI_INIT(ierror) call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror) call MPI_COMM_RANK(

这对我来说真的很新鲜。我正在一台机器上测试这个hello world代码

program hello
  include 'mpif.h'
  integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)
  character(12) message

  call MPI_INIT(ierror)
  call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror)
  call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)
  tag = 100
  if(rank .eq. 0) then

     message = 'Hello, world'
     do i=1, size-1
        call MPI_SEND(message, 12, MPI_CHARACTER, i, tag,&
             MPI_COMM_WORLD, ierror)
     enddo
  else
     call MPI_RECV(message, 12, MPI_CHARACTER, 0, tag,&
          MPI_COMM_WORLD, status, ierror)
  endif
  write(*,*) 'node', rank, ':', message

  call MPI_FINALIZE(ierror)
end program hello
我使用mpif90编译它,并提交了包含4个节点的作业。这就是输出文件的外观:

    nodenodenode             2           1              0:: Hello, worldHello, world:Hello, world


node            3 :Hello, world
所以我真的很担心这种格式。再说一次,我没有太多的MPI经验。我在另一台机器上进行了测试,结果如下:

 node           1 :Hello, world
 node           0 :Hello, world
 node           2 :Hello, world
 node           3 :Hello, world
你能告诉我这是一个不寻常的输出,还是不同机器的输出不同?非常感谢你。
~

我觉得这很正常

多个进程基本上同时向同一个终端写入数据,o/s交替写入数据。两个输出之间的差异很容易用平台之间缓冲的差异来解释;一个似乎在缓冲每一行,另一个似乎在缓冲每一个字


您所学到的是,在MPI编程中,如果需要的话,程序员有责任跨进程对操作进行排序。运行时平台不适合您,运行时平台也不同。

谢谢。那么不同节点的输出可以同时发生,甚至相互重叠?是这样吗?在另一台机器上,输出可能是行缓冲的。MPI实现通过网络重定向标准IO时,通常也会出现这种情况。@HighPerformanceMark谢谢!可能重复的