1!
2! Copyright (C) by Argonne National Laboratory
3!     See COPYRIGHT in top-level directory
4!
5
6! This file created from test/mpi/f77/coll/nonblockingf.f with f77tof90
7
8      program main
9      use mpi_f08
10      integer NUM_INTS
11      parameter (NUM_INTS=2)
12      integer maxSize
13      parameter (maxSize=128)
14      integer scounts(maxSize), sdispls(maxSize)
15      integer rcounts(maxSize), rdispls(maxSize)
16      TYPE(MPI_Datatype) types(maxSize)
17      integer sbuf(maxSize), rbuf(maxSize)
18      integer size, rank
19      TYPE(MPI_Comm) comm
20      TYPE(MPI_Request) req
21      integer ierr, errs
22      integer ii, ans
23
24      errs = 0
25
26      call mtest_init(ierr)
27
28      comm = MPI_COMM_WORLD
29      call MPI_Comm_size(comm, size, ierr)
30      call MPI_Comm_rank(comm, rank, ierr)
31!
32      do ii = 1, size
33         sbuf(2*ii-1) = ii
34         sbuf(2*ii)   = ii
35         sbuf(2*ii-1) = ii
36         sbuf(2*ii)   = ii
37         scounts(ii)  = NUM_INTS
38         rcounts(ii)  = NUM_INTS
39         sdispls(ii)  = (ii-1) * NUM_INTS
40         rdispls(ii)  = (ii-1) * NUM_INTS
41         types(ii)    = MPI_INTEGER
42      enddo
43
44      call MPI_Ibarrier(comm, req, ierr)
45      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
46
47      call MPI_Ibcast(sbuf, NUM_INTS, MPI_INTEGER, 0, comm, req, ierr)
48      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
49
50      call MPI_Igather(sbuf, NUM_INTS, MPI_INTEGER, &
51      &                  rbuf, NUM_INTS, MPI_INTEGER, &
52      &                  0, comm, req, ierr)
53      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
54
55      call MPI_Igatherv(sbuf, NUM_INTS, MPI_INTEGER, &
56      &                   rbuf, rcounts, rdispls, MPI_INTEGER, &
57      &                   0, comm, req, ierr)
58      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
59
60      call MPI_Ialltoall(sbuf, NUM_INTS, MPI_INTEGER, &
61      &                    rbuf, NUM_INTS, MPI_INTEGER, &
62      &                    comm, req, ierr)
63      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
64
65      call MPI_Ialltoallv(sbuf, scounts, sdispls, MPI_INTEGER, &
66      &                     rbuf, rcounts, rdispls, MPI_INTEGER, &
67      &                     comm, req, ierr)
68      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
69
70      call MPI_Ialltoallw(sbuf, scounts, sdispls, types, &
71      &                     rbuf, rcounts, rdispls, types, &
72      &                     comm, req, ierr)
73      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
74
75      call MPI_Ireduce(sbuf, rbuf, NUM_INTS, MPI_INTEGER, &
76      &                  MPI_SUM, 0, comm, req, ierr)
77      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
78
79      call MPI_Iallreduce(sbuf, rbuf, NUM_INTS, MPI_INTEGER, &
80      &                     MPI_SUM, comm, req, ierr)
81      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
82
83      call MPI_Ireduce_scatter(sbuf, rbuf, rcounts, MPI_INTEGER, &
84      &                          MPI_SUM, comm, req, ierr)
85      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
86
87      call MPI_Ireduce_scatter_block(sbuf, rbuf, NUM_INTS, MPI_INTEGER, &
88      &                                MPI_SUM, comm, req, ierr)
89      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
90
91      call MPI_Iscan(sbuf, rbuf, NUM_INTS, MPI_INTEGER, &
92      &                MPI_SUM, comm, req, ierr)
93      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
94
95      call MPI_Iexscan(sbuf, rbuf, NUM_INTS, MPI_INTEGER, &
96      &                  MPI_SUM, comm, req, ierr)
97      call MPI_Wait(req, MPI_STATUS_IGNORE, ierr)
98
99      call mtest_finalize( errs )
100      end
101