1 ! This file created from test/mpi/f77/rma/winscale2f.f with f77tof90
2 ! -*- Mode: Fortran; -*-
4 ! (C) 2003 by Argonne National Laboratory.
5 ! See COPYRIGHT in top-level directory.
11 integer left, right, rank, size
13 parameter (nrows=25,ncols=10)
14 integer buf(1:nrows,0:ncols+1)
15 integer comm, group, group2, ans
16 integer nneighbors, nbrs(2), i, j
17 logical mtestGetIntraComm
19 ! Include addsize defines asize as an address-sized integer
20 integer (kind=MPI_ADDRESS_KIND) asize
24 call mtest_init( ierr )
26 call mpi_type_size( MPI_INTEGER, intsize, ierr )
27 do while( mtestGetIntraComm( comm, 2, .false. ) )
28 asize = nrows * (ncols + 2) * intsize
29 call mpi_win_create( buf, asize, intsize * nrows, &
30 & MPI_INFO_NULL, comm, win, ierr )
32 ! Create the group for the neighbors
33 call mpi_comm_size( comm, size, ierr )
34 call mpi_comm_rank( comm, rank, ierr )
40 nneighbors = nneighbors + 1
41 nbrs(nneighbors) = left
44 if (right .ge. size) then
47 nneighbors = nneighbors + 1
48 nbrs(nneighbors) = right
50 call mpi_comm_group( comm, group, ierr )
51 call mpi_group_incl( group, nneighbors, nbrs, group2, ierr )
52 call mpi_group_free( group, ierr )
54 ! Initialize the buffer
61 buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows
64 call mpi_win_post( group2, 0, win, ierr )
65 call mpi_win_start( group2, 0, win, ierr )
68 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, &
69 & nrows, MPI_INTEGER, win, ierr )
71 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, &
72 & nrows, MPI_INTEGER, win, ierr )
74 call mpi_win_complete( win, ierr )
77 call mpi_win_test( win, flag, ierr )
81 if (left .ne. MPI_PROC_NULL) then
83 ans = rank * (ncols * nrows) - nrows + i
84 if (buf(i,0) .ne. ans) then
86 if (errs .le. 10) then
87 print *, ' buf(',i,',0) = ', buf(i,0), &
93 if (right .ne. MPI_PROC_NULL) then
95 ans = (rank+1) * (ncols * nrows) + i
96 if (buf(i,ncols+1) .ne. ans) then
98 if (errs .le. 10) then
99 print *, ' buf(',i,',',ncols+1,') = ', &
100 & buf(i,ncols+1), ' expected ', ans
105 call mpi_group_free( group2, ierr )
106 call mpi_win_free( win, ierr )
107 call mtestFreeComm( comm )
110 call mtest_finalize( errs )
111 call mpi_finalize( ierr )