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