TABLE OF CONTENTS


ABINIT/m_nvtx_data [ Modules ]

[ Top ] [ 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