Hi

I'm testing this in a debian box, openmpi 1.3-2, compiled with gcc suite (all from packages). After compiling and running the code I'm baffled with the output, it seems MPI_Barrier is not working. Maybe it is such a basic error I'm doing that I can't figure it out... See the code below, the output it gives (one of because it's a bit erratic) and what I would expect as output. Any help would be aprecciated...

 Code was compiled with

 mpif90 -O0 -g -fbounds-check -Wall test_mpi.f90 -o test_mpi

 - > code - cut here ----------------------

program testmpi

  use iso_fortran_env

  implicit none

  include 'mpif.h'

  integer, parameter :: ni=16,nj=16,nk=16

  integer, parameter :: stdout=output_unit, stderr=error_unit, &
       stdin=input_unit

  integer :: istep,  idest, idx, &
       ierr, my_rank, world, nprocs

  ! > CODE STARTS ----------------------------------------------- *

  call MPI_Init(ierr)

  world = MPI_COMM_WORLD
  call MPI_comm_rank(world, my_rank, ierr)
  call MPI_comm_size(world, nprocs, ierr)

  call MPI_Barrier(world, ierr)

  do istep=1, nprocs

     idest=ieor(my_rank, istep)

     if(my_rank.eq.0) print '("*",/)'
     call flush(stdout)

     call MPI_Barrier(world, ierr)

     do idx=0,nprocs-1

        if(idx.eq.my_rank .and. idest.lt.nprocs)then
           print '("ISTEP",I2," IDX",I2," my_rank ",I5," idest ",I5)', &
               istep, idx, my_rank, idest
           call flush(stdout)
        endif

        call MPI_Barrier(world, ierr)
     enddo

      call MPI_Barrier(world, ierr)

  enddo


  call MPI_Barrier(world, ierr)
  call MPI_Finalize(ierr)


end program testmpi

 - < code - cut here ----------------------

 - > output - cut here ----------------------

*

ISTEP 1 IDX 1 my_rank     1 idest     0
ISTEP 2 IDX 1 my_rank     1 idest     3
ISTEP 1 IDX 2 my_rank     2 idest     3
ISTEP 2 IDX 2 my_rank     2 idest     0
ISTEP 1 IDX 3 my_rank     3 idest     2
ISTEP 1 IDX 0 my_rank     0 idest     1
*

ISTEP 2 IDX 0 my_rank     0 idest     2
ISTEP 2 IDX 3 my_rank     3 idest     1
ISTEP 3 IDX 3 my_rank     3 idest     0
ISTEP 3 IDX 1 my_rank     1 idest     2
ISTEP 3 IDX 2 my_rank     2 idest     1
*

ISTEP 3 IDX 0 my_rank     0 idest     3
*

 - < output - cut here ----------------------



 - > expected output - cut here ----------------------

*

ISTEP 1 IDX 0 my_rank     0 idest     1
ISTEP 1 IDX 1 my_rank     1 idest     0
ISTEP 1 IDX 2 my_rank     2 idest     3
ISTEP 1 IDX 3 my_rank     3 idest     2

*

ISTEP 2 IDX 0 my_rank     0 idest     2
ISTEP 2 IDX 1 my_rank     1 idest     3
ISTEP 2 IDX 2 my_rank     2 idest     0
ISTEP 2 IDX 3 my_rank     3 idest     1

*

ISTEP 3 IDX 0 my_rank     0 idest     3
ISTEP 3 IDX 1 my_rank     1 idest     2
ISTEP 3 IDX 2 my_rank     2 idest     1
ISTEP 3 IDX 3 my_rank     3 idest     0

 - < expected output - cut here ----------------------

 Ricardo Reis

 'Non Serviam'

 PhD candidate @ Lasef
 Computational Fluid Dynamics, High Performance Computing, Turbulence
 http://www.lasef.ist.utl.pt

 Cultural Instigator @ Rádio Zero
 http://www.radiozero.pt

 Keep them Flying! Ajude a/help Aero Fénix!

 http://www.aeronauta.com/aero.fenix

 http://www.flickr.com/photos/rreis/

Reply via email to