TABLE OF CONTENTS


ABINIT/m_xgTransposer [ Modules ]

[ Top ] [ Modules ]

NAME

  m_xgTransposer

FUNCTION

 This module is to be user to go to "KGB" representation and to "linear
 algebra representation" It will replace most of prep_* subroutine
 This should really help to do the transposition operataion

COPYRIGHT

  Copyright (C) 2017-2024 ABINIT group (J. Bieder)
  This file is distributed under the terms of the
  GNU General Public License, see ~abinit/COPYING
  or http://www.gnu.org/copyleft/gpl.txt .

NOTES

SOURCE

 20 #if defined HAVE_CONFIG_H
 21 #include "config.h"
 22 #endif
 23 
 24 #include "abi_common.h"
 25 
 26 module m_xgTransposer
 27 
 28   use, intrinsic :: iso_c_binding, only: c_double, c_size_t, c_loc
 29 
 30   use defs_basis, only : std_err, std_out, dp, ABI_GPU_KOKKOS, ABI_GPU_OPENMP, ABI_GPU_DISABLED
 31   use m_xomp
 32   use m_profiling_abi
 33   use m_xmpi
 34   use m_errors
 35   use m_xg
 36   use m_time
 37 
 38 #if defined HAVE_YAKL
 39   use gator_mod
 40 #endif
 41 
 42 #if defined(HAVE_GPU_CUDA) && defined(HAVE_YAKL)
 43  use m_gpu_toolbox, only : CPU_DEVICE_ID, gpu_device_synchronize, gpu_data_prefetch_async
 44 #endif
 45 
 46 #ifdef HAVE_MPI2
 47   use mpi
 48 #endif
 49 
 50 #if defined(HAVE_GPU) && defined(HAVE_GPU_MARKERS)
 51   use m_nvtx
 52 #endif
 53 
 54   implicit none
 55 
 56 #ifdef HAVE_MPI1
 57  include 'mpif.h'
 58 #endif
 59 
 60   private
 61 
 62   integer, parameter, public :: STATE_LINALG = 1
 63   integer, parameter, public :: STATE_COLSROWS  = 2
 64   integer, parameter, public :: STATE_UNKNOW    = 3
 65   integer, parameter, public :: MPI_LINALG = 1
 66   integer, parameter, public :: MPI_ROWS   = 2
 67   integer, parameter, public :: MPI_COLS   = 3
 68   integer, parameter, public :: MPI_2DCART = 4
 69   integer, parameter, public :: TRANS_ALL2ALL = 1
 70   integer, parameter, public :: TRANS_GATHER = 2
 71   integer, parameter         :: TRANS_TYPE_CONSTRUCTED = 1
 72   integer, parameter         :: TRANS_TYPE_CONSTRUCTED_NULL_COMM = 2
 73   integer, parameter         :: TRANS_TYPE_COPIED = 3
 74 
 75   integer, parameter :: tim_toColsRows  = 1662
 76   integer, parameter :: tim_toLinalg    = 1663
 77   integer, parameter :: tim_all2allv    = 1664
 78   integer, parameter :: tim_gatherv     = 1665
 79   integer, parameter :: tim_reorganize  = 1666
 80   integer, parameter :: tim_init        = 1667
 81   integer, parameter :: tim_free        = 1668
 82   integer, parameter :: tim_transpose   = 1669
 83 
 84   type, private :: mpiData_t
 85     integer :: comm
 86     integer :: rank
 87     integer :: size
 88   end type mpiData_t
 89 
 90   type, private :: ptr_t
 91     double precision, pointer :: ptr(:,:) => null()
 92   end type ptr_t
 93 
 94   type, public :: xgTransposer_t
 95     type(xgBlock_t), pointer, private :: xgBlock_linalg => null()
 96     type(xgBlock_t), pointer, private :: xgBlock_colsrows => null()
 97     integer :: state
 98     type(mpiData_t), private :: mpiData(4)
 99     integer, allocatable, private :: lookup(:)
100     integer, pointer, private :: nrowsLinalg(:) => null()
101     integer :: nspinor
102     integer :: nrowsColsRows
103     integer :: ncolsColsRows
104     integer :: mpiAlgo
105     integer :: type
106     integer :: perPair
107     integer :: gpu_option = ABI_GPU_DISABLED
108     integer :: gpu_kokkos_nthrd = 1
109 #if defined HAVE_GPU && defined HAVE_YAKL
110     real(kind=c_double), ABI_CONTIGUOUS pointer:: buffer(:,:) => null()
111 #else
112     double precision, allocatable :: buffer(:,:)
113 #endif
114   end type xgTransposer_t
115 
116   public :: xgTransposer_constructor
117   public :: xgTransposer_copyConstructor
118   public :: xgTransposer_transpose
119   public :: xgTransposer_getRank
120   public :: xgTransposer_getComm
121   public :: xgTransposer_free
122 
123   contains

m_xgTransposer/xgTransposer_computeDistribution [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_computeDistribution

m_xgTransposer/xgTransposer_constructor [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_constructor

m_xgTransposer/xgTransposer_copyConstructor [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_copyConstructor

m_xgTransposer/xgTransposer_free [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_free

m_xgTransposer/xgTransposer_getComm [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_getComm

m_xgTransposer/xgTransposer_getRank [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_getRank

m_xgTransposer/xgTransposer_makeComm [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_makeComm

m_xgTransposer/xgTransposer_makeXgBlock [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_makeXgBlock

m_xgTransposer/xgTransposer_reorganizeData [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_reorganizeData

m_xgTransposer/xgTransposer_setComm [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_setComm

m_xgTransposer/xgTransposer_toColsRows [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_toColsRows

m_xgTransposer/xgTransposer_toLinalg [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_toLinalg

m_xgTransposer/xgTransposer_transpose [ Functions ]

[ Top ] [ m_xgTransposer ] [ Functions ]

NAME

 xgTransposer_transpose