diff --git a/ompi/mpi/fortran/use-mpi-f08/ineighbor_alltoallw_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/ineighbor_alltoallw_f08.F90 index fadee47abd..c4e7a2050b 100644 --- a/ompi/mpi/fortran/use-mpi-f08/ineighbor_alltoallw_f08.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/ineighbor_alltoallw_f08.F90 @@ -1,6 +1,6 @@ ! -*- f90 -*- ! -! Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2013 Cisco Systems, Inc. All rights reserved. ! Copyright (c) 2009-2013 Los Alamos National Security, LLC. ! All rights reserved. ! $COPYRIGHT$ @@ -12,18 +12,19 @@ subroutine MPI_Ineighbor_alltoallw_f08(sendbuf,sendcounts,sdispls,sendtypes,& use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request, MPI_ADDRESS_KIND use :: mpi_f08, only : ompi_ineighbor_alltoallw_f implicit none - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*) INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*) - TYPE(MPI_Datatype), INTENT(IN) :: sendtypes - TYPE(MPI_Datatype), INTENT(IN) :: recvtypes + TYPE(MPI_Datatype), INTENT(IN) :: sendtypes(*) + TYPE(MPI_Datatype), INTENT(IN) :: recvtypes(*) TYPE(MPI_Comm), INTENT(IN) :: comm TYPE(MPI_Request), INTENT(OUT) :: request INTEGER, OPTIONAL, INTENT(OUT) :: ierror integer :: c_ierror - call ompi_ineighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes%MPI_VAL,& - recvbuf,recvcounts,rdispls,recvtypes%MPI_VAL,& + call ompi_ineighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes(1)%MPI_VAL,& + recvbuf,recvcounts,rdispls,recvtypes(1)%MPI_VAL,& comm%MPI_VAL,request%MPI_VAL,c_ierror) if (present(ierror)) ierror = c_ierror diff --git a/ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h b/ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h index 3f21304a91..6a0df652ee 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h +++ b/ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h @@ -3149,4 +3149,143 @@ subroutine ompi_mrecv_f(buf,count,datatype,message,status,ierror) & INTEGER, INTENT(OUT) :: ierror end subroutine ompi_mrecv_f +subroutine ompi_neighbor_allgather_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, & + comm,ierror) & + BIND(C, name="ompi_neighbor_allgather_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcount, recvcount + INTEGER, INTENT(IN) :: sendtype, recvtype + INTEGER, INTENT(IN) :: comm + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_neighbor_allgather_f + +subroutine ompi_ineighbor_allgather_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, & + comm,request,ierror) & + BIND(C, name="ompi_ineighbor_allgather_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcount, recvcount + INTEGER, INTENT(IN) :: sendtype, recvtype + INTEGER, INTENT(IN) :: comm + INTEGER, INTENT(OUT) :: request + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_ineighbor_allgather_f + +subroutine ompi_neighbor_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs, & + recvtype,comm,ierror) & + BIND(C, name="ompi_neighbor_allgatherv_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcount + INTEGER, INTENT(IN) :: recvcounts(*), displs(*) + INTEGER, INTENT(IN) :: sendtype, recvtype + INTEGER, INTENT(IN) :: comm + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_neighbor_allgatherv_f + +subroutine ompi_ineighbor_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs, & + recvtype,comm,request,ierror) & + BIND(C, name="ompi_ineighbor_allgatherv_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcount + INTEGER, INTENT(IN) :: recvcounts(*), displs(*) + INTEGER, INTENT(IN) :: sendtype, recvtype + INTEGER, INTENT(IN) :: comm + INTEGER, INTENT(OUT) :: request + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_ineighbor_allgatherv_f + +subroutine ompi_neighbor_alltoall_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, & + comm,ierror) & + BIND(C, name="ompi_neighbor_alltoall_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcount, recvcount + INTEGER, INTENT(IN) :: sendtype, recvtype + INTEGER, INTENT(IN) :: comm + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_neighbor_alltoall_f + +subroutine ompi_ineighbor_alltoall_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, & + comm,request,ierror) & + BIND(C, name="ompi_ineighbor_alltoall_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcount, recvcount + INTEGER, INTENT(IN) :: sendtype, recvtype + INTEGER, INTENT(IN) :: comm + INTEGER, INTENT(OUT) :: request + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_ineighbor_alltoall_f + +subroutine ompi_neighbor_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype,recvbuf,recvcounts, & + rdispls,recvtype,comm,ierror) & + BIND(C, name="ompi_neighbor_alltoallv_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*) + INTEGER, INTENT(IN) :: sendtype, recvtype + INTEGER, INTENT(IN) :: comm + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_neighbor_alltoallv_f + +subroutine ompi_ineighbor_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype,recvbuf,recvcounts, & + rdispls,recvtype,comm,request,ierror) & + BIND(C, name="ompi_ineighbor_alltoallv_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*) + INTEGER, INTENT(IN) :: sendtype, recvtype + INTEGER, INTENT(IN) :: comm + INTEGER, INTENT(OUT) :: request + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_ineighbor_alltoallv_f + +subroutine ompi_neighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes,recvbuf,recvcounts, & + rdispls,recvtypes,comm,ierror) & + BIND(C, name="ompi_neighbor_alltoallw_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Aint, MPI_ADDRESS_KIND + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*) + INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*) + INTEGER, INTENT(IN) :: sendtypes, recvtypes + INTEGER, INTENT(IN) :: comm + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_neighbor_alltoallw_f + +subroutine ompi_ineighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes,recvbuf,recvcounts, & + rdispls,recvtypes,comm,request,ierror) & + BIND(C, name="ompi_ineighbor_alltoallw_f") + use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request, MPI_ADDRESS_KIND + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf + INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*) + INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*) + INTEGER, INTENT(IN) :: sendtypes, recvtypes + INTEGER, INTENT(IN) :: comm + INTEGER, INTENT(OUT) :: request + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine ompi_ineighbor_alltoallw_f + end interface diff --git a/ompi/mpi/fortran/use-mpi-f08/neighbor_alltoallw_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/neighbor_alltoallw_f08.F90 index 1ce1b4c8e2..62f3db57cf 100644 --- a/ompi/mpi/fortran/use-mpi-f08/neighbor_alltoallw_f08.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/neighbor_alltoallw_f08.F90 @@ -1,6 +1,6 @@ ! -*- f90 -*- ! -! Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2013 Cisco Systems, Inc. All rights reserved. ! Copyright (c) 2009-2013 Los Alamos National Security, LLC. ! All rights reserved. ! $COPYRIGHT$ @@ -12,17 +12,18 @@ subroutine MPI_Neighbor_alltoallw_f08(sendbuf,sendcounts,sdispls,sendtypes,& use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_ADDRESS_KIND use :: mpi_f08, only : ompi_neighbor_alltoallw_f implicit none - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*) INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*) - TYPE(MPI_Datatype), INTENT(IN) :: sendtypes - TYPE(MPI_Datatype), INTENT(IN) :: recvtypes + TYPE(MPI_Datatype), INTENT(IN) :: sendtypes(*) + TYPE(MPI_Datatype), INTENT(IN) :: recvtypes(*) TYPE(MPI_Comm), INTENT(IN) :: comm INTEGER, OPTIONAL, INTENT(OUT) :: ierror integer :: c_ierror - call ompi_neighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes%MPI_VAL,& - recvbuf,recvcounts,rdispls,recvtypes%MPI_VAL,& + call ompi_neighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes(1)%MPI_VAL,& + recvbuf,recvcounts,rdispls,recvtypes(1)%MPI_VAL,& comm%MPI_VAL,c_ierror) if (present(ierror)) ierror = c_ierror