Branch data 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 : : !!***
|