Line data Source code
1 : !{\src2tex{textfont=tt}}
2 : !!****f* ABINIT/xmpi_ialltoall
3 : !! NAME
4 : !! xmpi_ialltoall
5 : !!
6 : !! FUNCTION
7 : !! This module contains functions that calls MPI routine,
8 : !! if we compile the code using the MPI CPP flags.
9 : !! xmpi_ialltoall is the generic function.
10 : !!
11 : !! COPYRIGHT
12 : !! Copyright (C) 2001-2026 ABINIT group (MG)
13 : !! This file is distributed under the terms of the
14 : !! GNU General Public License, see ~ABINIT/COPYING
15 : !! or http://www.gnu.org/copyleft/gpl.txt .
16 : !!
17 : !! SOURCE
18 :
19 : !!***
20 :
21 : !!****f* ABINIT/xmpi_ialltoall_dp4d
22 : !! NAME
23 : !! xmpi_ialltoall_dp4d
24 : !!
25 : !! FUNCTION
26 : !! Sends data from all to all processes.
27 : !! Target: double precision four-dimensional arrays.
28 : !! Non-blocking version.
29 : !!
30 : !! INPUTS
31 : !!
32 : !! OUTPUT
33 : !!
34 : !! SOURCE
35 :
36 4032 : subroutine xmpi_ialltoall_dp4d(xval, sendsize, recvbuf, recvsize, comm, request)
37 :
38 : !Arguments-------------------------
39 : real(dp) ABI_ASYNC, intent(in) :: xval(:,:,:,:)
40 : real(dp) ABI_ASYNC, intent(inout) :: recvbuf(:,:,:,:)
41 : integer,intent(in) :: sendsize,recvsize,comm
42 : integer,intent(out) :: request
43 :
44 : !Local variables-------------------
45 : integer :: ierr
46 :
47 : ! *************************************************************************
48 :
49 : #ifdef HAVE_MPI_IALLTOALL
50 : ! Requires MPI3
51 4032 : if (comm /= MPI_COMM_SELF .and. comm /= MPI_COMM_NULL) then
52 : call MPI_IALLTOALL(&
53 : xval, sendsize, MPI_DOUBLE_PRECISION,&
54 4032 : recvbuf,recvsize, MPI_DOUBLE_PRECISION, comm, request, ierr)
55 4032 : xmpi_count_requests = xmpi_count_requests + 1
56 4032 : return
57 : end if
58 : return
59 : #endif
60 :
61 : ! Call the blocking version and return null request.
62 : ! write(*,*)"will block here and return fake request"
63 : call xmpi_alltoall(xval, sendsize, recvbuf, recvsize, comm, ierr)
64 : request = xmpi_request_null
65 :
66 : end subroutine xmpi_ialltoall_dp4d
67 : !!***
|