TABLE OF CONTENTS
ABINIT/xmpi_ialltoallv_dp1d2 [ Functions ]
NAME
xmpi_ialltoallv_dp1d2
FUNCTION
Sends data from all to all processes. Target: double precision one-dimensional arrays.
PARENTS
CHILDREN
mpi_ialltoallv
SOURCE
127 subroutine xmpi_ialltoallv_dp1d2(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,request) 128 129 !Arguments------------------------- 130 real(dp) ABI_ASYNC, intent(in) :: xval(:) 131 real(dp) ABI_ASYNC, intent(inout) :: recvbuf(:) 132 integer ABI_ASYNC, intent(in) :: sendcnts(:),sdispls(:),recvcnts(:),rdispls(:) 133 integer,intent(in) :: comm 134 integer,intent(out) :: request 135 136 !Local variables------------------- 137 integer :: ierr 138 139 ! ********************************************************************* 140 141 #ifdef HAVE_MPI_IALLTOALLV 142 if (comm /= MPI_COMM_SELF .and. comm /= MPI_COMM_NULL) then 143 call MPI_IALLTOALLV(xval,sendcnts,sdispls,MPI_DOUBLE_PRECISION,recvbuf,& 144 recvcnts,rdispls,MPI_DOUBLE_PRECISION,comm,request,ierr) 145 xmpi_count_requests = xmpi_count_requests + 1 146 return 147 end if 148 #endif 149 150 ! Call the blocking version and return null request. 151 call xmpi_alltoallv(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,ierr) 152 request = xmpi_request_null 153 154 end subroutine xmpi_ialltoallv_dp1d2
ABINIT/xmpi_ialltoallv_dp2d [ Functions ]
NAME
xmpi_ialltoallv_dp2d
FUNCTION
This module contains functions calling the non-blocking MPI routine IALLTOALLV xmpi_ialltoallv is the generic function.
COPYRIGHT
Copyright (C) 2001-2022 ABINIT group (MG) This file is distributed under the terms of the GNU General Public License, see ~ABINIT/COPYING or http://www.gnu.org/copyleft/gpl.txt .
INPUTS
xval= buffer array sendcnts= number of sent elements sdispls= postions of values sent by the processor rdispls= positions of values received by the processor recvcnts= number of received elements comm= MPI communicator
OUTPUT
request= MPI request
SIDE EFFECTS
recvbuf= received buffer
PARENTS
CHILDREN
mpi_ialltoallv
SOURCE
37 subroutine xmpi_ialltoallv_dp2d(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,request) 38 39 !Arguments------------------------- 40 real(dp) ABI_ASYNC, intent(in) :: xval(:,:) 41 real(dp) ABI_ASYNC, intent(inout) :: recvbuf(:,:) 42 integer ABI_ASYNC, intent(in) :: sendcnts(:),sdispls(:),rdispls(:),recvcnts(:) 43 integer ,intent(in) :: comm 44 integer ,intent(out) :: request 45 46 !Local variables------------------- 47 integer :: ierr 48 49 ! ********************************************************************* 50 51 #ifdef HAVE_MPI_IALLTOALLV 52 if (comm /= MPI_COMM_SELF .and. comm /= MPI_COMM_NULL) then 53 call MPI_IALLTOALLV(xval,sendcnts,sdispls,MPI_DOUBLE_PRECISION,recvbuf,& 54 recvcnts,rdispls,MPI_DOUBLE_PRECISION,comm,request,ierr) 55 xmpi_count_requests = xmpi_count_requests + 1 56 return 57 end if 58 #endif 59 60 ! Call the blocking version and return null request. 61 call xmpi_alltoallv(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,ierr) 62 request = xmpi_request_null 63 64 end subroutine xmpi_ialltoallv_dp2d
ABINIT/xmpi_ialltoallv_int2d [ Functions ]
NAME
xmpi_ialltoallv_int2d
FUNCTION
Sends data from all to all processes. Target: two-dimensional integer arrays.
PARENTS
CHILDREN
mpi_ialltoallv
SOURCE
82 subroutine xmpi_ialltoallv_int2d(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,request) 83 84 !Arguments------------------------- 85 integer ABI_ASYNC, intent(in) :: xval(:,:) 86 integer ABI_ASYNC, intent(inout) :: recvbuf(:,:) 87 integer ABI_ASYNC, intent(in) :: sendcnts(:),sdispls(:),rdispls(:),recvcnts(:) 88 integer,intent(in) :: comm 89 integer,intent(out) :: request 90 91 !Local variables------------------- 92 integer :: ierr 93 94 ! ********************************************************************* 95 96 #ifdef HAVE_MPI_IALLTOALLV 97 if (comm /= MPI_COMM_SELF .and. comm /= MPI_COMM_NULL) then 98 call MPI_IALLTOALLV(xval,sendcnts,sdispls,MPI_INTEGER,recvbuf,& 99 recvcnts,rdispls,MPI_INTEGER,comm,request,ierr) 100 xmpi_count_requests = xmpi_count_requests + 1 101 return 102 end if 103 #endif 104 105 ! Call the blocking version and return null request. 106 call xmpi_alltoallv(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,ierr) 107 request = xmpi_request_null 108 109 end subroutine xmpi_ialltoallv_int2d