mpi rank在do循环中无效

时间:2013-08-01 14:05:37

标签: fortran mpi

我正在更新fortran中的程序以使用MPI运行并且遇到了排名未正确显示的问题。在这个子程序的开头,我调用MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr)并返回正确的等级,直到这一点:

  DO IY=2,NY+1
  DO IX=2,NX+1
   D(IX,IY)=(h_roms(IX,IY)+zeta(IX,IY))*maskr(IX,IY)
   call mpi_barrier(mpi_comm_world,ierr)      
   write(out,12) rank,ix,iy
12 format('disappearing?',i3,'ix:',i3,'iy',i3)           
  ENDDO       
  ENDDO

NY和NX分别为124,84,等级打印正常,直到iy变为125,而ix为3.之后它只打印为 * ** 。 IT仍会打印两次所有内容(在2个处理器上运行),但排名无效或出现任何错误。我尝试在do循环后调用MPI_COMM_RANK,但仍然没有。任何想法都会非常感激。

1 个答案:

答案 0 :(得分:2)

如果数字输出字段太小而无法包含您尝试写入的数字,Fortran通常会打印一系列星号,即***。尝试将格式语句中的部分i3更改为i6甚至i0;最后一种形式告诉编译器在一个足够宽的字段中打印一个整数,但不能更宽。