TABLE OF CONTENTS
ABINIT/m_nvtx_data [ Modules ]
NAME
m_nvtx_data
FUNCTION
Small module to define data used to profile and trace abinit with nvtx library (Nvidia nsys).
COPYRIGHT
Copyright (C) 2000-2024 ABINIT group (MT) This file is distributed under the terms of the GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt .
SOURCE
17 #if defined HAVE_CONFIG_H 18 #include "config.h" 19 #endif 20 21 module m_nvtx_data 22 23 #if defined(HAVE_GPU) && defined(HAVE_GPU_MARKERS) 24 use m_nvtx, only : nvtxStartRange, nvtxEndRange, nvtxProfilerStart, nvtxProfilerStop 25 #endif 26 27 implicit none 28 29 integer, parameter :: NUMBER_OF_NVTX_REGIONS = 65 30 character(len=32), dimension(NUMBER_OF_NVTX_REGIONS) :: nvtx_names 31 integer , dimension(NUMBER_OF_NVTX_REGIONS) :: nvtx_ids 32 33 integer, parameter :: NVTX_MAIN_COMPUTATION = 1 34 integer, parameter :: NVTX_SCF = 2 35 integer, parameter :: NVTX_VTORHO = 3 36 integer, parameter :: NVTX_VTOWFK = 4 37 integer, parameter :: NVTX_LOBPCG1 = 5 38 integer, parameter :: NVTX_LOBPCG2 = 6 39 integer, parameter :: NVTX_CHEBFI1 = 7 40 integer, parameter :: NVTX_CHEBFI2 = 8 41 integer, parameter :: NVTX_ORTHO_WF = 9 42 integer, parameter :: NVTX_GETGHC = 10 43 integer, parameter :: NVTX_GETGHC_LOCPOT = 11 44 integer, parameter :: NVTX_GETGHC_NLOCPOT = 12 45 integer, parameter :: NVTX_GETGHC_KIN = 13 46 integer, parameter :: NVTX_CHEBFI2_RR = 14 ! Rayleigh Ritz 47 integer, parameter :: NVTX_CHEBFI2_RRQ = 15 ! Rayleigh Ritz Quotient 48 integer, parameter :: NVTX_CHEBFI2_CORE = 16 ! core 49 integer, parameter :: NVTX_CHEBFI2_NONLOP = 17 50 integer, parameter :: NVTX_CTOCPRJ = 18 51 integer, parameter :: NVTX_VTOWFK_FOURWF = 19 52 integer, parameter :: NVTX_MKRHO = 20 53 integer, parameter :: NVTX_INVOVL = 21 54 integer, parameter :: NVTX_INVOVL_PREP = 22 55 integer, parameter :: NVTX_INVOVL_NONLOP1 = 23 56 integer, parameter :: NVTX_INVOVL_NONLOP2 = 24 57 integer, parameter :: NVTX_INVOVL_INNER = 25 58 integer, parameter :: NVTX_INVOVL_POST1 = 26 59 integer, parameter :: NVTX_INVOVL_POST2 = 27 60 integer, parameter :: NVTX_INVOVL_POST3 = 28 61 integer, parameter :: NVTX_SUB_SPC_DIAGO = 29 62 integer, parameter :: NVTX_CHEBFI2_NEXT_ORDER = 30 63 integer, parameter :: NVTX_CHEBFI2_SWAP_BUF = 31 64 integer, parameter :: NVTX_CHEBFI2_GET_AX_BX = 32 65 integer, parameter :: NVTX_VTOWFK_EXTRA1 = 33 66 integer, parameter :: NVTX_VTOWFK_EXTRA2 = 34 67 integer, parameter :: NVTX_VTORHO_EXTRA = 35 68 integer, parameter :: NVTX_SCFCV_PAWKNHAT = 36 69 integer, parameter :: NVTX_SCFCV_RHOTOV = 37 70 integer, parameter :: NVTX_SCFCV_NEWRHO = 38 71 integer, parameter :: NVTX_SCFCV_PAWDENPOT = 39 72 integer, parameter :: NVTX_SCFCV_ETOTFOR = 40 73 integer, parameter :: NVTX_SCFCV_SCPRQT = 41 74 integer, parameter :: NVTX_SCFCV_DIJ = 42 75 integer, parameter :: NVTX_SCFCV_SETVTR = 43 76 integer, parameter :: NVTX_CHEBFI2_SQRT2 = 44 77 integer, parameter :: NVTX_CHEBFI2_INIT = 45 78 integer, parameter :: NVTX_INIT_INWFFIL = 46 79 integer, parameter :: NVTX_INIT_INWFFIL2 = 47 80 integer, parameter :: NVTX_CHEBFI2_RR_SCALE = 48 ! not used anymore 81 integer, parameter :: NVTX_RR_HEGV = 49 82 integer, parameter :: NVTX_RR_GEMM_1 = 50 83 integer, parameter :: NVTX_RR_GEMM_2 = 51 84 integer, parameter :: NVTX_INVOVL_INNER_GEMM = 52 85 integer, parameter :: NVTX_CHEBFI2_TRANSPOSE = 53 86 integer, parameter :: NVTX_CHEBFI2_GET_BM1X = 54 87 integer, parameter :: NVTX_LOBPCG2_BLOCK = 55 88 integer, parameter :: NVTX_LOBPCG2_LINE = 56 89 integer, parameter :: NVTX_LOBPCG2_ORTHO_X_WRT = 57 90 integer, parameter :: NVTX_LOBPCG2_RESIDUE = 58 91 integer, parameter :: NVTX_LOBPCG2_RR = 59 92 integer, parameter :: NVTX_B_ORTHO = 60 93 integer, parameter :: NVTX_LOBPCG2_GET_AX_BX = 61 94 integer, parameter :: NVTX_RR_HEEV = 62 95 integer, parameter :: NVTX_FORSTRNPS = 63 96 integer, parameter :: NVTX_FORSTR_NONLOP = 64 97 integer, parameter :: NVTX_VTOWFK_NONLOP = 65 98 99 contains 100 101 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 102 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 103 subroutine nvtx_init() 104 105 implicit none 106 107 nvtx_names = [character(len=32) :: & 108 & "MAIN_COMPUTATION", & 109 & "SCF", & 110 & "VTORHO", & 111 & "VTOWFK", & 112 & "LOBPCG1", & 113 & "LOBPCG2", & 114 & "CHEBFI1", & 115 & "CHEBFI2", & 116 & "ORTHO_WF", & 117 & "GETGHC", & 118 & "LOCPOT", & 119 & "NLOCPOT", & 120 & "KINETIC", & 121 & "RAYLRITZ", & 122 & "RAYLRITZ_Q", & 123 & "CHEBFI2_CORE", & 124 & "CHEBFI2_NONLOP", & 125 & "CTOCPRJ", & 126 & "VTOWFK_FOURWF", & 127 & "MKRHO", & 128 & "INVOVL", & 129 & "INVOVL_PREP", & 130 & "INVOVL_NONLOP1", & 131 & "INVOVL_NONLOP2", & 132 & "INVOVL_INNER", & 133 & "INVOVL_POST1", & 134 & "INVOVL_POST2", & 135 & "INVOVL_POST3", & 136 & "SUB_SPC_DIAGO", & 137 & "NEXT_ORDER", & 138 & "SWAP_BUF", & 139 & "GET_AX_BX", & 140 & "VTOWFK_EXTRA1", & 141 & "VTOWFK_EXTRA2", & 142 & "VTORHO_EXTRA", & 143 & "SCFCV_PAWKNHAT", & 144 & "SCFCV_RHOTOV", & 145 & "SCFCV_NEWRHO", & 146 & "SCFCV_PAWDENPOT", & 147 & "SCFCV_ETOTFOR", & 148 & "SCFCV_SCPRQT", & 149 & "SCFCV_DIJ", & 150 & "SCFCV_SETVTR", & 151 & "CHEBFI2_SQRT2", & 152 & "CHEBFI2_INIT", & 153 & "INIT_INWFFIL", & 154 & "INIT_INWFFIL2", & 155 & "RR_SCALE", & 156 & "RR_HEGV", & 157 & "RR_XNP", & 158 & "RR_GEMM", & 159 & "INVOVL_INNER_GEMM", & 160 & "TRANSPOSE", & 161 & "GET_BM1X", & 162 & "LOBPCG2_BLOCK", & 163 & "LOBPCG2_LINE", & 164 & "LOBPCG2_ORTHO_X_WRT", & 165 & "LOBPCG2_RESIDUE", & 166 & "LOBPCG2_RR", & 167 & "B_ORTHO", & 168 & "GET_AX_BX", & 169 & "RR_HEEV", & 170 & "FORSTRNPS", & 171 & "FORSTR_NONLOP", & 172 & "VTOWFK_NONLOP" & 173 ] 174 175 nvtx_ids(1) = NVTX_MAIN_COMPUTATION 176 nvtx_ids(2) = NVTX_SCF 177 nvtx_ids(3) = NVTX_VTORHO 178 nvtx_ids(4) = NVTX_VTOWFK 179 nvtx_ids(5) = NVTX_LOBPCG1 180 nvtx_ids(6) = NVTX_LOBPCG2 181 nvtx_ids(7) = NVTX_CHEBFI1 182 nvtx_ids(8) = NVTX_CHEBFI2 183 nvtx_ids(9) = NVTX_ORTHO_WF 184 nvtx_ids(10)= NVTX_GETGHC 185 nvtx_ids(11)= NVTX_GETGHC_LOCPOT 186 nvtx_ids(12)= NVTX_GETGHC_NLOCPOT 187 nvtx_ids(13)= NVTX_GETGHC_KIN 188 nvtx_ids(14)= NVTX_CHEBFI2_RR 189 nvtx_ids(15)= NVTX_CHEBFI2_RRQ 190 nvtx_ids(16)= NVTX_CHEBFI2_CORE 191 nvtx_ids(17)= NVTX_CHEBFI2_NONLOP 192 nvtx_ids(18)= NVTX_CTOCPRJ 193 nvtx_ids(19)= NVTX_VTOWFK_FOURWF 194 nvtx_ids(20)= NVTX_MKRHO 195 nvtx_ids(21)= NVTX_INVOVL 196 nvtx_ids(22)= NVTX_INVOVL_PREP 197 nvtx_ids(23)= NVTX_INVOVL_NONLOP1 198 nvtx_ids(24)= NVTX_INVOVL_NONLOP2 199 nvtx_ids(25)= NVTX_INVOVL_INNER 200 nvtx_ids(26)= NVTX_INVOVL_POST1 201 nvtx_ids(27)= NVTX_INVOVL_POST2 202 nvtx_ids(28)= NVTX_INVOVL_POST3 203 nvtx_ids(29)= NVTX_SUB_SPC_DIAGO 204 nvtx_ids(30)= NVTX_CHEBFI2_NEXT_ORDER 205 nvtx_ids(31)= NVTX_CHEBFI2_SWAP_BUF 206 nvtx_ids(32)= NVTX_CHEBFI2_GET_AX_BX 207 nvtx_ids(33)= NVTX_VTOWFK_EXTRA1 208 nvtx_ids(34)= NVTX_VTOWFK_EXTRA2 209 nvtx_ids(35)= NVTX_VTORHO_EXTRA 210 nvtx_ids(36)= NVTX_SCFCV_PAWKNHAT 211 nvtx_ids(37)= NVTX_SCFCV_RHOTOV 212 nvtx_ids(38)= NVTX_SCFCV_NEWRHO 213 nvtx_ids(39)= NVTX_SCFCV_PAWDENPOT 214 nvtx_ids(40)= NVTX_SCFCV_ETOTFOR 215 nvtx_ids(41)= NVTX_SCFCV_SCPRQT 216 nvtx_ids(42)= NVTX_SCFCV_DIJ 217 nvtx_ids(43)= NVTX_SCFCV_SETVTR 218 nvtx_ids(44)= NVTX_CHEBFI2_SQRT2 219 nvtx_ids(45)= NVTX_CHEBFI2_INIT 220 nvtx_ids(46)= NVTX_INIT_INWFFIL 221 nvtx_ids(47)= NVTX_INIT_INWFFIL2 222 nvtx_ids(48)= NVTX_CHEBFI2_RR_SCALE 223 nvtx_ids(49)= NVTX_RR_HEGV 224 nvtx_ids(50)= NVTX_RR_GEMM_1 225 nvtx_ids(51)= NVTX_RR_GEMM_2 226 nvtx_ids(52)= NVTX_INVOVL_INNER_GEMM 227 nvtx_ids(53)= NVTX_CHEBFI2_TRANSPOSE 228 nvtx_ids(54)= NVTX_CHEBFI2_GET_BM1X 229 nvtx_ids(55)= NVTX_LOBPCG2_BLOCK 230 nvtx_ids(56)= NVTX_LOBPCG2_LINE 231 nvtx_ids(57)= NVTX_LOBPCG2_ORTHO_X_WRT 232 nvtx_ids(58)= NVTX_LOBPCG2_RESIDUE 233 nvtx_ids(59)= NVTX_LOBPCG2_RR 234 nvtx_ids(60)= NVTX_B_ORTHO 235 nvtx_ids(61)= NVTX_LOBPCG2_GET_AX_BX 236 nvtx_ids(62)= NVTX_RR_HEEV 237 nvtx_ids(63)= NVTX_FORSTRNPS 238 nvtx_ids(64)= NVTX_FORSTR_NONLOP 239 nvtx_ids(65)= NVTX_VTOWFK_NONLOP 240 241 end subroutine nvtx_init 242 243 #if defined(HAVE_GPU) && defined(HAVE_GPU_MARKERS) 244 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 245 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 246 subroutine abi_nvtx_start_range(id) 247 248 implicit none 249 250 ! dummy variables 251 integer :: id 252 253 if (id .le. NUMBER_OF_NVTX_REGIONS) then 254 call nvtxStartRange(nvtx_names(id),id) 255 end if 256 257 end subroutine abi_nvtx_start_range 258 259 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 260 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 261 subroutine abi_nvtx_end_range() 262 263 implicit none 264 265 call nvtxEndRange() 266 267 end subroutine abi_nvtx_end_range 268 269 #endif 270 271 end module m_nvtx_data