LCOV - code coverage report
Current view: top level - shared/common/src/12_hide_mpi - xmpi_ialltoallv.finc (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 21 0
Test Date: 2026-09-20 18:56:22 Functions: 0.0 % 3 0

            Line data    Source code
       1              : !{\src2tex{textfont=tt}}
       2              : !!****f* ABINIT/xmpi_ialltoallv_dp2d
       3              : !! NAME
       4              : !!  xmpi_ialltoallv_dp2d
       5              : !!
       6              : !! FUNCTION
       7              : !!  This module contains functions calling the non-blocking MPI routine IALLTOALLV
       8              : !!  xmpi_ialltoallv is the generic function.
       9              : !!
      10              : !! COPYRIGHT
      11              : !!  Copyright (C) 2001-2026 ABINIT group (MG)
      12              : !!  This file is distributed under the terms of the
      13              : !!  GNU General Public License, see ~ABINIT/COPYING
      14              : !!  or http://www.gnu.org/copyleft/gpl.txt .
      15              : !!
      16              : !! INPUTS
      17              : !!  xval= buffer array
      18              : !!  sendcnts= number of sent elements
      19              : !!  sdispls= postions of values sent by the processor
      20              : !!  rdispls= positions of values received by the processor
      21              : !!  recvcnts= number of received elements
      22              : !!  comm= MPI communicator
      23              : !!
      24              : !! OUTPUT
      25              : !!  request= MPI request
      26              : !!
      27              : !! SIDE EFFECTS
      28              : !!  recvbuf= received buffer
      29              : !!
      30              : !! SOURCE
      31              : 
      32            0 : subroutine xmpi_ialltoallv_dp2d(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,request)
      33              : 
      34              : !Arguments-------------------------
      35              :  real(dp) ABI_ASYNC, intent(in) :: xval(:,:)
      36              :  real(dp) ABI_ASYNC, intent(inout) :: recvbuf(:,:)
      37              :  integer  ABI_ASYNC, intent(in) :: sendcnts(:),sdispls(:),rdispls(:),recvcnts(:)
      38              :  integer ,intent(in) :: comm
      39              :  integer ,intent(out) :: request
      40              : 
      41              : !Local variables-------------------
      42              :  integer :: ierr
      43              : 
      44              : ! *********************************************************************
      45              : 
      46              : #ifdef HAVE_MPI_IALLTOALLV
      47            0 :  if (comm /= MPI_COMM_SELF .and. comm /= MPI_COMM_NULL) then
      48              :    call MPI_IALLTOALLV(xval,sendcnts,sdispls,MPI_DOUBLE_PRECISION,recvbuf,&
      49            0 :      recvcnts,rdispls,MPI_DOUBLE_PRECISION,comm,request,ierr)
      50            0 :    xmpi_count_requests = xmpi_count_requests + 1
      51            0 :    return
      52              :  end if
      53              : #endif
      54              : 
      55              :  ! Call the blocking version and return null request.
      56            0 :  call xmpi_alltoallv(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,ierr)
      57            0 :  request = xmpi_request_null
      58              : 
      59              : end subroutine xmpi_ialltoallv_dp2d
      60              : !!***
      61              : 
      62              : !!****f* ABINIT/xmpi_ialltoallv_int2d
      63              : !! NAME
      64              : !!  xmpi_ialltoallv_int2d
      65              : !!
      66              : !! FUNCTION
      67              : !!  Sends data from all to all processes.
      68              : !!  Target: two-dimensional integer arrays.
      69              : !!
      70              : !! SOURCE
      71              : 
      72            0 : subroutine xmpi_ialltoallv_int2d(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,request)
      73              : 
      74              : !Arguments-------------------------
      75              :  integer ABI_ASYNC, intent(in) :: xval(:,:)
      76              :  integer ABI_ASYNC, intent(inout) :: recvbuf(:,:)
      77              :  integer ABI_ASYNC, intent(in) :: sendcnts(:),sdispls(:),rdispls(:),recvcnts(:)
      78              :  integer,intent(in) :: comm
      79              :  integer,intent(out) :: request
      80              : 
      81              : !Local variables-------------------
      82              :  integer :: ierr
      83              : 
      84              : ! *********************************************************************
      85              : 
      86              : #ifdef HAVE_MPI_IALLTOALLV
      87            0 :  if (comm /= MPI_COMM_SELF .and. comm /= MPI_COMM_NULL) then
      88              :    call MPI_IALLTOALLV(xval,sendcnts,sdispls,MPI_INTEGER,recvbuf,&
      89            0 :     recvcnts,rdispls,MPI_INTEGER,comm,request,ierr)
      90            0 :    xmpi_count_requests = xmpi_count_requests + 1
      91            0 :    return
      92              :  end if
      93              : #endif
      94              : 
      95              :  ! Call the blocking version and return null request.
      96            0 :  call xmpi_alltoallv(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,ierr)
      97            0 :  request = xmpi_request_null
      98              : 
      99              : end subroutine xmpi_ialltoallv_int2d
     100              : !!***
     101              : 
     102              : !!****f* ABINIT/xmpi_ialltoallv_dp1d2
     103              : !! NAME
     104              : !!  xmpi_ialltoallv_dp1d2
     105              : !!
     106              : !! FUNCTION
     107              : !!  Sends data from all to all processes.
     108              : !!  Target: double precision one-dimensional arrays.
     109              : !!
     110              : !! SOURCE
     111              : 
     112            0 : subroutine xmpi_ialltoallv_dp1d2(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,request)
     113              : 
     114              : !Arguments-------------------------
     115              :  real(dp) ABI_ASYNC, intent(in) :: xval(:)
     116              :  real(dp) ABI_ASYNC, intent(inout) :: recvbuf(:)
     117              :  integer ABI_ASYNC, intent(in) :: sendcnts(:),sdispls(:),recvcnts(:),rdispls(:)
     118              :  integer,intent(in) :: comm
     119              :  integer,intent(out) :: request
     120              : 
     121              : !Local variables-------------------
     122              :  integer :: ierr
     123              : 
     124              : ! *********************************************************************
     125              : 
     126              : #ifdef HAVE_MPI_IALLTOALLV
     127            0 :  if (comm /= MPI_COMM_SELF .and. comm /= MPI_COMM_NULL) then
     128              :    call MPI_IALLTOALLV(xval,sendcnts,sdispls,MPI_DOUBLE_PRECISION,recvbuf,&
     129            0 :     recvcnts,rdispls,MPI_DOUBLE_PRECISION,comm,request,ierr)
     130            0 :    xmpi_count_requests = xmpi_count_requests + 1
     131            0 :    return
     132              :  end if
     133              : #endif
     134              : 
     135              :  ! Call the blocking version and return null request.
     136            0 :  call xmpi_alltoallv(xval,sendcnts,sdispls,recvbuf,recvcnts,rdispls,comm,ierr)
     137            0 :  request = xmpi_request_null
     138              : 
     139              : end subroutine xmpi_ialltoallv_dp1d2
     140              : !!***
        

Generated by: LCOV version 2.3-1