subroutine exchng1( a, nx, s, e, win, * bottom_nbr, top_nbr ) include 'mpif.h' integer nx, s, e double precision a(0:nx+1,s-1:e+1) integer win, bottom_nbr, top_nbr integer ierr c Special case for IRIX integer*8 bottom_ghost_disp, top_ghost_disp c -- print *, 'Before fence' c -- call MPI_WIN_FENCE( 0, win, ierr ) c Put bottom edge into bottom neighbor's top ghost cells c See text about top_ghost_disp top_ghost_disp = 1 + (nx+2)*(e-s+2) c -- print *, 'Before put' c -- if (bottom_nbr .ne. MPI_PROC_NULL) then call MPI_PUT( a(1,s), nx, MPI_DOUBLE_PRECISION, * bottom_nbr, top_ghost_disp, nx, * MPI_DOUBLE_PRECISION, win, ierr ) endif c Put top edge into top neighbor's bottom ghost cells bottom_ghost_disp = 1 c -- print *, 'Before put2' c -- if (top_nbr .ne. MPI_PROC_NULL) then call MPI_PUT( a(1,e), nx, MPI_DOUBLE_PRECISION, * top_nbr, bottom_ghost_disp, nx, * MPI_DOUBLE_PRECISION, win, ierr ) endif c -- print *, 'Before fence2' c -- call MPI_WIN_FENCE( 0, win, ierr ) c -- print *, 'Before fence3' c -- return end