TABLE OF CONTENTS
- ABINIT/m_xgTransposer
- m_xgTransposer/xgTransposer_computeDistribution
- m_xgTransposer/xgTransposer_constructor
- m_xgTransposer/xgTransposer_copyConstructor
- m_xgTransposer/xgTransposer_free
- m_xgTransposer/xgTransposer_getComm
- m_xgTransposer/xgTransposer_getRank
- m_xgTransposer/xgTransposer_makeComm
- m_xgTransposer/xgTransposer_makeXgBlock
- m_xgTransposer/xgTransposer_reorganizeData
- m_xgTransposer/xgTransposer_setComm
- m_xgTransposer/xgTransposer_toColsRows
- m_xgTransposer/xgTransposer_toLinalg
- m_xgTransposer/xgTransposer_transpose
ABINIT/m_xgTransposer [ 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