Branch data Line data Source code
1 : : !!****m* ABINIT/m_timana
2 : : !! NAME
3 : : !! m_timana
4 : : !!
5 : : !! FUNCTION
6 : : !! Analyse the timing, and print in unit ab_out. Some discussion of the
7 : : !! number of calls to different routines is also provided, as comments,
8 : : !! at the end of the routine, as well as, in the single dataset mode (ndtset<2),
9 : : !! a detailed analysis of the time-consuming routines.
10 : : !!
11 : : !! COPYRIGHT
12 : : !! Copyright (C) 1998-2026 ABINIT group (XG, GMR)
13 : : !! This file is distributed under the terms of the
14 : : !! GNU General Public License, see ~abinit/COPYING
15 : : !! or http://www.gnu.org/copyleft/gpl.txt .
16 : : !!
17 : : !! SOURCE
18 : :
19 : : #if defined HAVE_CONFIG_H
20 : : #include "config.h"
21 : : #endif
22 : :
23 : : #include "abi_common.h"
24 : :
25 : : module m_timana
26 : :
27 : : use defs_basis
28 : : use m_abicore
29 : : use m_xmpi
30 : : use m_xomp
31 : :
32 : : use m_time, only : time_accu, timab, TIMER_SIZE
33 : : use defs_abitypes, only : MPI_type
34 : :
35 : : implicit none
36 : :
37 : : private
38 : : !!***
39 : :
40 : : public :: timana
41 : : !!***
42 : :
43 : : contains
44 : : !!***
45 : :
46 : : !!****f* ABINIT/timana
47 : : !! NAME
48 : : !! timana
49 : : !!
50 : : !! FUNCTION
51 : : !! Analyse the timing, and print in unit ab_out. Some discussion of the
52 : : !! number of calls to different routines is also provided, as comments,
53 : : !! at the end of the routine, as well as, in the single dataset mode (ndtset<2),
54 : : !! a detailed analysis of the time-consuming routines.
55 : : !!
56 : : !! INPUTS
57 : : !! mpi_enreg=information about MPI parallelization
58 : : !! natom=number of atoms in cell.
59 : : !! nband(nkpt*nsppol)=number of bands at each k point, for each polarization
60 : : !! ndtset=number of datasets
61 : : !! nfft=(effective) number of FFT grid points (for this processor)
62 : : !! nkpt=number of k points
63 : : !! npwtot(nkpt)=number of planewaves in basis at this k point
64 : : !! nsppol=1 for unpolarized, 2 for spin-polarized
65 : : !! timopt= if >0, write short analysis, if <0, write full analysis
66 : : !! if timopt>=2, or timopt==-2 do not time the timer
67 : : !!
68 : : !! OUTPUT
69 : : !! (only writing)
70 : : !!
71 : : !! NOTES
72 : : !! *) One can suppress the cpu timer call in timein.f, if line 315 of the present routine is uncommented.
73 : : !!
74 : : !! *) The number of fourwf and nonlop calls can be computed as follows, in the
75 : : !! groud-state case, with no reading of wavefunctions (irdwfk==0 and the like),
76 : : !! and iscf>0 :
77 : : !!
78 : : !! 1) For fourwf.f
79 : : !!
80 : : !! In each cgwf call, there will be
81 : : !! 1 call (isign=+1 and -1) for the first gradient calculation,
82 : : !! and iline calls for the line minimizations,
83 : : !! minus the number of ffts skipped because some wfs are sufficiently converged
84 : : !! (there is a counter for that, see the log file)
85 : : !!
86 : : !! There are nband*nkpt*(nstep+2) calls to cgwf presently, where the
87 : : !! (nstep+2) comes from the number of the presence of 2 nonscf loops
88 : : !! in the first 2 steps.
89 : : !! Thus, the number of fourwf calls in cgwf is
90 : : !! nband*nkpt*(nstep+2)*(1+iline) - nskip_fourwf_in_cgwf
91 : : !!
92 : : !! To compute the density (either in vtowfk or in vtorho - by a mkrho call - )
93 : : !! at each step, there will be nband*nkpt one-way calls,
94 : : !! minus the number of bands skipped because the occupation number
95 : : !! is too small (smaller than 1.0d-14). There is another counter for that.
96 : : !! Thus, the number of fourwf calls for the density is
97 : : !! nband*nkpt*nstep - nskip_fourwf_for_density
98 : : !!
99 : : !! For example, for Si with nline=3, nkpt=2, nband=4, nstep=10, and supposing
100 : : !! no fourwf calls are skipped, there will be
101 : : !! at most 4*2*12=96 calls to cgwf, with 4 two-way fft,
102 : : !! that is 384 two-way ffts,
103 : : !! and 4*2*10=80 one-way ffts to make the density.
104 : : !! Altogether 464-nskip one-way ffts at most.
105 : : !!
106 : : !! 2) For nonlop.f
107 : : !!
108 : : !! Presently, there are three different types of call to nonlop :
109 : : !! for energy and gradient wrt wavefunctions (choice=1), for forces (choice=2),
110 : : !! and for stresses (choice=3).
111 : : !!
112 : : !! In each cgwf call, there will be one nonlop call for two fourwf calls
113 : : !! (independently of the number of skipped fourwf calls, since
114 : : !! nonlop is also skipped then). These are the only calls with choice=1.
115 : : !! Thus the number will be
116 : : !! nband*nkpt*(nstep+2)*(1+iline) - nskip_fourwf_in_cgwf
117 : : !!
118 : : !! The number of choice=2 nonlop calls is equal to the number of fourwf calls
119 : : !! to make the density, that is
120 : : !! nband*nkpt*nstep - nskip_fourwf_for_density
121 : : !!
122 : : !! The number of choice=8 calls is equal to the number of occupied bands
123 : : !! at the end of the calculation :
124 : : !! nband(occupied)*nkpt
125 : : !! The number of bands skipped then is not counted.
126 : : !!
127 : : !! NOTE : the number of fourwf calls is equal to
128 : : !! the # of nonlop (choice=1) calls + the # of nonlop (choice=2) calls
129 : : !!
130 : : !! SOURCE
131 : :
132 : 126 : subroutine timana(mpi_enreg,natom,nband,ndtset,nfft,nkpt,npwtot,nsppol,timopt)
133 : :
134 : : !Arguments ------------------------------------
135 : : !scalars
136 : : integer,intent(in) :: natom,ndtset,nfft,nkpt,nsppol,timopt
137 : : type(MPI_type),intent(in) :: mpi_enreg
138 : : !arrays
139 : : integer,intent(in) :: nband(nkpt*nsppol),npwtot(nkpt)
140 : :
141 : : !Local variables-------------------------------
142 : : !scalars
143 : : integer :: aslot,bslot,cslot,flag_count,flag_write,ierr,ii,ikpt,ipart
144 : : integer :: ilist,isort,islot,isppol,itim,itimab,ltimab,maxii,me
145 : : integer :: npart,nlist,nothers,nproc,nthreads,return_ncount
146 : : integer(i8b) :: nbdmean,npwmean,npwnbdmean
147 : : integer :: spaceworld,temp_list,totcount,tslot,utimab,ount
148 : : real(dp) :: cpunm,lflops,other_cpu,other_wal,percent_limit,subcpu,subwal,timab_cpu,timab_wall,wallnm
149 : : character(len=500) :: msg
150 : : !arrays
151 : : integer(i8b) :: basic(TIMER_SIZE),ndata(TIMER_SIZE),tslots(TIMER_SIZE)
152 : : integer :: ncount(TIMER_SIZE)
153 : 126 : integer,allocatable :: list(:)
154 : : real(dp) :: ftimes(2,TIMER_SIZE),ftsec(2),mflops(TIMER_SIZE),nflops(TIMER_SIZE),times(2,TIMER_SIZE),tsec(2),my_tsec(2)
155 : : character(len=32) :: names(-1:TIMER_SIZE),entry_name
156 : : character(len=*),parameter :: format01040 ="('- ',a32,f15.3,f6.1,f14.3,f6.1,i15,16x,f7.2,1x,f10.2)"
157 : : character(len=*),parameter :: format01041 ="('- ',a32,f15.3,f6.1,f14.3,f6.1,i15,3x,g12.3,1x,f7.2,1x,f10.2)"
158 : : character(len=*),parameter :: format_head1="(a,t46,a,t54,a,t65,a,t72,a,t80,a,t96,a,3x,a7,1x,a10)"
159 : : character(len=*),parameter :: format_head2="(a,t46,a,t54,a,t65,a,t72,a,t80,a,t92,a)"
160 : :
161 : : ! *************************************************************************
162 : :
163 : : 01200 format( '- subtotal ',f18.3,f6.1,f14.3,f6.1,31x,f7.2,1x,f10.2)
164 : : 01201 format(/,'- subtotal ',f18.3,f6.1,f14.3,f6.1,31x,f7.2,1x,f10.2)
165 : :
166 : 126 : ount = ab_out
167 : :
168 : 126 : call timab(49,1,tsec)
169 : :
170 : : !The means are computed as integers, for later compatibility
171 : 126 : nbdmean=0; npwmean=0; npwnbdmean=0
172 [ + + ]: 263 : do isppol=1,nsppol
173 [ + + ]: 13624 : do ikpt=1,nkpt
174 : 13361 : npwmean=npwmean+npwtot(ikpt)
175 : 13361 : npwnbdmean=npwnbdmean+npwtot(ikpt)*nband(ikpt+(isppol-1)*nkpt)
176 : 13498 : nbdmean=nbdmean+nband(ikpt+(isppol-1)*nkpt)
177 : : end do
178 : : end do
179 : :
180 : : ! initialize ftime, valgrind complains on line 832 = sum up of all Gflops
181 : 126 : ftimes=zero
182 : :
183 : 126 : npwmean=int(dble(npwmean)/dble(nkpt*nsppol))
184 : 126 : npwnbdmean=int(dble(npwnbdmean)/dble(nkpt*nsppol))
185 : 126 : nbdmean=int(dble(nbdmean)/dble(nkpt*nsppol))
186 : :
187 : : !List of timed subroutines, eventual initialisation of the number of data, and declaration of a slot as being "basic"
188 : : !Channels 1 to 299 are for optdriver=0 (GS), 1 (RF) and 2 (Suscep), at random
189 : : !Channels 300 to 399 are for optdriver=3 (Screening)
190 : : !Channels 400 to 499 are for optdriver=4 (Sigma)
191 : : !Channels 500 to 529 are for optdriver=5 (Nonlinear)
192 : : !Channels 530 to 549 are for various counters
193 : : !Channels 550 to 599 are for PAW
194 : : !Channels 600 to 619 are for Recursion Method
195 : : !Channels 620 to 639 are for DMFT
196 : : !Channels 650 to 699 are for bethe_salpeter code.
197 : : !Channels 700 to 799 are for optdriver=0 (again ...)
198 : : !Channels 800 to 899 are for the detailed analysis of fourwf
199 : : !Channels 900 to 1499 are for optdriver=0 (again ...)
200 : : !Channels 1500 to 1599 are for Hartree-Fock.
201 : : !Channels 1700 to 1747 are for GWLS.
202 : :
203 [ + + ]: 277200 : names(1:TIMER_SIZE)='*** '
204 : : !Basic slots are not overlapping. Their sum should cover most of the code.
205 : : !WARNING : the slots from 1 to 99 should be avoided in the future ... They are hard to track.
206 : 126 : basic(1:TIMER_SIZE)=0
207 : 126 : names(1)='abinit '
208 : 126 : names(5)='ewald ' ; basic(5)=1
209 : 126 : names(6)='setsym ' ; basic(6)=1
210 : 126 : names(9)='fourdp ' ; basic(9)=1 ; ndata(9)=nfft
211 : 126 : names(10)='hartre '
212 : 126 : names(11)='xc:pot/=fourdp '; basic(11)=1; ndata(11)=nfft*nsppol
213 : 126 : names(12)='mkcore '; basic(12)=1
214 : 126 : names(13)='mkresi '
215 : 126 : names(14)='rwwf '; basic(13)=1
216 : 126 : names(15)='pspini '; basic(15)=1
217 : 126 : names(16)='mkffnl '; basic(16)=1
218 : 126 : names(17)='symrhg(no FFT) '; basic(17)=1
219 : 126 : names(19)='inwffil '
220 : :
221 : 126 : names(22)='cgwf '
222 : 126 : names(23)='kpgsph '; basic(23)=1 ! Actually, should not be basic ... too complicated, too much overlap ...
223 : 126 : names(28)='vtowfk '
224 : 126 : names(30)='vtowfk (afterloop) '
225 : 126 : names(31)='vtowfk (1) '; basic(31)=1
226 : 126 : names(37)='stress '; basic(37)=1 ! Actually, should not be basic !
227 : 126 : names(38)='ewald2 (+vdw_dftd) '; basic(38)=1
228 : 126 : names(39)='vtowfk (loop) '
229 : 126 : names(40)='cgwf-O(npw) '
230 : 126 : names(47)='ingeo/symgroup '
231 : 126 : names(48)='communic.MPI '
232 : 126 : names(49)='timana(1) '
233 : 126 : names(50)='timing timab '; basic(50)=1
234 : 126 : names(51)='total timab '
235 : 126 : names(53)='forces-mkcore '
236 : 126 : names(54)='scfcv_core(1) '
237 : 126 : names(55)='stress-mkcore '
238 : 126 : names(57)='rhotov '
239 : 126 : names(59)='energy '
240 : 126 : names(61)='dfpt_scfcv : synchro '
241 : 126 : names(62)='kpgio :synchro '
242 : 126 : names(63)='mkrho :synchro '
243 : 126 : names(64)='strkin:synchro '
244 : 126 : names(65)='forstrnps:synchr '
245 : 126 : names(66)='vtorho:synchro '; basic(66)=1
246 : 126 : names(67)='wfsinp:synchro '
247 : 126 : names(69)='forces '; basic(69)=1 ! Actually, should not be basic !
248 : 126 : names(70)='vtorho(symrhg) '
249 : 126 : names(71)='mkrho :MPIrhor '
250 : 126 : names(72)='mklocl(2) '
251 : 126 : names(73)='status '; basic(73)=1
252 : 126 : names(74)='newocc '
253 : 126 : names(75)='nonlop(apply) '; basic(75)=1; ndata(75)=npwmean*natom
254 : 126 : names(76)='nonlop(forces) '; basic(76)=1; ndata(76)=npwmean*natom
255 : 126 : names(77)='nonlop(forstr) '; basic(77)=1; ndata(77)=npwmean*natom
256 : 126 : names(78)='nonlop(dyfrnl) '
257 : 126 : names(79)='nonlop(ddk) '
258 : 126 : names(80)='etotfor/=forces '
259 : 126 : names(81)='xc:pot ' ! rhotoxc_coll, except the call to hartre.f
260 : 126 : names(82)='xc:fourdp '
261 : 126 : names(83)='newvtr/rho(3):io '; basic(83)=1
262 : 126 : names(84)='suscep '
263 : 126 : names(85)='suscep:MPI '; basic(85)=1
264 : 126 : names(86)='suscep:synchro '; basic(86)=1
265 : 126 : names(87)='suskXX:loop(1) '
266 : 126 : names(88)='suskXX:loop(2) '
267 : 126 : names(89)='suscep:other '
268 : 126 : names(90)='dielmt '; basic(90)=1
269 : 126 : names(91)='setvtr '
270 : 126 : names(92)='setvtr:mkcore '
271 : 126 : names(93)='newvtr '
272 : 126 : names(94)='newrho '
273 : 126 : names(95)='tddft '
274 : 126 : names(96)='dieltcel '; basic(96)=1
275 : 126 : names(97)='nonlop(total) '
276 : :
277 : 126 : names(101)='abinit(init,iofn1,herald) '; basic(101)=1
278 : 126 : names(102)='get_dtsets_pspheads '; basic(102)=1
279 : 126 : names(103)='abinit(outvars) '; basic(103)=1
280 : 126 : names(104)='abinit(chkinp,chkvars) '; basic(104)=1
281 : 126 : names(105)='abinit(after driver) '; basic(105)=1
282 : :
283 : 126 : names(111)='dfpt_nstdy '
284 : 126 : names(112)='dfpt_nstwf '
285 : 126 : names(113)='dfpt_vtowfk(contrib) '; basic(113)=1
286 : 126 : names(118)='dfpt_vtorho (1) '; basic(118)=1
287 : 126 : names(120)='dfpt_scfcv '
288 : 126 : names(121)='dfpt_vtorho '
289 : 126 : names(122)='dfpt_cgwf '
290 : 126 : names(124)='dfpt_vtorho (1)(2) '
291 : 126 : names(125)='dfpt_vtorho (2) '
292 : 126 : names(126)='dfpt_vtorho-kpt loop '; basic(126)=1
293 : 126 : names(127)='dfpt_vtorho (4) '
294 : 126 : names(128)='dfpt_vtowfk '
295 : 126 : names(129)='dfpt_vtorho:MPI '; basic(129)=1
296 : 126 : names(130)='dfpt_vtowfk (3) '; basic(130)=1
297 : 126 : names(131)='dfpt_vtowfk (1) '; basic(131)=1
298 : 126 : names(132)='respfn '
299 : 126 : names(133)='respfn(kpgio) '
300 : 126 : names(134)='respfn(pspini) '
301 : 126 : names(135)='respfn(inwffil) '
302 : 126 : names(136)='respfn(frozen) '
303 : 126 : names(137)='respfn(dfpt_dyxc1+bef.dfpt_lop) '
304 : 126 : names(138)='respfn(after dfpt_loper) '
305 : 126 : names(139)='dfpt_vtowfk (loop) '
306 : 126 : names(140)='dfpt_cgwf-O(npw) '; basic(140)=1
307 : 126 : names(141)='dfpt_loper '
308 : 126 : names(142)='dfpt_loper(kpgio) '
309 : 126 : names(143)='dfpt_loper(getmpw) '
310 : 126 : names(144)='dfpt_loper(inwffil) '
311 : 126 : names(146)='dfpt_loper(outwf) '
312 : 126 : names(147)='dfpt_loper(eig2tot) '
313 : 126 : names(148)='eig2tot '; basic(148)=1
314 : 126 : names(150)='dfpt_nselt/nstdy/nstpaw '
315 : 126 : names(152)='dfpt_scfcv-scprqt '
316 : 126 : names(154)='dfpt_scfcv (1) '; basic(154)=1
317 : 126 : names(157)='dfpt_rhotov '
318 : 126 : names(158)='dfpt_newvtr '
319 : 126 : names(159)='d2frnl '
320 : 126 : names(160)='dfpt_scfcv (6) '
321 : 126 : names(161)='dfpt_nstdy:synchro '; basic(161)=1
322 : 126 : names(166)='dfpt_vtorho:synchro '; basic(166)=1
323 : 126 : names(181)='dfpt_mkvxc '
324 : 126 : names(182)='dfpt_dyxc1 '; basic(182)=1
325 : : !names(184)='dfpt_dyxc1(analysis) '
326 : :
327 : 126 : names(191)='invars2 '
328 : 126 : names(192)='inkpts '
329 : 126 : names(193)='fresid '
330 : :
331 : 126 : names(195)='getgh1c_setup'; basic(195) = 1
332 : 126 : names(196)='getgh1c'; basic(196) = 1
333 : 126 : names(197)='getgh1c%dfpt_cgwf '
334 : 126 : names(198)='getgh1c%dfpt_nstwf '
335 : 126 : names(199)='getgh1c%dfpt_nstpaw '
336 : :
337 : 126 : names(210)='projbd '; basic(210)=1; ndata(210)=npwnbdmean
338 : 126 : names(211)='projbd%cgwf '
339 : 126 : names(212)='projbd%dfpt_cgwf '
340 : 126 : names(213)='projbd%dfpt_nstpaw '
341 : 126 : names(214)='corrmetalwf1%dfpt_vtowfk '
342 : :
343 : 126 : names(220)='nonlop%(other) '
344 : 126 : names(221)='nonlop%getghc '
345 : 126 : names(222)='nonlop%vtowfk '
346 : 126 : names(223)='nonlop%energy '
347 : 126 : names(224)='nonlop%forstrnps '
348 : 126 : names(225)='nonlop%dfpt_nstwf '
349 : 126 : names(226)='nonlop%d2frnl '
350 : 126 : names(227)='nonlop%dfpt_cgwf !2 '
351 : 126 : names(228)='nonlop%dfpt_cgwf !5 '
352 : 126 : names(229)='nonlop%outkss '
353 : 126 : names(230)='nonlop%vtowfk(rhoij) '
354 : 126 : names(231)='nonlop%prep_nonl%vtowfk '
355 : 126 : names(232)='nonlop%prep_nonl%forstrn '
356 : 126 : names(233)='nonlop%appinvovl '
357 : 126 : names(234)='nonlop%prep_nonl%energy '
358 : 126 : names(235)='nonlop%getchc '; basic(235)=1
359 : 126 : names(236)='nonlop%getcsc '; basic(236)=1
360 : 126 : names(237)='nonlop%fock_getghc '; basic(237)=1
361 : :
362 : 126 : names(250)='afterscfloop '
363 : 126 : names(251)='afterscfloop(wvl) '
364 : 126 : names(252)='afterscfloop(pol/magn) '
365 : 126 : names(253)='afterscfloop(grad/lapl) '
366 : 126 : names(254)='afterscfloop(kin.en.den) '
367 : 126 : names(255)='afterscfloop(elf) '
368 : 126 : names(256)='afterscfloop(forstr) '
369 : 126 : names(257)='afterscfloop(final) '
370 : :
371 : 126 : names(270)='rwwf%(other) '
372 : 126 : names(271)='rwwf%vtorho '
373 : 126 : names(272)='rwwf%initwf(GS) '
374 : 126 : names(273)='rwwf%energy '
375 : 126 : names(274)='rwwf%wfsinp(GS) '
376 : 126 : names(275)='rwwf%mkrho '
377 : 126 : names(276)='rwwf%outwf '
378 : 126 : names(277)='rwwf%strnps '
379 : 126 : names(278)='rwwf%tddft '
380 : 126 : names(279)='rwwf%suscep '
381 : 126 : names(281)='rwwf%wfsinp(RF) '
382 : 126 : names(282)='rwwf%mkrho2 '
383 : 126 : names(283)='rwwf%outwf2 '
384 : 126 : names(284)='rwwf%dfpt_dyfnl '
385 : 126 : names(285)='rwwf%dfpt_mkrho '
386 : 126 : names(286)='rwwf%dfpt_nstwf '
387 : 126 : names(287)='rwwf%dfpt_vtorho '
388 : 126 : names(288)='rwwf%dfpt_vtowfk '
389 : 126 : names(289)='rwwf%dfpt_nstdy '
390 : 126 : names(290)='rwwf%initwf(RF) '
391 : 126 : names(291)='rwwf%newkpt(GS) '
392 : 126 : names(292)='rwwf%newkpt(RF) '
393 : :
394 : : ! wfd
395 : 126 : names(300)='wfd_read_wfk '; basic(300) = 1
396 : :
397 : 126 : names(301)='screening '
398 : 126 : names(302)='screening(init1) '
399 : 126 : names(304)='screening(KS=>QP[wfrg]) '
400 : 126 : names(305)='screening(density) '
401 : 126 : names(306)='screening(q-loop,init ) '
402 : 126 : names(307)='screening(cchi0q0) '
403 : 126 : names(308)='screening(cchi0) '
404 : 126 : names(309)='screening(q-loop,end) '
405 : 126 : names(310)='screening(wrt scr files) '
406 : 126 : names(315)='screening(pawin) '
407 : 126 : names(316)='screening(wfs) '
408 : 126 : names(319)='screening(1) '
409 : 126 : names(320)='screening(paw) '; basic(320)=1
410 : 126 : names(321)='screening(2) '
411 : :
412 : 126 : names(331)='cchi0 '
413 : 126 : names(332)='cchi0(rho_tw_g) '
414 : 126 : names(333)='cchi0(assembly) '
415 : :
416 : 126 : names(350)='getghc '
417 : 126 : names(351)='getghc%cgwf '
418 : 126 : names(352)='getghc%dfpt_cgwf '
419 : 126 : names(353)='getghc%mkresi '
420 : 126 : names(354)='getghc%kss_ddiago '
421 : 126 : names(355)='getghc%lobpcgwf '
422 : 126 : names(356)='getghc%prep_getghc '
423 : 126 : names(357)='getghc%other lobpcg '
424 : 126 : names(358)='getghc%update_mmat '
425 : 126 : names(359)='getghc(/=fourXX,nonlop,fock_XX) '; basic(359)=1
426 : 126 : names(360)='getghc(fock_XX) '
427 : :
428 : :
429 : 126 : names(401)='sigma '
430 : 126 : names(402)='sigma(Init1) '
431 : 126 : names(403)='setup_sigma '
432 : 126 : names(404)='sigma(rdkss) '
433 : 126 : names(405)='sigma(Init2) '
434 : 126 : names(406)='sigma(make_vhxc) '
435 : 126 : names(407)='sigma(vHxc_me) '
436 : 126 : names(408)='sigma(hqp_init) '
437 : 126 : names(409)='sigma(getW) '
438 : 126 : names(410)='sigma/=fourdp '; basic(410)=1
439 : :
440 : 126 : names(421)='sigma(calc_sigx_me) '
441 : 126 : names(423)='sigma(cohsex_me) '
442 : 126 : names(424)='sigma(calc_sigc_me) '
443 : 126 : names(425)='sigma(solve_dyson) '
444 : 126 : names(426)='sigma(finalize) '
445 : :
446 : 126 : names(430)='calc_sigx_me '
447 : :
448 : 126 : names(431)='calc_sigc_me '
449 : 126 : names(432)='calc_sigc_me(Init) '
450 : 126 : names(433)='calc_sigc_me(Init spin) '
451 : 126 : names(434)='calc_sigc_me(Init q) '
452 : 126 : names(435)='calc_sigc_me(eet_sigma) '
453 : 126 : names(436)='calc_sigc_me(1) '
454 : 126 : names(437)='calc_sigc_me(rho_tw_g) '
455 : 126 : names(438)='calc_sigc_me(2) '
456 : 126 : names(439)='calc_sigc_me(sigma_me) '
457 : 126 : names(440)='calc_sigc_me(wfd_barrier '
458 : 126 : names(441)='calc_sigc_me(xmpi_sum) '
459 : 126 : names(442)='calc_sigc_me(final ops) '
460 : 126 : names(443)='calc_sigc_me(ac_lrk_appl) '
461 : 126 : names(444)='calc_sigc_me(ac_lrk_diag) '
462 : :
463 : 126 : names(445)='calc_sigc_me(loop) '
464 : :
465 : 126 : names(490)='solve_dyson '
466 : 126 : names(491)='cohsex_me '
467 : :
468 : 126 : names(501)='nonlinear '
469 : 126 : names(502)='pead_nl_loop '
470 : 126 : names(503)='dfptnl_loop '
471 : 126 : names(511)='dfptnl_mv '; basic(511)=1
472 : 126 : names(512)='pead_nl_resp '; basic(512)=1
473 : 126 : names(513)='dfptnl_pert '
474 : 126 : names(514)='rf2_init '
475 : :
476 [ - + ]: 126 : names(520)='lobpcgwf(init) '; if(abs(timopt)==4)basic(520)=1
477 [ - + ]: 126 : names(521)='lobpcgwf(bef.getghc 1 '; if(abs(timopt)==4)basic(521)=1
478 [ - + ]: 126 : names(522)='lobpcgwf(aft.getghc 1 '; if(abs(timopt)==4)basic(522)=1
479 [ - + ]: 126 : names(523)='lobpcgwf(bef.getghc 2 '; if(abs(timopt)==4)basic(523)=1
480 [ - + ]: 126 : names(524)='lobpcgwf(aft.getghc 2 '; if(abs(timopt)==4)basic(524)=1
481 [ - + ]: 126 : names(525)='lobpcgwf(aft.loop) '; if(abs(timopt)==4)basic(525)=1
482 : 126 : names(526)='lobpcgwf(prep-getghc) '
483 : :
484 : 126 : names(530)='lobpcgwf '
485 : 126 : names(532)='xgemm%lobpcg '
486 : 126 : names(533)='xmpi_sum%lobpcg '
487 : 126 : names(535)='xorthon-xtrsm '
488 : 126 : names(536)='xprecon%lobpcg '
489 : 126 : names(537)='prep_fourwf%vtowfk '
490 : 126 : names(538)='prep_fourwf%mkrho '
491 : 126 : names(539)='prep_fourwf '
492 : :
493 : 126 : names(540)='sg_fourwf%fourwf '
494 : 126 : names(541)='back_wf%sg_fourw '
495 : 126 : names(542)='forw_wf%sg_fourw '
496 : 126 : names(543)='alltoall%back_wf '
497 : 126 : names(544)='alltoall%forw_wf '
498 : 126 : names(545)='prep_getghc(alltoall) '
499 : 126 : names(547)='alltoall%prep_fo '
500 : 126 : names(548)='allgather%prep_f '
501 : 126 : names(549)='symrhg%mkrho '
502 : :
503 : 126 : names(550)='forces:pawatm2ff '
504 : 126 : names(551)='stress:pawatm2ff '
505 : 126 : names(552)='setvtr:pawatm2ff '
506 : 126 : names(553)='pawinit '; basic(553)=1
507 : 126 : names(554)='vtowfk:rhoij '
508 : 126 : names(555)='vtorho:pawmkrhoij '; basic(555)=1
509 : 126 : names(556)='pawmkrho '; basic(556)=1
510 : 126 : names(557)='pawmkrho:symrhoij '; basic(557)=1
511 : 126 : names(558)='scfcv_core:mknhat '
512 : 126 : names(559)='nhatgrid '; basic(559)=1
513 : 126 : names(560)='pawdenpot '; basic(560)=1
514 : 126 : names(561)='pawdij/symdij '; basic(561)=1
515 : 126 : names(562)='respfn:pawatm2ff '; basic(562)=1
516 : 126 : names(563)='dfpt_dyfro:pawatm2ff '; basic(563)=1
517 : 126 : names(564)='dfpt_scfcv:dfpt_mknhat '; basic(564)=1
518 : 126 : names(565)='getgsc '
519 : 126 : names(566)='dfpt_nstpaw '; basic(566)=1
520 : 126 : names(567)='pawnstd2e '
521 : 126 : names(568)='stress%strhar '
522 : :
523 : 126 : names(570)='prep_nonlop '
524 : 126 : names(572)='prep_nonlop%vtowfk '
525 : 126 : names(573)='prep_nonlop%forstrnps '
526 : :
527 : 126 : names(575)='prep_bandfft_tabs '; basic(575)=1
528 : :
529 : 126 : names(578)='vtowfk(cprj_rotate) '
530 : 126 : names(581)='prep_nonlop(alltoall) '
531 : 126 : names(583)='vtowfk(pw_orthon) '
532 : 126 : names(584)='xcopy%lobpcg '
533 : 126 : names(585)='vtowfk(subdiago) '
534 : 126 : names(586)='vtowfk(nonlocalpart) '
535 : 126 : names(587)='zheegv-dsyegv '
536 : :
537 : 126 : names(588)='vtowfk(ssdiag) '; basic(588)=1
538 : 126 : names(589)='vtowfk(contrib) '; basic(589)=1
539 : 126 : names(590)='vtowfk(2) '
540 : 126 : names(591)='vtowfk(3) '
541 : :
542 : 126 : names(593)='set_paw_pert '
543 : 126 : names(594)='get_exchange_atom '
544 : 126 : names(595)='pawrhoij_redistribute '
545 : 126 : names(596)='paw_ij_redistribute '
546 : 126 : names(597)='paw_an_redistribute '
547 : 126 : names(598)='pawfgrtab_redistribute '
548 : :
549 : 126 : names(600)='vtorhorec '
550 : 126 : names(601)='Definitions '
551 : 126 : names(602)='getngrec '
552 : 126 : names(603)='green_kernel '
553 : 126 : names(604)='transgrid (c->f) '
554 : 126 : names(605)='recursion (other) '
555 : 126 : names(606)='recursion (den) '
556 : 126 : names(607)='recursion (cuda) '
557 : 126 : names(608)='recursion_nl '
558 : 126 : names(609)='fermisolverec '
559 : 126 : names(610)='entropyrec '
560 : 126 : names(611)='gran_potrec '
561 : 126 : names(612)='nonlocal-energy '
562 : 126 : names(613)='sync. cpu (wait) '
563 : 126 : names(614)='sync. gpu (wait) '
564 : 126 : names(615)='vn_nl_rec '
565 : 126 : names(616)='null recursion '
566 : 126 : names(617)='recursion (other_cuda) '
567 : :
568 : 126 : names(620)='datafordmft '
569 : 126 : names(621)='initialize dmft loop '
570 : 126 : names(622)='impurity_solve '
571 : 126 : names(623)='Dyson '
572 : 126 : names(624)='compute_green '
573 : 126 : names(625)='integrate_green '
574 : 126 : names(626)='dmft-other '
575 : 126 : names(627)='Print/Read self '
576 : 126 : names(628)='saveocc_dmft '
577 : :
578 : 126 : names(630)='prep_getghc '
579 : 126 : names(631)='prep_getghc(before if) '
580 : 126 : names(632)='prep_getghc(bef. getghc) '
581 : 126 : names(633)='prep_getghc(betw getghc) '
582 : 126 : names(634)='prep_getghc(aft. getghc) '
583 : 126 : names(635)='prep_getghc(getghc - 1 ) '
584 : 126 : names(636)='prep_getghc(getghc - 2 ) '
585 : 126 : names(637)='prep_getghc(getghc - 3 ) '
586 : 126 : names(638)='prep_getghc(getghc - 4 ) '
587 : :
588 : 126 : names(640)='driver '
589 : 126 : names(641)='driver(bef. loop dtset) '
590 : 126 : names(642)='driver(bef. select case) '
591 : 126 : names(643)='driver(aft. select case) '
592 : 126 : names(644)='driver(aft. loop dtset) '
593 : :
594 : 126 : names(650)='bse '
595 : 126 : names(651)='bse(Init1) '; basic(651)=1
596 : 126 : names(652)='setup_bse '; basic(652)=1
597 : 126 : names(653)='bse(rdkss) '; basic(653)=1
598 : 126 : names(654)='bse(rdmkeps^-1) '; basic(654)=1
599 : 126 : names(655)='bse(mkrho) '; basic(655)=1
600 : 126 : names(656)='bse(mkexcham) '; basic(656)=1
601 : 126 : names(657)='bse(mkexceps) '; basic(657)=1
602 : 126 : names(658)='bse(wfd_wave_free) '; basic(658)=1
603 : 126 : names(659)='bse(mk_pawhur_t) '; basic(659)=1
604 : 126 : names(660)='bse(exc_diago_driver) '; basic(660)=1
605 : 126 : names(661)='bse(exc_haydock_driver) '; basic(661)=1
606 : :
607 : 126 : names(670)='exc_build_ham '
608 : 126 : names(671)='exc_build_ham(q=0) '
609 : 126 : names(672)='exc_build_ham(block-res) '
610 : 126 : names(673)='exc_build_ham(block-coupling) '
611 : :
612 : 126 : names(680)='exc_build_block '
613 : 126 : names(681)='exc_build_block(init,read) '
614 : 126 : names(682)='exc_build_block(Coulomb) '
615 : 126 : names(683)='exc_build_block(exchange) '
616 : 126 : names(684)='exc_build_block(synchro) '
617 : 126 : names(685)='exc_build_block(write_ha '
618 : 126 : names(686)='exc_build_block(exch.spi '
619 : :
620 : 126 : names(690)='exc_haydock_driver '
621 : 126 : names(691)='exc_haydock_driver(read) '
622 : 126 : names(692)='exc_haydock_driver(prep) '
623 : 126 : names(693)='exc_haydock_driver(wo lf '
624 : 126 : names(694)='exc_haydock_driver(apply) '
625 : 126 : names(695)='exc_haydock_driver(end) '
626 : 126 : names(696)='exc_haydock_driver(inter '
627 : 126 : names(697)='exc_haydock_driver(matmul) '
628 : : !Slots up to 699 are reserved for bethe_salpeter code.
629 : :
630 : 126 : names(701)='qmc_prep_ctqmc '
631 : 126 : names(702)='qmc_prep_ctqmc%(bef. loop) '
632 : 126 : names(703)='qmc_prep_ctqmc%(loop) '
633 : 126 : names(704)='qmc_prep_ctqmc%(loop%solve) '
634 : 126 : names(705)='qmc_prep_ctqmc%(aft. loop) '
635 : :
636 : 126 : names(710)='inwffil '
637 : 126 : names(711)='inwffil(read header) '
638 : 126 : names(712)='inwffil(init params) '
639 : 126 : names(713)='inwffil(prepa wfsinp) '
640 : 126 : names(714)='inwffil(call wfsinp) '
641 : 126 : names(715)='inwffil(after wfsinp) '
642 : 126 : names(716)='inwffil(spin convert) '
643 : 126 : names(717)='inwffil(call newkpt) '
644 : 126 : names(718)='inwffil(excl. calls) '; basic(718)=1
645 : :
646 : 126 : names(720)='wfsinp '
647 : 126 : names(721)='wfsinp(before loop) '
648 : 126 : names(722)='wfsinp(find kpt) '
649 : 126 : names(723)='wfsinp(prepa initwf) '
650 : 126 : names(724)='wfsinp(call initwf) '
651 : 126 : names(725)='wfsinp(transfer of wfs) '
652 : 126 : names(726)='wfsinp(call rwwf) '
653 : 126 : names(727)='wfsinp(wfconv section) '
654 : 126 : names(728)='wfsinp(excl. calls) '; basic(728)=1
655 : :
656 : 126 : names(740)='suscep_stat '
657 : 126 : names(741)='suscep_stat(init) '
658 : 126 : names(742)='suscep_stat(bef. susk-mm '
659 : 126 : names(743)='suscep_stat(susk-mm) '
660 : 126 : names(744)='suscep_stat(extrapol) '
661 : 126 : names(745)='suscep_stat:synchro '
662 : 126 : names(746)='suscep_stat:MPI '
663 : 126 : names(747)='suscep_stat(symmetries) '
664 : :
665 : 126 : names(750)='susk '
666 : 126 : names(751)='susk (init) '; basic(751)=1
667 : 126 : names(752)='susk (loop) '
668 : 126 : names(753)='susk:MPI (1) '; basic(753)=1
669 : 126 : names(754)='susk (accumul.) '
670 : 126 : names(755)='susk:MPI (2) '; basic(755)=1
671 : 126 : names(756)='susk (loop except FFT) '; basic(756)=1
672 : 126 : names(757)='susk (accumul.except FFT '; basic(757)=1
673 : :
674 : 126 : names(760)='suskmm '
675 : 126 : names(761)='suskmm (init) '; basic(761)=1
676 : 126 : names(762)='suskmm (loop : part1) '
677 : 126 : names(763)='suskmm (loop : part2) '
678 : 126 : names(764)='suskmm(loop1 except FFT) '; basic(764)=1
679 : 126 : names(765)='suskmm(loop2 except FFT) '; basic(765)=1
680 : :
681 : 126 : names(770)='initwf '
682 : 126 : names(771)='initwf(before rwwf) '; basic(771)=1
683 : 126 : names(772)='initwf(after rwwf) '; basic(772)=1
684 : :
685 : 126 : names(780)='newkpt '
686 : 126 : names(781)='newkpt(before loop) '
687 : 126 : names(782)='newkpt(before rwwf) '
688 : 126 : names(783)='newkpt(after rwwf) '
689 : 126 : names(784)='newkpt(call wfconv) '
690 : 126 : names(785)='newkpt(finalize loop) '
691 : 126 : names(786)='newkpt(after loop ) '
692 : 126 : names(787)='newkpt:synchro '
693 : 126 : names(788)='newkpt(excl. rwwf ) '; basic(788)=1
694 : :
695 : 126 : names(790)='mkrho '
696 : 126 : names(791)='mkrho%gstate '
697 : 126 : names(792)='mkrho%vtorho '
698 : 126 : names(793)='mkrho%energy '
699 : 126 : names(794)='mkrho%respfn '
700 : 126 : names(795)='mkrho%afterscfloop '
701 : 126 : names(796)='mkrho%scfcv_core '
702 : 126 : names(798)='mkrho/= '; basic(798)=1
703 : 126 : names(799)='mkrho/=+fourwf '
704 : :
705 : 126 : names(801)='fourwf '
706 : 126 : names(802)='fourwf%(pot) '; basic(802)=1; ndata(802)=2*nfft
707 : 126 : names(803)='fourwf%(den) '; basic(803)=1; ndata(803)=nfft
708 : 126 : names(804)='fourwf%(G->r) '; basic(804)=1
709 : 126 : names(805)='fourwf%(r->G) '; basic(805)=1
710 : :
711 : :
712 : 126 : names(840)='fourwf%(other) '
713 : 126 : names(841)='fourwf%getghc '
714 : 126 : names(842)='fourwf%vtowfk '
715 : 126 : names(843)='fourwf%mkrho '
716 : 126 : names(844)='fourwf%dfpt_cgwf '
717 : 126 : names(845)='fourwf%dfpt_accrho%dfpt_vtowfk '
718 : 126 : names(846)='fourwf%mkrho2 '
719 : 126 : names(847)='fourwf%dfpt_mkrho '
720 : 126 : names(850)='fourwf%fock_getghc '
721 : 126 : names(854)='fourwf%tddft '
722 : 126 : names(855)='fourwf%outkss '
723 : 126 : names(856)='fourwf%prep_four '
724 : 126 : names(858)='fourwf%dfpt_accrho%idfpt_nstpaw '
725 : 126 : names(861)='fourwf%suskmm !0 part 1 '
726 : 126 : names(862)='fourwf%suskmm !0 part 2 '
727 : 126 : names(871)='fourwf%suskmm !3 part 1 '
728 : 126 : names(872)='fourwf%suskmm !3 part 2 '
729 : 126 : names(880)='fourwf%cgwf_cprj '
730 : :
731 : 126 : names(901)='newvtr(before selection) '
732 : 126 : names(902)='newvtr(bef. prcref_PMA) '
733 : 126 : names(903)='newvtr(call prcref_PMA) '
734 : 126 : names(904)='newvtr(aft. prcref_PMA) '
735 : 126 : names(905)='newvtr(mean potential) '
736 : :
737 : 126 : names(910)='forstr '
738 : 126 : names(911)='forstr(forstrnps) '
739 : 126 : names(912)='forstr(pawgrnl) '
740 : 126 : names(913)='forstr(forces) '
741 : 126 : names(914)='forstr(stress) '
742 : :
743 : 126 : names(920)='forstrnps '
744 : 126 : names(921)='forstrnps(bef.loop k spin) '
745 : 126 : names(922)='forstrnps(bef.loop band) '
746 : 126 : names(923)='forstrnps(copy) '
747 : 126 : names(924)='forstrnps(nonlop+prep_ba '
748 : 126 : names(925)='forstrnps(kinetic contr) '
749 : 126 : names(926)='forstrnps(fock_getghc) '
750 : 126 : names(927)='forstrnps(aft.loop band block) '
751 : 126 : names(928)='forstrnps(aft.loop k spin) '
752 : :
753 : 126 : names(933)='outkss '
754 : 126 : names(934)='outkss(Gsort+hd) '
755 : 126 : names(935)='outkss(k-loop) '
756 : 126 : names(936)='outkss(diago) '; basic(936)=1
757 : 126 : names(937)='outkss(MPI_exch) '; basic(937)=1
758 : 126 : names(938)='outkss(write) '
759 : :
760 : 126 : names(940)='rhotov '
761 : 126 : names(941)='rhotov(rhotoxc) '
762 : 126 : names(942)='rhotov(dotprod_vn) '
763 : 126 : names(943)='rhotov(PSolver_rhohxc) '
764 : 126 : names(944)='rhotov(rhohxcpositron) '
765 : 126 : names(945)='rhotov(other) '
766 : :
767 : 126 : names(980)='vtorho '
768 : 126 : names(981)='vtorho(bef. spin loop) '
769 : 126 : names(982)='vtorho(bef. kpt loop) '
770 : 126 : names(983)='vtorho(Berry) '
771 : 126 : names(984)='vtorho(bef. vtowfk) '
772 : 126 : names(985)='vtorho(aft. vtowfk) '
773 : 126 : names(986)='vtorho(aft. kpt loop) '
774 : 126 : names(987)='vtorho(leave_test) '; basic(987)=1
775 : 126 : names(988)='vtorho(aft. spin loop) '
776 : 126 : names(989)='vtorho(MPI) '; basic(989)=1
777 : 126 : names(990)='vtorho(newocc) '
778 : 126 : names(991)='vtorho(DMFT) '
779 : 126 : names(992)='vtorho(mkrho 1) '
780 : 126 : names(993)='vtorho(highest occ. eig) '
781 : 126 : names(994)='vtorho(mkrho 2) '
782 : 126 : names(995)='vtorho(tddft) '
783 : 126 : names(996)='vtorho(suscep_stat) '
784 : 126 : names(997)='vtorho(init kpt loop) '
785 : :
786 : 126 : names(1001)='initberry '; basic(1001)=1
787 : 126 : names(1002)='initberry(before listkk) '
788 : 126 : names(1003)='initberry(call listkk) '
789 : 126 : names(1004)='initberry(after listkk) '
790 : 126 : names(1005)='initberry(find neighb.) '
791 : 126 : names(1006)='initberry(build strings) '
792 : 126 : names(1007)='initberry(PAW on-site) '
793 : 126 : names(1008)='initberry(pwind) '
794 : 126 : names(1009)='initberry(MPI stuff) '
795 : :
796 : :
797 : 126 : names(1021)='get_dtsets_pspheads(pspheads) ';
798 : 126 : names(1022)='get_dtsets_pspheads(indefo) ';
799 : 126 : names(1023)='get_dtsets_pspheads(invars2m) ';
800 : :
801 : 126 : names(1091)='listkk '; basic(1091) = 1
802 : :
803 : 126 : names(1150)='outscfcv '
804 : 126 : names(1151)='outscfcv(preparation) '
805 : 126 : names(1152)='outscfcv(mlwfovlp) '
806 : 126 : names(1153)='outscfcv([PAW]prtden) '
807 : 126 : names(1154)='outscfcv(output GSR) '
808 : 126 : names(1155)='outscfcv(output VCLMB) '
809 : 126 : names(1156)='outscfcv(prtelf) '
810 : 126 : names(1157)='outscfcv(prt grden) '
811 : 126 : names(1158)='outscfcv(prt kden) '
812 : 126 : names(1159)='outscfcv(prt lden) '
813 : 126 : names(1160)='outscfcv(prtpot) '
814 : 126 : names(1161)='outscfcv(prtgeo,cif) '
815 : 126 : names(1162)='outscfcv(prtstm) '
816 : 126 : names(1163)='outscfcv(prt 1dm) '
817 : 126 : names(1164)='outscfcv(prtvha,vpsp,... vxc) '
818 : 126 : names(1165)='outscfcv(prtdos) '
819 : 126 : names(1166)='outscfcv(calcdenmagsph) '
820 : 126 : names(1167)='outscfcv(mag_penalty_e) '
821 : 126 : names(1168)='outscfcv(pawprt) '
822 : 126 : names(1169)='outscfcv(optics) '
823 : 126 : names(1170)='outscfcv(pawmkaewf) '
824 : 126 : names(1171)='outscfcv(plowf) '
825 : 126 : names(1172)='outscfcv(gw) '
826 : 126 : names(1173)='outscfcv(poslifetime) '
827 : 126 : names(1174)='outscfcv(posdoppler) '
828 : 126 : names(1175)='outscfcv(outwant) '
829 : 126 : names(1176)='outscfcv(calc_efg) '
830 : 126 : names(1177)='outscfcv(calc_fc) '
831 : 126 : names(1178)='outscfcv(prt_ebands) '
832 : 126 : names(1179)='outscfcv(prt_surf) '
833 : 126 : names(1180)='outscfcv(prtnest) '
834 : 126 : names(1181)='outscfcv(prtdipole) '
835 : 126 : names(1182)='outscfcv(prtblztrp) '
836 : 126 : names(1183)='outscfcv(ebands_interpol_kpath) '
837 : :
838 : : !names(1190)='outscfcv(gsr1) '
839 : : !names(1191)='outscfcv(gsr2) '
840 : : !names(1192)='outscfcv(gsr3) '
841 : : !names(1193)='outscfcv(gsr4) '
842 : : !names(1194)='outscfcv(gsr5) '
843 : : !names(1195)='outscfcv(gsr6) '
844 : :
845 : 126 : names(1200)='gstateimg '
846 : 126 : names(1203)='gstateimg(init) '
847 : 126 : names(1204)='gstateimg(bef. loop img) '
848 : 126 : names(1205)='gstateimg(bef. gstate) '
849 : 126 : names(1206)='gstateimg(aft. gstate) '
850 : 126 : names(1208)='gstateimg(leave_test) '
851 : 126 : names(1209)='gstateimg(aft. loop img) '
852 : 126 : names(1210)='gstateimg(finalize) '
853 : :
854 : 126 : names(1211)='gstate(1) '
855 : 126 : names(1212)='gstate(pspini) '
856 : 126 : names(1213)='gstate(2) '
857 : 126 : names(1214)='gstate(init rhor rhog) '
858 : 126 : names(1215)='gstate(init history) '
859 : 126 : names(1225)='gstate(...scfcv) '
860 : 126 : names(1226)='gstate(prt gap) '
861 : 126 : names(1227)='gstate(prtwf) '
862 : 126 : names(1228)='gstate(clnup1) '
863 : 126 : names(1229)='gstate(prtelfield) '
864 : 126 : names(1230)='gstate(DDB) '
865 : 126 : names(1231)='gstate(clnup2) '
866 : :
867 : 126 : names(1232)='gstate '
868 : :
869 : 126 : names(1260)='fourdp%(other) '
870 : 126 : names(1261)='fourdp%rhotwg%ch '
871 : 126 : names(1262)='fourdp%rhotwg%si '
872 : 126 : names(1263)='fourdp%ckxcldag '
873 : 126 : names(1264)='fourdp%fftwfn%ch '
874 : 126 : names(1265)='fourdp%fftwfn%si '
875 : 126 : names(1266)='fourdp%rec%rho '
876 : 126 : names(1267)='fourdp%rec%ek '
877 : 126 : names(1268)='fourdp%newvtr '
878 : 126 : names(1269)='fourdp%newrho '
879 : 126 : names(1270)='fourdp%fock_getghc '
880 : :
881 : 126 : names(1280)='read_rho '
882 : 126 : names(1281)='interpolate_denpot '
883 : :
884 : 126 : names(1290)='getcprj(all) '
885 : 126 : names(1291)='getcprj%opernla '; basic(1291)=1
886 : 126 : names(1292)='getcprj%opernla_mv '; basic(1292)=1
887 : 126 : names(1293)='getcprj(cgwf_cprj) '
888 : 126 : names(1294)='getcprj(ctocprj) '
889 : 126 : names(1295)='getcprj(vtowfk) '
890 : 126 : names(1299)='getcprj(other) '
891 : :
892 : 126 : names(1300)='cgwf_cprj '
893 : 126 : names(1301)='cgwf_cprj%other '
894 : 126 : names(1302)='pawcprj(zaxpby) '
895 : 126 : names(1303)='pawcprj(projbd) '; basic(1303)=1
896 : 126 : names(1304)='subham(dotprod_g) '; basic(1304)=1
897 : 126 : names(1305)='cgwf_cprj%npw_work '; basic(1305)=1
898 : :
899 : 126 : names(1360)='getcsc(all) '
900 : 126 : names(1361)='getcsc%dotprod_g '; basic(1361)=1
901 : 126 : names(1362)='getcsc%other '
902 : 126 : names(1363)='getcsc(cgwf_cprj) '
903 : 126 : names(1364)='getcsc(subovl) '
904 : :
905 : 126 : names(1370)='getchc '
906 : 126 : names(1371)='getchc%local '; basic(1371)=1
907 : 126 : names(1372)='getchc%kin '; basic(1372)=1
908 : 126 : names(1375)='getchc%other '
909 : :
910 : 126 : names(1440)='scfcv_core '
911 : 126 : names(1441)='scfcv_core(before nstep loop) '
912 : 126 : names(1442)='scfcv_core(ini moved atm inside)'
913 : 126 : names(1443)='scfcv_core(ini fock) '
914 : 126 : names(1444)='scfcv_core(fock wfmixing) '
915 : 126 : names(1445)='scfcv_core(fock_updatecwaveocc) '
916 : 126 : names(1446)='scfcv_core(fock2ACE) '
917 : 126 : names(1447)='scfcv_core(setup_positron) '
918 : 126 : names(1448)='scfcv_core(setvtr) '
919 : 126 : names(1449)='scfcv_core(loop, PAW) '
920 : 126 : names(1450)='scfcv_core-read '
921 : 126 : names(1451)='scfcv_core(vtorho(f)) '
922 : 126 : names(1452)='scfcv_core(etotfor) '
923 : 126 : names(1453)='scfcv-scprqt '; basic(1453)=1
924 : 126 : names(1454)='scfcv_core(qui loop) '
925 : 126 : names(1455)='scfcv_core(mix den - newrho) '
926 : 126 : names(1456)='scfcv_core(Berry) '
927 : 126 : names(1457)='scfcv_core(rhotov) '
928 : 126 : names(1458)='scfcv_core(mix pot) '
929 : 126 : names(1459)='scfcv_core(just after scf) '
930 : 126 : names(1460)='scfcv_core(afterscfloop) '
931 : 126 : names(1461)='scfcv_core(outscfcv) '
932 : 126 : names(1462)='scfcv_core(free) '
933 : :
934 : 126 : names(1501)='fock_init '; basic(1501)=1
935 : 126 : names(1502)='fock_updatecwaveocc '; basic(1502)=1
936 : 126 : names(1503)='fock_updatecwaveocc(MPI) '; ! 100 % nested inside 1502
937 : :
938 : 126 : names(1504)='fock_getghc '; !1504 = 1505 + 1506 + 1507
939 : 126 : names(1505)='fock_getghc(init) '; ! 100 % nested inside 1504
940 : 126 : names(1506)='fock_getghc-kmu_loop '; ! 100 % nested inside 1504, 1506 = 1521+ ... 1528
941 : 126 : names(1507)='fock_getghc(post-k) '; ! 100 % nested inside 1504
942 : 126 : names(1512)='fock_getghc(fourwf) '
943 : 126 : names(1513)='fock_getghc(fourdp) '
944 : 126 : names(1514)='fock_getghc(nonlop) '
945 : 126 : names(1515)='fock_getghc(/=fourXX,nonlop) '; basic(1515)=1 ! ulterior slot for test
946 : :
947 : : !Partitioning of the loop on k points inside fock_getghc (1506)
948 : 126 : names(1521)='fock_getghc(init k loop) '
949 : 126 : names(1522)='fock_getghc(j loop fourwf) '
950 : 126 : names(1523)='fock_getghc(calc_rhor_munu) '
951 : 126 : names(1524)='fock_getghc(calc_rhog_munu) '
952 : 126 : names(1525)='fock_getghc(calc_vloc) '
953 : 126 : names(1526)='fock_getghc(calc_dij_fock_hat) '
954 : 126 : names(1527)='fock_getghc(calc_vlocpsi) '
955 : 126 : names(1528)='fock_getghc(clean k loop) '
956 : :
957 : : !Partitioning in small blocs without fourXX and nonlop. One has to add 1521, 1523, 1527, 1528
958 : 126 : names(1541)='fock_getghc(init wo fourwf) '; !related to 1505
959 : 126 : names(1542)='fock_getghc(j loop wo fourwf) '; !related to 1522
960 : 126 : names(1544)='fock_getghc(calc_rhog_munu wo fo'; !related to 1524
961 : 126 : names(1545)='fock_getghc(calc_vloc wo fourXX)'; !related to 1525
962 : 126 : names(1546)='fock_getghc(calc_dij_fock_hat wo'; !related to 1526
963 : 126 : names(1547)='fock_getghc(post-k wo fourXX+MPI'; !related to 1507
964 : 126 : names(1548)='fock_getghc(post-k xmpi_sum) '; !related to 1507
965 : :
966 : 126 : names(1560)='fock2ACE '
967 : 126 : names(1561)='fock2ACE(init) '; basic(1561)=1
968 : 126 : names(1562)='fock2ACE(main/=fock_getghc) '; basic(1562)=1
969 : 126 : names(1563)='fock2ACE(fock_getghc) '
970 : 126 : names(1565)='fock2ACE(finalize) '; basic(1565)=1
971 : :
972 : 126 : names(1580)='fock_ACE_getghc '; basic(1580)=1
973 : :
974 : : ! Chebfi
975 : 126 : names(1600) = 'chebfi '
976 : 126 : names(1601) = 'chebfi(alltoall) '; basic(1601) = 1
977 : 126 : names(1602) = 'chebfi(appinvovl) '
978 : 126 : names(1603) = 'chebfi(rotation) '
979 : 126 : names(1604) = 'chebfi(subdiago) '
980 : 126 : names(1605) = 'chebfi(subham) '
981 : 126 : names(1606) = 'chebfi(ortho) '
982 : 126 : names(1607) = 'chebfi(getghc) '
983 : 126 : names(1608) = 'chebfi(residuals) '
984 : 126 : names(1609) = 'chebfi(update_eigens) '
985 : 126 : names(1610) = 'chebfi(sync)'
986 : :
987 : 126 : names(1630) = 'chebfi(opernla) '
988 : 126 : names(1631) = 'chebfi(opernlb) '
989 : 126 : names(1632) = 'chebfi(inv_s) '
990 : :
991 : 126 : names(1620) = 'mkinvovl '
992 : 126 : names(1621) = 'mkinvovl(build_d) '
993 : 126 : names(1622) = 'mkinvovl(build_ptp) '
994 : :
995 : 126 : names(1633) = "rmm_diis:build_hij "; basic(1633) = 1
996 : 126 : names(1634) = "rmm_diis:band_opt "; basic(1634) = 1
997 : :
998 : : ! lobpcg2
999 : 126 : names(1640) = 'lobpcgwf2 ';
1000 : 126 : names(1641) = 'lobpcg_Bortho(X) '
1001 : 126 : names(1642) = 'lobpcg_Bortho(XW) '
1002 : 126 : names(1643) = 'lobpcg_Bortho(XWP) '
1003 : 126 : names(1644) = 'lobpcg_Bortho(Xall) '
1004 : 126 : names(1645) = 'lobpcg_RR(X) '
1005 : 126 : names(1646) = 'lobpcg_RR(XW) '
1006 : 126 : names(1647) = 'lobpcg_RR(XWP) '
1007 : 126 : names(1648) = 'lobpcg_RR(Xall) '
1008 : 126 : names(1649) = 'lobpcg_transpose '
1009 : :
1010 : 126 : names(1651) = 'lobpcg_init '
1011 : 126 : names(1652) = 'lobpcg_free '
1012 : 126 : names(1653) = 'lobpcg_copy '
1013 : 126 : names(1654) = 'lobpcg_getAX_BX '
1014 : 126 : names(1655) = 'lobpcg_orthoWrtPrev '
1015 : 126 : names(1656) = 'lobpcg_nbdbuf '
1016 : 126 : names(1657) = 'lobpcg_enl '
1017 : 126 : names(1658) = 'lobpcg_maxResidu '
1018 : 126 : names(1659) = 'lobpcg_run@getAX_BX '
1019 : 126 : names(1660) = 'lobpcg_pcond '
1020 : 126 : names(1661) = 'lobpcg(other) '
1021 : :
1022 : : ! xg_t (1st part)
1023 : 126 : names(1662) = 'xgTransposer_transpose@ColsRows'
1024 : 126 : names(1663) = 'xgTransposer_transpose@Linalg '
1025 : 126 : names(1664) = 'xgTransposer_*@all2all '
1026 : 126 : names(1665) = 'xgTransposer_*@gatherv '
1027 : 126 : names(1666) = 'xgTransposer_@reorganize '
1028 : 126 : names(1667) = 'xgTransposer_init ';basic(1667)=1
1029 : 126 : names(1668) = 'xgTransposer_free ';basic(1668)=1
1030 : 126 : names(1669) = 'xgTransposer_transpose ';basic(1669)=1
1031 : :
1032 : 126 : names(1670) = 'xgBlock_gemm(blas) ';basic(1670)=1
1033 : 126 : names(1671) = 'xgBlock_trsm ';basic(1671)=1
1034 : 126 : names(1672) = 'xgBlock_potrf ';basic(1672)=1
1035 : 126 : names(1673) = 'xgBlock_zero ';basic(1673)=1
1036 : 126 : names(1674) = 'xgBlock_zero_im_g0 ';basic(1674)=1
1037 : 126 : names(1675) = 'xgBlock_heev ';basic(1675)=1
1038 : 126 : names(1676) = 'xgBlock_heevd ';basic(1676)=1
1039 : 126 : names(1677) = 'xgBlock_hpev ';basic(1677)=1
1040 : 126 : names(1678) = 'xgBlock_hpevd ';basic(1678)=1
1041 : 126 : names(1679) = 'xgBlock_hegv ';basic(1679)=1
1042 : 126 : names(1680) = 'xgBlock_hegvx ';basic(1680)=1
1043 : 126 : names(1681) = 'xgBlock_hegvd ';basic(1681)=1
1044 : 126 : names(1682) = 'xgBlock_hpgv ';basic(1682)=1
1045 : 126 : names(1683) = 'xgBlock_hpgvx ';basic(1683)=1
1046 : 126 : names(1684) = 'xgBlock_hpgvd ';basic(1684)=1
1047 : 126 : names(1685) = 'xgBlock_copy ';basic(1685)=1
1048 : 126 : names(1686) = 'xgBlock_cshift ';basic(1686)=1
1049 : 126 : names(1687) = 'xgBlock_pack ';basic(1687)=1
1050 : 126 : names(1688) = 'xgBlock_gemm(mpi) ';basic(1688)=1
1051 : 126 : names(1689) = 'xgBlock_apply_diag ';basic(1689)=1
1052 : :
1053 : 126 : names(1690) = 'xgScalapack_init '
1054 : 126 : names(1691) = 'xgScalapack_free '
1055 : 126 : names(1692) = 'xgScalapack_heev '
1056 : 126 : names(1693) = 'xgScalapack_hegv '
1057 : 126 : names(1694) = 'xgScalapack_scatter '
1058 : :
1059 : : ! GWLS GW code
1060 : 126 : names(1701)='gwls_sternheimer ';basic(1701)=1
1061 : 126 : names(1702)='exchange and correlation '
1062 : 126 : names(1703)='correl. shift lanczos '
1063 : 126 : names(1704)='Dielectric matrix '
1064 : 126 : names(1705)='Model Dielectric matrix '
1065 : 126 : names(1706)='setup proj. sternheimer '
1066 : 126 : names(1707)='compute proj.sternheimer '
1067 : 126 : names(1708)='eps^{-1} - eps_m^{-1} '
1068 : 126 : names(1709)='eps_m^{-1} - 1 '
1069 : 126 : names(1710)='Modify Lbasis Coulomb '
1070 : 126 : names(1711)='Diag eps^{-1}-eps_m^{-1} '
1071 : 126 : names(1712)='exact AT shift lanczos '
1072 : 126 : names(1713)='model AT shift lanczos '
1073 : 126 : names(1714)='exact BT shift lanczos '
1074 : 126 : names(1715)='model BT shift lanczos '
1075 : 126 : names(1716)='compute poles '
1076 : 126 : names(1717)='Sigma_A Lanczos '
1077 : 126 : names(1718)='Sigma_B num. integrands '
1078 : :
1079 : :
1080 : 126 : names(1719)='gwls: extract_QR ';basic(1719)=1
1081 : 126 : names(1720)='gwls: extract_SVD ';basic(1720)=1
1082 : :
1083 : : ! these entry are not in a logical order.
1084 : 126 : names(1721)='gwls: gstateimg '
1085 : 126 : names(1722)='prepareValenceWfk '
1086 : :
1087 : 126 : names(1723)='gwls: sqmr ';basic(1723)=1
1088 : :
1089 : :
1090 : 126 : names(1724)='gwls: Pk ';basic(1724)=1
1091 : 126 : names(1725)='Pk- allocating '
1092 : 126 : names(1726)='Pk- wfk to denpot '
1093 : 126 : names(1727)='Pk- wfk product with val '
1094 : 126 : names(1728)='Pk- pc_k '
1095 : 126 : names(1729)='Pk- sqmr case 1 '
1096 : 126 : names(1730)='Pk- sqmr case 2 '
1097 : 126 : names(1731)='Pk- sqmr case 3 '
1098 : 126 : names(1732)='Pk- qmr case 4 '
1099 : 126 : names(1733)='Pk- apply H (case 2) '
1100 : :
1101 : :
1102 : 126 : names(1734)='gwls: Pk_model ';basic(1734)=1
1103 : 126 : names(1735)='Pk_model- allocating '
1104 : 126 : names(1736)='Pk_model- wfk to denpot '
1105 : 126 : names(1737)='Pk_model- wfk x val '
1106 : 126 : names(1738)='Pk_model- pc_k '
1107 : 126 : names(1739)='Pk_model- act with Y '
1108 : 126 : names(1740)='Pk_model- add contrib. '
1109 : :
1110 : :
1111 : 126 : names(1741)='gwls: calc eps_m^-1(w)-1 ';basic(1741)=1
1112 : 126 : names(1742)='Allocating '
1113 : 126 : names(1743)='modifying Lanczos basis '
1114 : 126 : names(1744)='calc <mod_L_1|Y|mod_L_2> '
1115 : 126 : names(1745)=' make array hermitian '
1116 : 126 : names(1746)=' xsum_mpi '
1117 : 126 : names(1747)='inv eps_m and subtract 1 '
1118 : :
1119 : : ! IFC object
1120 : 126 : names(1748)='ifc_fourq'; basic(1748) = 1
1121 : : !names(1749)='ewald9'; basic(1749) = 1
1122 : : !names(1750)='gtdyn9'; basic(1750) = 1
1123 : : !names(1751)='dfpt_phfrq'; basic(1751) = 1
1124 : :
1125 : : ! chebfi2
1126 : 126 : names(1750) = 'chebfiwf2 '
1127 : 126 : names(1751) = 'chebfi2_init '
1128 : 126 : names(1752) = 'chebfi2_free '
1129 : 126 : names(1753) = 'chebfi2_enl '
1130 : 126 : names(1754) = 'chebfi2_getAX_BX '
1131 : 126 : names(1755) = 'chebfi2_invovl '
1132 : 126 : names(1756) = 'chebfi2_residu '
1133 : 126 : names(1757) = 'chebfi2_RayleighRitz '
1134 : 126 : names(1758) = 'chebfi2_transpose '
1135 : 126 : names(1759) = 'chebfi2_RR_q '
1136 : 126 : names(1760) = 'chebfi2_postinvovl '
1137 : 126 : names(1761) = 'chebfi2_swap '
1138 : 126 : names(1762) = 'chebfi2_amp_f '
1139 : 126 : names(1763) = 'chebfi2_oracle '
1140 : 126 : names(1764) = 'chebfi2_barrier '
1141 : 126 : names(1765) = 'chebfi2_copy '
1142 : :
1143 : 126 : names(1779) = 'chebfi2(other) '
1144 : :
1145 : 126 : names(1780)='ctgk_rotate'; basic(1780) = 1
1146 : :
1147 : 126 : names(1795) = 'RayleighRitz@diago '; ndata(1795) = nbdmean*nbdmean
1148 : 126 : names(1796) = 'RayleighRitz@gemm_1 '
1149 : 126 : names(1797) = 'RayleighRitz@gemm_2 '
1150 : :
1151 : : ! DVDB object
1152 : 126 : names(1800)='dvdb_new '; basic(1800) = 1
1153 : 126 : names(1801)='dvdb_qcache_read '; basic(1801) = 1
1154 : 126 : names(1802)='dvdb_readsym_qbz '; basic(1802) = 1
1155 : 126 : names(1803)='dvdb_rotate_fqg '; basic(1803) = 1
1156 : 126 : names(1804)='v1phq_rotate '; basic(1804) = 1
1157 : 126 : names(1805)='dvdb_readsym_allv1 '; basic(1805) = 1
1158 : 126 : names(1806)='dvdb_collect_v1_3natom '; basic(1806) = 1
1159 : 126 : names(1807)='dvdb_qcache_update '; basic(1807) = 1
1160 : 126 : names(1808)='dvdb_ftqcache_build '; basic(1808) = 1
1161 : 126 : names(1809)='dvdb_get_ftqbz '; basic(1809) = 1
1162 : :
1163 : : ! SIGEPH
1164 : : !names(1900)='sigph_pre_qloop '; basic(1900) = 1
1165 : : !names(1901)='sigph_qloop_preamble '; basic(1901) = 1
1166 : : !names(1902)='sigph_qloop_cg_and_h1 '; basic(1902) = 1
1167 : 126 : names(1903)='sigph_bsum '; basic(1903) = 1
1168 : 126 : names(1904)='sigph_bsum_1 '; basic(1904) = 1
1169 : 126 : names(1905)='sigph_bsum_2 '; basic(1905) = 1
1170 : 126 : names(1906)='sigph_bsum_3 '; basic(1906) = 1
1171 : 126 : names(1907)='sigph_bsum_4 '; basic(1907) = 1
1172 : 126 : names(1908)='sigph_prep_stern '; basic(1908) = 1
1173 : 126 : names(1909)='sigph_stern '; basic(1909) = 1
1174 : 126 : names(1910)='sigph_post_stern '; basic(1910) = 1
1175 : :
1176 : : ! GWR code
1177 : 126 : names(1919)='ugb_from_diago '; basic(1919) = 1
1178 : 126 : names(1920)='gwr_init '; basic(1920) = 1
1179 : 126 : names(1921)='gwr_read_ugb_from_wfk '; basic(1921) = 1
1180 : 126 : names(1922)='gwr_build_green '; basic(1922) = 1
1181 : 126 : names(1923)='gwr_build_tchi '; basic(1923) = 1
1182 : 126 : names(1924)='gwr_build_wc '; basic(1924) = 1
1183 : 126 : names(1925)='gwr_build_sigmac '; basic(1925) = 1
1184 : 126 : names(1926)='gwr_build_sigxme '; basic(1926) = 1
1185 : 126 : names(1927)='gwr_build_head_wings '; basic(1927) = 1
1186 : 126 : names(1928)='gwr_rpa_energy '; basic(1928) = 1
1187 : : !names(1929)='gwr_gk_to_scbox '; basic(1929) = 1
1188 : : !names(1930)='gwr_wcq_to_scbox '; basic(1930) = 1
1189 : : !names(1931)='gsph2box '; basic(1931) = 1
1190 : :
1191 : : ! GWPT code
1192 : 126 : names(1940)='ik_preamble '; basic(1940) = 1
1193 : 126 : names(1941)='ip_preamble '; basic(1941) = 1
1194 : 126 : names(1942)='ibsum_preamble1 '; basic(1942) = 1
1195 : 126 : names(1943)='ibsum_preamble2 '; basic(1943) = 1
1196 : 126 : names(1944)='pert_loop1 '; basic(1944) = 1
1197 : 126 : names(1945)='pert_loop2 '; basic(1945) = 1
1198 : :
1199 : : ! xg_t (2nd part)
1200 : 126 : names(2000)='xgBlock_scale '; basic(2000) = 1
1201 : 126 : names(2001)='xgBlock_colwiseDotProduct '; basic(2001) = 1
1202 : 126 : names(2002)='xgBlock_colwiseMul '; basic(2002) = 1
1203 : 126 : names(2003)='xgBlock_colwiseCymax '; basic(2003) = 1
1204 : 126 : names(2004)='xgBlock_colwiseDivision '; basic(2004) = 1
1205 : 126 : names(2005)='xgBlock_colwiseNorm2 '; basic(2005) = 1
1206 : 126 : names(2006)='xgBlock_saxpy '; basic(2006) = 1
1207 : 126 : names(2007)='xgBlock_minmax '; basic(2007) = 1
1208 : 126 : names(2008)='xgBlock_partialcopy '; basic(2008) = 1
1209 : 126 : names(2009)='xgBlock_gemmcyclic '! not basic, contain partialcopy
1210 : 126 : names(2010)='xgBlock_yxmax '; basic(2010) = 1
1211 : 126 : names(2011)='xgBlock_ymax '; basic(2011) = 1
1212 : 126 : names(2012)='xgBlock_add '; basic(2012) = 1
1213 : 126 : names(2013)='xgBlock_add_diag '; basic(2013) = 1
1214 : 126 : names(2014)='xgBlock_invert '; basic(2014) = 1
1215 : 126 : names(2015)='xgBlock_invert_sy '; basic(2015) = 1
1216 : 126 : names(2016)='xgBlock_dot '; basic(2016) = 1
1217 : :
1218 : : ! lobpcg2_cprj
1219 : 126 : names(2030) = 'lobpcgwf2_cprj ';
1220 : 126 : names(2031) = 'lobpcg_Bortho(X) '
1221 : 126 : names(2032) = 'lobpcg_Bortho(XW) '
1222 : 126 : names(2033) = 'lobpcg_Bortho(XWP) '
1223 : 126 : names(2034) = 'lobpcg_Bortho(Xall) '
1224 : 126 : names(2035) = 'lobpcg_RR(X) '
1225 : 126 : names(2036) = 'lobpcg_RR(XW) '
1226 : 126 : names(2037) = 'lobpcg_RR(XWP) '
1227 : 126 : names(2038) = 'lobpcg_RR(Xall) '
1228 : 126 : names(2039) = 'lobpcg_transpose '
1229 : 126 : names(2040) = 'lobpcg_init '
1230 : 126 : names(2041) = 'lobpcg_free '
1231 : 126 : names(2042) = 'lobpcg_copy '
1232 : 126 : names(2043) = 'lobpcg_cprj '
1233 : 126 : names(2044) = 'lobpcg_orthoWrtPrev '
1234 : 126 : names(2045) = 'lobpcg_nbdbuf '
1235 : 126 : names(2046) = 'lobpcg_maxResidu '
1236 : 126 : names(2047) = 'lobpcg_pcond '
1237 : 126 : names(2048) = 'lobpcg_AX(kin) '
1238 : 126 : names(2049) = 'lobpcg_AX(loc) '
1239 : 126 : names(2050) = 'lobpcg_AX(nl) '
1240 : 126 : names(2051) = 'lobpcg_enl '
1241 : 126 : names(2059) = 'lobpcg(other) '
1242 : :
1243 : : ! chebfi2_cprj
1244 : 126 : names(2060) = 'chebfiwf2_cprj '
1245 : 126 : names(2061) = 'chebfi2_init '
1246 : 126 : names(2062) = 'chebfi2_free '
1247 : 126 : names(2063) = 'chebfi2_cprj '
1248 : 126 : names(2065) = 'chebfi2_invovl '
1249 : 126 : names(2066) = 'chebfi2_residu '
1250 : 126 : names(2067) = 'chebfi2_RayleighRitz '
1251 : 126 : names(2068) = 'chebfi2_transpose '
1252 : 126 : names(2069) = 'chebfi2_RR_q '
1253 : 126 : names(2070) = 'chebfi2_postinvovl '
1254 : 126 : names(2071) = 'chebfi2_swap '
1255 : 126 : names(2072) = 'chebfi2_amp_f '
1256 : 126 : names(2073) = 'chebfi2_oracle '
1257 : 126 : names(2074) = 'chebfi2_barrier '
1258 : 126 : names(2075) = 'chebfi2_copy '
1259 : 126 : names(2076) = 'chebfi2_AX(kin) '
1260 : 126 : names(2077) = 'chebfi2_AX(loc) '
1261 : 126 : names(2078) = 'chebfi2_AX(nl) '
1262 : 126 : names(2079) = 'chebfi2_enl '
1263 : 126 : names(2080) = 'chebfi2(other) '
1264 : :
1265 : : ! xg_nonlop
1266 : 126 : names(2100)='xg_nonlop '
1267 : 126 : names(2101)='xg_nonlop%getcprj '
1268 : 126 : names(2102)='xg_nonlop%apply_prj '
1269 : 126 : names(2103)='xg_nonlop%apply_Aij '; basic(2103)=1
1270 : 126 : names(2104)='xg_nonlop%mult_cprj '
1271 : 126 : names(2105)='xg_nonlop%make_k '
1272 : 126 : names(2106)='xg_nonlop%make_Dij '; basic(2106)=1
1273 : 126 : names(2107)='xg_nonlop%make_Sij '
1274 : 126 : names(2108)='xg_nonlop%make_ekb '; basic(2108)=1
1275 : 126 : names(2109)='xg_nonlop%apply_diag '; basic(2109)=1
1276 : 126 : names(2110)='xg_nonlop%init '; basic(2110)=1
1277 : :
1278 : 126 : names(2120)='xg_nonlop%getXSX '
1279 : 126 : names(2121)='xg_nonlop%getXHX '
1280 : 126 : names(2122)='xg_nonlop%getHmeSX '
1281 : 126 : names(2123)='xg_nonlop%inv_AXeB '
1282 : :
1283 : 126 : names(2130)='xg_nl%getcprj(gemm) '
1284 : 126 : names(2131)='xg_nl%getcprj(copy) '
1285 : 126 : names(2132)='xg_nl%getcprj(mpi) '; basic(2132)=1
1286 : 126 : names(2133)='xg_nl%getcprj(proj-otf) '; basic(2133)=1
1287 : 126 : names(2134)='xg_nl%getcprj(other) '; basic(2134)=1
1288 : :
1289 : 126 : names(2135)='xg_nl%apply_prj(gemm) '
1290 : 126 : names(2136)='xg_nl%apply_prj(copy) '
1291 : 126 : names(2137)='xg_nl%apply_prj(mpi) '; basic(2137)=1
1292 : 126 : names(2138)='xg_nl%apply_prj(proj-otf) '; basic(2138)=1
1293 : 126 : names(2139)='xg_nl%apply_prj(other) '; basic(2139)=1
1294 : :
1295 : 126 : names(2140)='xg_nl%multcprj(gemm) '
1296 : 126 : names(2141)='xg_nl%multcprj(copy) '
1297 : 126 : names(2142)='xg_nl%multcprj(mpi) '; basic(2142)=1
1298 : 126 : names(2143)='xg_nl%multcprj(other) '; basic(2143)=1
1299 : :
1300 : 126 : names(2150)='xg_nonlop_forces_stress '
1301 : 126 : names(2151)='xg_nl_fst%start '
1302 : 126 : names(2152)='xg_nl_fst%cprj_deriv_f '
1303 : 126 : names(2153)='xg_nl_fst%cprj_deriv_str '
1304 : 126 : names(2154)='xg_nl_fst%mult_cprj_f '
1305 : 126 : names(2155)='xg_nl_fst%mult_cprj_str '
1306 : 126 : names(2156)='xg_nl_fst%work_str '
1307 : 126 : names(2159)='xg_nl_fst(other) '
1308 : :
1309 : : ! spectrum slicing routines
1310 : : ! TODO IML timers become negative if we mix chebfi and slice must separate
1311 : 126 : names(2160) = 'slicewf '
1312 : 126 : names(2161) = 'slice_sched '
1313 : 126 : names(2162) = 'slice1_diago '
1314 : 126 : names(2163) = 'slice2_diago '
1315 : 126 : names(2164) = 'slice3_diago '
1316 : 126 : names(2165) = 'sliceX_diago '
1317 : 126 : names(2166) = 'slice(other) '
1318 : 126 : names(2167) = 'slicingLanczos '
1319 : 126 : names(2168) = 'slicingTrace '
1320 : :
1321 : : ! slice_cprj
1322 : 126 : names(2170) = 'slicewf_cprj '
1323 : 126 : names(2171) = 'slice_init '
1324 : 126 : names(2172) = 'slice_free '
1325 : 126 : names(2173) = 'slice_cprj '
1326 : 126 : names(2174) = 'slice_invovl '
1327 : 126 : names(2175) = 'slice_residu '
1328 : 126 : names(2176) = 'slice_RayleighRitz '
1329 : 126 : names(2177) = 'slice_transpose '
1330 : 126 : names(2178) = 'slice_RR_q '
1331 : 126 : names(2179) = 'slice_postinvovl '
1332 : 126 : names(2180) = 'slice_swap '
1333 : 126 : names(2181) = 'slice_amp_f '
1334 : 126 : names(2182) = 'slice_barrier '
1335 : 126 : names(2183) = 'slice_copy '
1336 : 126 : names(2184) = 'slice_AX(kin) '
1337 : 126 : names(2185) = 'slice_AX(loc) '
1338 : 126 : names(2186) = 'slice_AX(nl) '
1339 : 126 : names(2187) = 'slice_enl '
1340 : 126 : names(2188) = 'slice_ortho '
1341 : 126 : names(2189) = 'slice(other) '
1342 : :
1343 : 126 : names(2190) = 'slice1(filter) '
1344 : 126 : names(2191) = 'slice1(RR) '
1345 : 126 : names(2192) = 'slice1(probe) '
1346 : 126 : names(2193) = 'slice2(filter) '
1347 : 126 : names(2194) = 'slice2(RR) '
1348 : 126 : names(2195) = 'slice2(probe) '
1349 : :
1350 : : ! TIMER_SIZE is 2199. See m_time
1351 : 126 : names(TIMER_SIZE)='(other) ' ! This is a generic slot, to compute a complement
1352 : :
1353 : : !==================================================================================
1354 : :
1355 : 126 : spaceworld= mpi_enreg%comm_world
1356 : 126 : nproc = mpi_enreg%nproc
1357 : 126 : me = mpi_enreg%me
1358 : : nthreads = 1
1359 : 126 : nthreads = xomp_get_num_threads(open_parallel=.true.)
1360 [ - + ]: 126 : if(nthreads<1) nthreads=1
1361 : :
1362 : 126 : call timab(49,2,tsec)
1363 : :
1364 [ + + - + : 126 : if(abs(timopt)==1 .or. timopt==-3 .or. timopt==-4)then ! Time the timing routine (precision should be better than 3%)
- + ]
1365 : : ltimab=1
1366 : : utimab=1000
1367 : : maxii=20
1368 : : ! maxii=1 ! Uncomment this line if no timer is provided in timein.f
1369 [ + - ]: 571 : do ii=1,20
1370 : :
1371 : 571 : call timab(50,1,tsec)
1372 [ + + ]: 7783812 : do itimab=ltimab,utimab
1373 : : ! The channel 51 is here used as a dummy channel
1374 : 7783241 : call timab(51,1,tsec)
1375 : 7783812 : call timab(51,2,tsec)
1376 : : end do
1377 : 571 : call timab(50,2,tsec)
1378 : 571 : call time_accu(50,return_ncount,tsec, lflops, ftsec)
1379 : : ! Exit the timing loop if the CPU time is bigger than 0.10 second
1380 : : ! of if the number of calls is too large.
1381 : : ! Since the accuracy of the timing is expected to be better than 0.01 sec,
1382 : : ! gives about 10% accuracy
1383 [ + + ]: 571 : if(tsec(1)>0.10_dp)then
1384 : : exit
1385 : : else
1386 : 530 : ltimab=utimab+1
1387 : : ! Increase the number of timab calls in a block.
1388 : : ! This small factor of increase allows to have less than
1389 : : ! 0.15 second for this testing
1390 : 530 : utimab=(3*utimab)/2
1391 : : end if
1392 : : end do
1393 : : ! Get the time per combined call timab(*,1,tsec) + timab(*,2,tsec)
1394 : 41 : timab_cpu=tsec(1)/utimab
1395 : 41 : timab_wall=tsec(2)/utimab
1396 [ + + + + : 41 : if(timopt<0 .and. me==0 .and. timopt/=-2)then
+ - ]
1397 : 25 : write(ount,*)
1398 : 25 : write(ount,*)'Test the timer : '
1399 : 25 : write(ount,*)' a combined call timab(*,1,tsec) + timab(*,2,tsec) is '
1400 : 25 : write(ount, '(a,es14.4,a,es14.4,a)' )'- CPU time =',timab_cpu,' sec, Wall time =',timab_wall,' sec'
1401 : : end if
1402 : : else
1403 : 85 : timab_cpu=zero; timab_wall=zero
1404 : : end if
1405 : :
1406 : : !Eventually reenable the timab routine
1407 : 126 : call timab(1,5,tsec)
1408 : :
1409 : : !Get overall elapsed cpu and wall clock time
1410 : 126 : call timab(1,2,tsec)
1411 : 126 : call time_accu(1,return_ncount,tsec,lflops,ftsec)
1412 : 126 : ncount(1)=return_ncount
1413 : :
1414 : : !Sum over all procs
1415 : 126 : my_tsec(:)=tsec(:)
1416 : 126 : call xmpi_sum(my_tsec,tsec,2,spaceworld,ierr)
1417 : :
1418 : : !Only the world master writes
1419 [ + + ]: 126 : if (me==0) then
1420 : 63 : write(ount,'(/,a,f13.1,f12.2,f11.3)')'- Total cpu time (s,m,h):',tsec(1),tsec(1)/60._dp,tsec(1)/3600._dp
1421 : 63 : write(ount,'(a,f13.1,f12.2,f11.3)') '- Total wall clock time (s,m,h):',tsec(2),tsec(2)/60._dp,tsec(2)/3600._dp
1422 : : end if
1423 : :
1424 : : !Get separate time reports from all timed sections
1425 : 126 : totcount=0
1426 [ + + ]: 277200 : do itim=1,TIMER_SIZE
1427 : 277074 : call time_accu(itim,return_ncount,times(:,itim),nflops(itim),ftimes(:,itim))
1428 : 277074 : ncount(itim)=return_ncount
1429 : 277200 : totcount=totcount+return_ncount
1430 : : end do
1431 : :
1432 : : !Estimate additional timings.
1433 : :
1434 : : !Estimate the values associated with timab, put it in channel 51
1435 : 126 : ncount(51)=totcount
1436 : 126 : times(1,51)=timab_cpu*totcount
1437 : 126 : times(2,51)=timab_wall*totcount
1438 : :
1439 : : !Gather the different parts of selected time slots
1440 : : !Or, alternatively, deduce the value of the complement of some time slots.
1441 : : !This loop is finished when the default case is hit (see below)
1442 [ + + ]: 277200 : do ii=1,TIMER_SIZE
1443 : :
1444 : 277074 : tslots(:)=0
1445 : :
1446 : : ! List first the time slot in which the result will be accumulated.
1447 : : ! If this number is negative, the positive value will be used for the time slot, but the ncount will be set to -1 .
1448 : : ! Then, list the time slots whose value will be either accumulate or subtracted. The latter is obtained by
1449 : : ! entering a minus sign in front of the time slot number ...
1450 : : ! If a negative number is present in the list, while the accumulated time slot is positive,
1451 : : ! then the number of counts will be set to the value of the first routine to be accumulated.
1452 : : select case(ii)
1453 : : ! Gather the different parts of nonlop (SHOULD BE REEXAMINED !)
1454 : : case(1)
1455 [ + + ]: 882 : tslots(:6)=(/75, 221,223,229,233,237/)
1456 : : case(2)
1457 [ + + ]: 630 : tslots(:4)=(/76, 222,225,227/)
1458 : : case(3)
1459 [ + + ]: 378 : tslots(:2)=(/77, 224/)
1460 : : case(4)
1461 [ + + ]: 378 : tslots(:2)=(/78, 226/)
1462 : : case(5)
1463 [ + + ]: 378 : tslots(:2)=(/79, 228/)
1464 : : case(6)
1465 : : ! Gather the different parts of selected time channels
1466 [ + + ]: 1386 : tslots(:10)=(/97, 75,76,77,78,79,220,230,231,232/)
1467 : : case(7)
1468 : : ! Gather the different parts of fourwf (NOTE : should attribute the channel 840 to one of the 4 modes !!!)
1469 [ + + ]: 504 : tslots(:3)=(/802, 841,844/)
1470 : : case(8)
1471 [ + + ]: 630 : tslots(:4)=(/803, 842,843,846/)
1472 : : case(9)
1473 [ + + ]: 1512 : tslots(:11)=(/804, 845,847,848,850,854,858,859,861,862,880/)
1474 : : case(10)
1475 [ + + ]: 882 : tslots(:6)=(/805, 849,851,857,871,872/)
1476 : : case(11)
1477 : : ! In the following, the part coming from the prep_fourwf interface is added to the total.
1478 [ + + ]: 1008 : tslots(:7)=(/801, 802,803,804,805,840,856/)
1479 : : case(13)
1480 : : ! Gather the different parts of prep_fourwf
1481 [ + + ]: 504 : tslots(:3)=(/539, 537,538/)
1482 : : case(14)
1483 : : ! Gather the different parts of fourdp
1484 [ + + ]: 1638 : tslots(:12)=(/9, 1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270/)
1485 : : case(15)
1486 : : ! Gather the different parts of getghc
1487 [ + + ]: 1260 : tslots(:9)=(/350,351,352,353,354,355,356,357,358/)
1488 : : case(16)
1489 : : ! Gather the different parts of projbd
1490 [ + + ]: 504 : tslots(:3)=(/210, 211,212/)
1491 : : case(17)
1492 : : ! Gather the different parts of rwwf (wavefunctions read/write)
1493 : : tslots(:24)=&
1494 [ + + ]: 3150 : & (/14, 270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292/)
1495 : : case(18)
1496 : : ! Estimate the complement of getghc (non fourwf, non fourdp, non nonlop, non fock_XX)
1497 [ + + ]: 1134 : tslots(:8)=(/-359, 350,-221,-235,-236,-841,-360,-1580/)
1498 : : case(19)
1499 : : ! Estimate the complement of cgwf (non getghc,projbd)
1500 [ + + ]: 882 : tslots(:6)=(/-40, 22,530,1300,-351,-211/)
1501 : : case(20)
1502 : : ! Estimate the complement of dfpt_cgwf (non getghc,projbd,nonlop,fourwf)
1503 : : ! tslots(:8)=(/-140, 122,-202,-197,-212,-227,-228,-844/) ! 197 includes some nonlop and fourwf, so there is double counting ...
1504 [ + + ]: 1008 : tslots(:7)=(/-140, 122,-352,-212,-227,-228,-844/)
1505 : : case(21)
1506 : : ! Estimate different complements in vtowfk
1507 : : ! vtowfk(ssdiag) (= vtowfk(loop) -cgwf -lobpcgwf_old -cgwf_cprj -lobpcgwf2 -chebfi
1508 : : ! -getcprj(vtowfk) -getcsc(subovl)) -chebfiwf2 -lobpcgwf2_cprj -chebfiwf2_cprj
1509 [ + + ]: 1638 : tslots(:12)=(/-588, 39,-22,-530,-1300,-1600,-1640,-1295,-1364,-1750,-2030,-2060/)
1510 : : case(22)
1511 : : ! vtowfk(contrib) (= vtowfk (afterloop) - nonlop%vtowfk - fourwf%vtowfk )
1512 [ + + ]: 630 : tslots(:4)=(/589, 30,-222,-842/)
1513 : : case(23)
1514 : : ! vtowfk (1) = vtowfk - vtowfk(loop) - vtowfk(afterloop)
1515 [ + + ]: 630 : tslots(:4)=(/31, 28,-39,-30/)
1516 : : case(24)
1517 : : ! Estimate different complements in dfpt_vtowfk
1518 : : ! dfpt_vtowfk(contrib) (= vtowfk3(loop) - cgwf - fourwf%vtowfk3 - rwwf%vtowfk3 - corrmetalwf1)
1519 [ + + ]: 882 : tslots(:6)=(/-113, 139,-122,-845,-288,-214/)
1520 : : case(25)
1521 : : ! vtowfk (1) = dfpt_vtowfk - vtowfk3(loop) - vtowfk3 (3)
1522 [ + + ]: 630 : tslots(:4)=(/ 131, 128,-139,-130/)
1523 : : case(28)
1524 : : ! dfpt_vtorho-kpt loop (= dfpt_vtowfk (2) - vtowfk3 - rwwf)
1525 [ + + ]: 630 : tslots(:4)=(/126,125,-128,-287/)
1526 : : case(29)
1527 : : ! Estimate complement in mkrho
1528 [ + + ]: 504 : tslots(:3)=(/798,799,-843/)
1529 : : case(30)
1530 : : ! Estimate complement in dfpt_looppert
1531 : : ! dfpt_looppert(other) (= loper3 - loper3(kpgio) - loper3(getmpw) - loper3(inwffil)
1532 : : ! dfpt_scfcv - dfpt_looppert(outwf) -loper3(eigt2tot)
1533 [ + + ]: 1134 : tslots(:8)=(/145,141,-142,-143,-144,-120,-146,-147/)
1534 : : case(31)
1535 : : ! Estimate complement in sigma
1536 : : ! sigma/=fourdp = sigma - fourdp%rhotwg%si - fourdp%fftwfn%si
1537 [ + + ]: 630 : tslots(:4)=(/410,401,-262,-265/)
1538 : : case(32)
1539 : : ! Estimate complement in bethe_salpeter
1540 [ + + ]: 378 : tslots(:2)=(/699,650/)
1541 : : case(33)
1542 : : ! Estimate complement in susk
1543 : : ! NOTE : fourwf%susk _PAW should actually be split between susk (loop except FFT)
1544 : : ! and susk (accumul.except FFT . But a renumbering of the fourwf splitting should be done ...
1545 : : ! susk (loop except FFT) = susk (loop) - fourwf%susk !0 - fourwf%susk !3
1546 [ + + ]: 630 : tslots(:4)=(/756,752,-848,-849/)
1547 : : case(34)
1548 : : ! susk (accumul.except FFT = susk (accumul) - fourwf%susk !3bis - fourwf%susk _PAW
1549 [ + + ]: 630 : tslots(:4)=(/757,754,-859,-857/)
1550 : : case(35)
1551 : : ! Estimate complement in suskmm
1552 : : ! NOTE : fourwf%susk _PAW should actually be split between susk (loop except FFT)
1553 : : ! and suskmm (accum.except FFT . But a renumbering of the fourwf splitting should be done ...
1554 : : ! suskmm (loop except FFT) = suskmm (loop) - fourwf%suskmm !0 part 1 - fourwf%suskmm !3 part 1
1555 [ + + ]: 630 : tslots(:4)=(/764,762,-861,-871/)
1556 : : case(36)
1557 : : ! suskmm (accum.except FFT = suskmm (accumul) - fourwf%suskmm !0 part 2 - fourwf%suskmm !3 part 2 - fourwf%susk _PAW
1558 [ + + ]: 756 : tslots(:5)=(/765,763,-862,-872,-857/)
1559 : : case(37)
1560 : : ! inwffil(excl. calls) = inwffil - inwffil(call wfsinp) - inwffil(call newkpt);
1561 [ + + ]: 630 : tslots(:4)=(/718,710,-714,-717/)
1562 : : case(38)
1563 : : ! wfsinp(excl. calls) = wfsinp - wfsinp(call initwf) - wfsinp(call rwwf)
1564 [ + + ]: 630 : tslots(:4)=(/728,720,-724,-727/)
1565 : : case(39)
1566 : : ! newkpt(excl. rwwf )=newkpt(before loop) + newkpt(before rwwf) + newkpt(after rwwf)
1567 : : ! newkpt(call wfconv) + newkpt(finalize loop) + newkpt(after loop )
1568 [ + + ]: 1008 : tslots(:7)=(/-788,781,782,783,784,785,786/)
1569 : : case(40)
1570 : : ! More complements in vtowfk
1571 : : ! vtowfk (2) = vtowfk (loop) - cgwf - lobpcg - subdiago - pw_orthon - cprj_rotate - getcprj(vtowfk)
1572 [ + + ]: 1386 : tslots(:10)=(/-590,39,-22,-1300,-1600,-530,-585,-583,-578,-1295/)
1573 : : case(41)
1574 : : ! vtowfk (3) = vtowfk (afterloop) - nonlop%vtowfk - prep_nonlop%vtowfk - fourwf%vtowfk - prep_fourwf%vtowfk - vtowfk(nonlocalpart)
1575 [ + + ]: 1008 : tslots(:7)=(/-591,30,-222,-572,-842,-537,-586/)
1576 : : case(43)
1577 : : ! mkrho = mkrho%gstate + mkrho%vtorho + mkrho%energy + mkrho%respfn + mkrho%afterscfloop + mkrho%scfcv_core
1578 [ + + ]: 1008 : tslots(:7)=(/790,791,792,793,794,795,796/)
1579 : : case(44)
1580 : : ! Estimate the complement of dmft (in vtorho, only)
1581 [ + + ]: 1386 : tslots(:10)=(/-626, 991,-620,-621,-622,-623,-624,-625,-627,-628/)
1582 : : ! case(45)
1583 : : !! Estimate the complement of nonlop_ylm
1584 : : ! tslots(:10)=(/1119,1100,-1101,-1102,-1103,-1104,-1105,-1106,-1107,-1108/)
1585 : : case(46)
1586 : : ! Sum the calls of getcprj
1587 [ + + ]: 630 : tslots(:4)=(/1290,1293,1294,1295/)
1588 : : case(47)
1589 : : ! Estimate the complement of getcprj
1590 [ + + ]: 756 : tslots(:5)=(/1299,1290,-1293,-1294,-1295/)
1591 : : case(48)
1592 : : ! Estimate the complement of cgwf_cprj
1593 [ + + ]: 1638 : tslots(:12)=(/1301,1300,-1302,-1303,-1304,-1305,-1293,-1363,-1370,-351,-211,-880/)
1594 : : case(49)
1595 : : ! Sum calls of getcsc
1596 [ + + ]: 504 : tslots(:3)=(/1360,1363,1364/)
1597 : : case(50)
1598 : : ! Estimate the complement of getcsc
1599 [ + + ]: 630 : tslots(:4)=(/1362,1360,-1363,-1364/)
1600 : : case(51)
1601 : : ! Estimate the complement of getchc
1602 [ + + ]: 756 : tslots(:5)=(/1375,1370,-235,-1371,-1372/)
1603 : : case(52)
1604 : : ! Total of xg_nonlop
1605 [ + + ]: 1512 : tslots(:11)=(/2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110/)
1606 : : case(53)
1607 : : ! Estimate the complement of xg_nonlop%getcprj
1608 [ + + ]: 882 : tslots(:6)=(/2134,2101,-2130,-2131,-2132,-2133/)
1609 : : case(54)
1610 : : ! Estimate the complement of xg_nonlop%apply_prj
1611 [ + + ]: 882 : tslots(:6)=(/2139,2102,-2135,-2136,-2137,-2138/)
1612 : : case(55)
1613 : : ! Estimate the complement of xg_nonlop%multcprj
1614 [ + + ]: 756 : tslots(:5)=(/2143,2104,-2140,-2141,-2142/)
1615 : : case(56)
1616 : : ! Estimate the complement of lobpcgwf2
1617 [ + + ]: 2898 : tslots(:22)=(/1661,1640,(ii,ii=-1641,-1660,-1)/)
1618 : : case(57)
1619 : : ! Estimate the complement of lobpcgwf2_cprj
1620 [ + + ]: 3024 : tslots(:23)=(/2059,2030,(ii,ii=-2031,-2051,-1)/)
1621 : : case(58)
1622 : : ! Estimate the complement of chebfi2
1623 [ + + ]: 3906 : tslots(:30)=(/1779,1750,(ii,ii=-1751,-1778,-1)/)
1624 : : case(59)
1625 : : ! Estimate the complement of chebfi2_cprj
1626 [ + + ]: 2772 : tslots(:21)=(/2080,2060,(ii,ii=-2061,-2079,-1)/)
1627 : : case(60)
1628 : : ! Estimate the complement of xg_nonlop_forces_stress
1629 [ + + ]: 1134 : tslots(:8)=(/2159,2150,-2151,-2152,-2153,-2154,-2155,-2156/)
1630 : : case(61)
1631 : : ! Estimate the complement of slice
1632 [ + + ]: 1260 : tslots(:9)=(/2166,2160,-2161,-2162,-2163,-2164,-2165,-2167,-2168/)
1633 : : case(62)
1634 : : ! Estimate the complement of slice_cprj
1635 [ + + ]: 2646 : tslots(:20)=(/2189,2170,(ii,ii=-2171,-2188,-1)/)
1636 : :
1637 : : case default
1638 [ + + + + : 277074 : cycle
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + ]
1639 : : end select
1640 : :
1641 : 7182 : tslot=tslots(1)
1642 : 7182 : aslot=abs(tslot)
1643 [ + + ]: 7182 : ncount( aslot)=0 ; if (tslot<0)ncount(aslot)=-1
1644 [ + + ]: 21546 : times(1:2, aslot)=zero
1645 : 7182 : nflops( aslot)=zero
1646 [ + + ]: 21546 : ftimes(1:2,aslot)=zero
1647 : : flag_count=1
1648 [ + - ]: 55440 : do islot=2,TIMER_SIZE
1649 : 55440 : bslot=tslots(islot)
1650 : 55440 : cslot=abs(bslot)
1651 [ + + ]: 55440 : if(bslot>0)then
1652 [ + + ]: 19782 : if(tslot>0)ncount(aslot)=ncount(aslot)+ncount(cslot)
1653 [ + + ]: 59346 : times(1:2, aslot)=times(1:2, aslot)+times(1:2,cslot)
1654 : 19782 : nflops( aslot)=nflops( aslot)+nflops( cslot)
1655 [ + + ]: 59346 : ftimes(1:2,aslot)=ftimes(1:2,aslot)+ftimes(1:2,cslot)
1656 [ + + ]: 35658 : else if(bslot<0)then
1657 [ + + ]: 28476 : if(tslot>0)flag_count=-1
1658 [ + + ]: 85428 : times(1:2, aslot)=times(1:2, aslot)-times(1:2,cslot)
1659 : 28476 : nflops( aslot)=nflops( aslot)-nflops( cslot)
1660 [ + + ]: 85428 : ftimes(1:2,aslot)=ftimes(1:2,aslot)-ftimes(1:2,cslot)
1661 : : else if(bslot==0)then
1662 : : exit
1663 : : end if
1664 : : end do
1665 [ + + ]: 7308 : if(flag_count==-1)ncount(aslot)=ncount(abs(tslots(2)))
1666 : : end do
1667 : :
1668 : : !For the following sections, the number of counts is non standard, and thus these sections have not been placed
1669 : : !in the previous doloop.
1670 : :
1671 : : !Compute xc part of rhotoxc and dfpt_mkvxc, minus the calls to fourdp inside that part
1672 : 126 : ncount(11)=ncount(81)+ncount(181)
1673 [ + + ]: 378 : times(1:2,11)=times(1:2,81)+times(1:2,181)-times(1:2,82)
1674 [ + + ]: 378 : ftimes(1:2,11)=ftimes(1:2,81)+ftimes(1:2,181)-ftimes(1:2,82)
1675 : 126 : nflops(11)=nflops(81)+nflops(181)-nflops(82)
1676 : :
1677 : : !Estimate different complements in dfpt_vtorho
1678 : : !dfpt_vtorho (1) (= vtorho3 (1,2) - vtorho3(2) - vtorho3:synchro )
1679 : 126 : ncount(118)=ncount(121)
1680 [ + + ]: 378 : times(1:2,118)=times(1:2,124)-times(1:2,125)-times(1:2,166)
1681 [ + + ]: 378 : ftimes(1:2,118)=ftimes(1:2,124)-ftimes(1:2,125)-ftimes(1:2,166)
1682 : 126 : nflops(118)=nflops(124)-nflops(125)-nflops(166)
1683 : :
1684 : : !Calculating Gigaflops for all cases
1685 [ + + ]: 277200 : do itim=1,TIMER_SIZE
1686 : 277074 : mflops(itim)=-2
1687 [ - + ]: 277200 : if(abs(ftimes(1,itim)) > tol10) then ! VALGRIND complains that here there is a jump on uninitialized values
1688 : 0 : mflops(itim)=nflops(itim)*1.e-9/ftimes(1,itim)
1689 : : else
1690 : 277074 : mflops(itim)=-1
1691 : : end if
1692 : : end do
1693 : :
1694 : : !Warning if the time is negative
1695 [ + + ]: 277200 : do itim=1,TIMER_SIZE
1696 [ + + + - : 277200 : if(times(1,itim)<-tol6 .or. times(2,itim)<-tol6 .or. ncount(itim)<-1 )then
- + ]
1697 : 100 : write(msg, '(6a,i4,4a,es16.6,a,es16.6,a,i6,a,es16.6)' ) ch10,&
1698 : 100 : ' timana: WARNING -',ch10,&
1699 : 100 : ' One among cpu, wall and ncount is negative.',ch10,&
1700 : 100 : ' Timing section #',itim,', name : ',names(itim),ch10,&
1701 : 200 : ' CPU =',times(1,itim),', Wall=',times(2,itim),' ncount=',ncount(itim),' flops=',nflops(itim)
1702 : 100 : call wrtout(std_out,msg,'PERS')
1703 : : end if
1704 : : end do
1705 : :
1706 : : !List of major independent code sections
1707 [ - + ]: 126 : ABI_MALLOC(list, (TIMER_SIZE))
1708 [ + + ]: 277200 : list(:)=0
1709 : 126 : nlist=0
1710 [ + + ]: 277200 : do itim=1,TIMER_SIZE
1711 [ + + ]: 277200 : if(basic(itim)/=0)then
1712 : 27342 : nlist=nlist+1
1713 : 27342 : list(nlist)=itim
1714 : : end if
1715 : : end do
1716 : :
1717 : 126 : percent_limit=0.5_dp
1718 [ + + ]: 126 : if (timopt<0) percent_limit=0.0001_dp
1719 : : !if (timopt<0) percent_limit=tol12
1720 : :
1721 : : !In case there is parallelism, report times for node 0
1722 : : !if (me==0 .and. nproc>1) then
1723 [ + + ]: 126 : if (me==0) then
1724 : :
1725 : : ! Find normalization to report timing as % total time
1726 : 63 : cpunm=100._dp/tsec(1)
1727 : 63 : wallnm=100._dp/tsec(2)
1728 : :
1729 : : ! (0) Take care of major independent code sections for this account of node 0 timing
1730 : :
1731 : 63 : write(ount, '(a,a,a,a,/,a,a,a)' ) '-',ch10,&
1732 : 63 : '- For major independent code sections,',' cpu and wall times (sec),',&
1733 : 63 : '- as well as % of the time and number of calls for node 0',ch10,&
1734 : 126 : '-'
1735 : :
1736 : : write(ount,"(3(a,i0),a)")&
1737 : 63 : "-<BEGIN_TIMER mpi_nprocs = ",nproc,", omp_nthreads = ",nthreads,", mpi_rank = ",me,">"
1738 : :
1739 : : ! write(ount,"(2(a,f13.1))")"- tot_cpu_time = ",tsec(1), ", tot_wall_time = ",tsec(2)
1740 : 63 : write(ount,"(2(a,f13.1))")"- cpu_time = ",my_tsec(1),", wall_time = ",my_tsec(2)
1741 : 63 : write(ount,"(a)")"-"
1742 : :
1743 : : write(ount,format_head1)&
1744 : 63 : '- routine','cpu','%','wall','%',' number of calls ',' Gflops ', 'Speedup', 'Efficacity'
1745 : : write(ount,format_head2)&
1746 : 63 : '- ',' ',' ',' ',' ',' (-1=no count)'
1747 : :
1748 : : ! Sort the list by decreasing CPU time
1749 [ + + ]: 13734 : do ii=1,nlist
1750 [ + + ]: 2966670 : do ilist=1,nlist-1
1751 [ + + ]: 2966607 : if (times(1,list(ilist))<times(1,list(ilist+1))) then
1752 : 69670 : temp_list=list(ilist)
1753 : 69670 : list(ilist)=list(ilist+1)
1754 : 69670 : list(ilist+1)=temp_list
1755 : : end if
1756 : : end do
1757 : : end do
1758 : :
1759 : 63 : subcpu=zero; subwal=zero; other_cpu=zero; other_wal=zero; nothers=0
1760 : :
1761 [ + + ]: 13734 : do ilist=1,nlist
1762 : 13671 : isort = list(ilist)
1763 : :
1764 : : if ( ((times(1,isort)*cpunm > percent_limit .and. &
1765 : : times(2,isort)*wallnm > percent_limit ).or. &
1766 : : ! Also print the name of routines with anomalous negative timing. This is to help debugging.
1767 : : (times(1,isort)*cpunm < -tol3 .or. &
1768 : : times(2,isort)*wallnm < -tol3 )) &
1769 [ + + + + : 13671 : .and. ncount(isort) /= 0) then ! Timing analysis
+ + - + +
- ]
1770 : :
1771 : 1261 : times(2,isort)=times(2,isort)+tol14
1772 : 1261 : write(ount,format01041)names(isort),&
1773 : 1261 : times(1,isort),times(1,isort)*cpunm,times(2,isort),times(2,isort)*wallnm,ncount(isort),mflops(isort), &
1774 : 2522 : times(1,isort)/times(2,isort),times(1,isort)/times(2,isort)/nthreads
1775 : : else
1776 : 12410 : nothers=nothers+1
1777 : 12410 : other_cpu=other_cpu+times(1,isort)
1778 : 12410 : other_wal=other_wal+times(2,isort)
1779 : : end if
1780 : :
1781 : 13671 : subcpu=subcpu+times(1,isort)
1782 : 13734 : subwal=subwal+times(2,isort)
1783 : : end do
1784 : :
1785 : 63 : write(entry_name,"(a,i0,a)")"others (",nothers,")"
1786 : 63 : other_wal = other_wal + tol14
1787 : 63 : write(ount,format01041)entry_name,other_cpu,other_cpu*cpunm,other_wal,other_wal*wallnm,-1,-1.0, &
1788 : 126 : other_cpu/other_wal,other_cpu/other_wal/nthreads
1789 : 63 : write(ount,"(a)")"-<END_TIMER>"
1790 : :
1791 : 63 : write(ount,'(a)' ) '-'
1792 : 63 : subwal = subwal + tol14
1793 : 63 : write(ount,01200) subcpu,subcpu*cpunm,subwal,subwal*wallnm,subcpu/subwal,subcpu/subwal/nthreads
1794 : : end if
1795 : :
1796 : : !Now, gather all information
1797 : 126 : call xmpi_sum(times,spaceworld,ierr)
1798 : 126 : call xmpi_sum(ncount,spaceworld,ierr)
1799 : 126 : call xmpi_sum(ftimes,spaceworld,ierr)
1800 : 126 : call xmpi_sum(nflops,spaceworld,ierr)
1801 : :
1802 [ + + ]: 126 : if (me==0) then ! Only the world master writes
1803 : :
1804 : : ! Find normalization to report timing as % total time
1805 : 63 : cpunm=100._dp/tsec(1)
1806 : 63 : wallnm=100._dp/tsec(2)
1807 : :
1808 : : ! Calculating Gigaflops for all process
1809 [ + + ]: 138600 : do itim=1,TIMER_SIZE
1810 : 138537 : mflops(itim)=-2
1811 [ - + ]: 138600 : if(abs(ftimes(1,itim)) > tol10) then ! VALGRIND complains that here there is a jump on uninitialized values
1812 : 0 : mflops(itim)=nflops(itim)*1.e-9/ftimes(1,itim)
1813 : : else
1814 : 138537 : mflops(itim)=-1
1815 : : end if
1816 : : end do
1817 : :
1818 : : ! _______________________________________
1819 : :
1820 : : ! Write timing output for cpu times
1821 : :
1822 : : ! (1) Take care of major independent code sections
1823 : : write(ount,'(/,a,/,a,/)' )&
1824 : 63 : '- For major independent code sections, cpu and wall times (sec),',&
1825 : 126 : '- as well as % of the total time and number of calls '
1826 : :
1827 : : write(ount,"(2(a,i0),a)")&
1828 : 63 : "-<BEGIN_TIMER mpi_nprocs = ",nproc,", omp_nthreads = ",nthreads,", mpi_rank = world>"
1829 : :
1830 : 63 : write(ount,"(2(a,f13.1))")"- cpu_time = ",tsec(1), ", wall_time = ",tsec(2)
1831 : 63 : write(ount,"(a)")"-"
1832 : :
1833 : : write(ount,format_head1)&
1834 : 63 : '- routine ','cpu','%','wall','%', ' number of calls ',' Gflops ', &
1835 : 126 : 'Speedup', 'Efficacity'
1836 : : write(ount,format_head2)&
1837 : 63 : '- ',' ',' ',' ',' ',' (-1=no count)'
1838 : :
1839 : : ! Sort the list by decreasing CPU time
1840 [ + + ]: 13734 : do ii=1,nlist
1841 [ + + ]: 2966670 : do ilist=1,nlist-1
1842 [ + + ]: 2966607 : if(times(1,list(ilist))<times(1,list(ilist+1)))then
1843 : 865 : temp_list=list(ilist)
1844 : 865 : list(ilist)=list(ilist+1)
1845 : 865 : list(ilist+1)=temp_list
1846 : : end if
1847 : : end do
1848 : : end do
1849 : :
1850 : 63 : subcpu=zero; subwal=zero; other_cpu=zero; other_wal=zero; nothers=0
1851 : :
1852 [ + + ]: 13734 : do ilist=1,nlist
1853 : 13671 : isort = list(ilist)
1854 [ + + + + : 13671 : if( (times(1,isort)*cpunm > percent_limit .and. times(2,isort)*wallnm> percent_limit) .and. ncount(isort)/=0 )then
+ - ]
1855 : :
1856 : 1376 : times(2,isort)=times(2,isort)+tol14
1857 : 1376 : write(ount,format01041)names(isort),&
1858 : 1376 : times(1,isort),times(1,isort)*cpunm,times(2,isort),times(2,isort)*wallnm,ncount(isort),mflops(isort), &
1859 : 2752 : times(1,isort)/times(2,isort),times(1,isort)/times(2,isort)/nthreads
1860 : : else
1861 : 12295 : nothers=nothers+1
1862 : 12295 : other_cpu=other_cpu+times(1,isort)
1863 : 12295 : other_wal=other_wal+times(2,isort)
1864 : : end if
1865 : 13671 : subcpu=subcpu+times(1,isort)
1866 : 13734 : subwal=subwal+times(2,isort)
1867 : : end do
1868 : :
1869 : 63 : other_wal = other_wal + tol14
1870 : 63 : write(entry_name,"(a,i0,a)")"others (",nothers,")"
1871 : 63 : write(ount,format01041)entry_name,other_cpu,other_cpu*cpunm,other_wal,other_wal*wallnm,-1,-1.0, &
1872 : 126 : other_cpu/other_wal,other_cpu/other_wal/nthreads
1873 : :
1874 : 63 : write(ount,"(a)")"-<END_TIMER>"
1875 : :
1876 : 63 : subwal = subwal + tol14
1877 : 63 : write(ount,01201) subcpu,subcpu*cpunm,subwal,subwal*wallnm,subcpu/subwal,subcpu/subwal/nthreads
1878 : :
1879 : : ! (2) Partitionings
1880 [ + + ]: 63 : if (timopt<0) then
1881 : :
1882 : : npart=1000
1883 [ + + ]: 28028 : do ipart=1,npart
1884 [ + + ]: 61600000 : list(:)=0
1885 : : select case(ipart)
1886 : :
1887 : : case(1)
1888 [ + + ]: 308 : list(:10)=(/1,101,102,103,104,640,105,49,50,TIMER_SIZE/) ; msg='abinit '
1889 : : case(2)
1890 [ + + ]: 392 : list(:13)=(/640,641,642,700,132,84,301,401,501,650,643,644,TIMER_SIZE/) ; msg='driver '
1891 : : case(3)
1892 [ + + ]: 924 : list(:32)=(/ (ii,ii=1200,1231,1) /) ; msg='gstateimg+gstate '
1893 : : case(4)
1894 [ + + ]: 700 : list(:24)=(/ (ii,ii=1440,1462,1),TIMER_SIZE/) ; msg='scfcv_core '
1895 : : case(5)
1896 [ + + ]: 224 : list(:7)=(/940,941,942,943,944,945,TIMER_SIZE/) ; msg= 'rhotov '
1897 : : case(6)
1898 [ + + ]: 616 : list(:21)=(/980,981,982,983,984,28,985,271,986,987,988,989,990,991,992,993,994,995,996,997,TIMER_SIZE/)
1899 : 28 : msg= 'vtorho '
1900 : : case(7)
1901 [ + + ]: 532 : list(:18)=(/28,31,22,530,585,583,590,222,572,842,537,586,591,578,1295,1300,1600,TIMER_SIZE/) ; msg='vtowfk '
1902 : : case(8)
1903 [ - + ]: 28 : if(abs(timopt)==3)then
1904 [ # # ]: 0 : list(:11)=(/530,354,355,571,532,533,630,535,536,584,587/) ; msg='lobpcgwf (abs(timopt)==3)'
1905 [ - + ]: 28 : else if(abs(timopt)==4)then
1906 [ # # ]: 0 : list(:8)=(/530,520,521,522,523,524,525,526/) ; msg='lobpcgwf (abs(timopt)==4)'
1907 : : ! else
1908 : : ! list(:3)=(/530,354,355/)
1909 : : ! msg='lobpcgwf (light analysis: for a deeper one, use abs(timopt)=3 or 4)'
1910 : : end if
1911 : : case(9)
1912 [ + + ]: 140 : list(:4)=(/22,351,40,211/) ; msg='cgwf '
1913 : : case(10)
1914 [ + + ]: 252 : list(:8)=(/132,133,134,135,136,137,138,141/) ; msg='respfn '
1915 : : case(11)
1916 [ + + ]: 252 : list(:8)=(/141,142,143,144,120,146,147,TIMER_SIZE/) ; msg='dfpt_looppert '
1917 : : case(12)
1918 [ + + ]: 280 : list(:9)=(/120,154,121,157,152,158,160,150,564/) ; msg='dfpt_scfcv '
1919 : : case(13)
1920 [ + + ]: 280 : list(:9)=(/121,118,128,126,287,166,129,127,556/) ; msg='dfpt_vtorho '
1921 : : case(14)
1922 [ + + ]: 280 : list(:9)=(/128,131,122,845,288,214,113,130,565/) ; msg='dfpt_vtowfk '
1923 : : case(15)
1924 [ + + ]: 252 : list(:8)=(/122,140,352,197,212,227,228,844/) ; msg='dfpt_cgwf '
1925 : : case(16)
1926 [ + + ]: 252 : list(:8)=(/350,841,221,359,235,236,360,1580/) ; msg='getghc '
1927 : : case(17)
1928 [ + + ]: 616 : list(:21)=(/801,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,880/)
1929 : 28 : msg='fourwf (upwards partitioning)'
1930 : : case(18)
1931 [ + + ]: 168 : list(:5)=(/933,934,936,937,938/) ; msg='outkss '
1932 : : case(19)
1933 [ + + ]: 420 : list(:14)=(/301,302,315,316,319,304,305,320,321,306,307,308,309,310/)
1934 : 28 : msg='screening '
1935 : : case(20)
1936 [ + + ]: 392 : list(:13)=(/401,402,403,404,405,406,407,408,409,421,423,424,425/); msg='sigma '
1937 : : case(21)
1938 [ + + ]: 280 : list(:9)=(/431,432,433,434,435,445,440,441,442/) ; msg='calc_sigc_me '
1939 : : case(23)
1940 [ + + ]: 336 : list(:11)=(/630,631,632,633,634,545,635,636,637,638,TIMER_SIZE/) ; msg='prep_getghc '
1941 : : case(24)
1942 [ + + ]: 140 : list(:4)=(/539,856,547,548/) ; msg='prep_fourwf '
1943 : : case(25)
1944 [ + + ]: 168 : list(:5)=(/570,231,232,581,TIMER_SIZE/) ; msg='prep_nonlop '
1945 : : case(26)
1946 [ + + ]: 196 : list(:6)=(/(ii,ii=790,795,1)/) ; msg='mkrho (upwards partitioning)'
1947 : : ! Disabled (temporarily ?) because the partitioning was not correct
1948 : : ! case(27);list(:17)=(/600,601,602,603,604,605,617,606,607,608,609,610,611,612,613,614,615/)
1949 : : ! msg='vtorhorec '
1950 : : case(28)
1951 [ + + ]: 308 : list(:10)=(/650,651,653,654,655,656,658,659,660,661/) ; msg='bethe_salpeter '
1952 : : case(29)
1953 [ + + ]: 252 : list(:8)=(/ (ii,ii=740,747,1) /) ; msg='suscep_stat '
1954 : : case(30)
1955 [ + + ]: 280 : list(:9)=(/750,751,848,849,753,756,859,757,755/) ; msg='susk '
1956 : : case(31)
1957 [ + + ]: 252 : list(:8)=(/760,761,764,861,871,765,862,872/) ; msg='suskmm '
1958 : : case(32)
1959 [ + + ]: 252 : list(:8)=(/ (ii,ii=710,717,1) /) ; msg='inwffil '
1960 : : case(33)
1961 [ + + ]: 308 : list(:10)=(/720,721,722,723,724,725,726,727,67,TIMER_SIZE/) ; msg='wfsinp '
1962 : : case(34)
1963 [ + + ]: 168 : list(:5)=(/770,771,772,272,290/) ; msg='initwf '
1964 : : case(35)
1965 [ + + ]: 280 : list(:9)=(/780,781,782,783,784,785,786,291,292/) ; msg='newkpt '
1966 : : case(36)
1967 [ + + ]: 252 : list(:8)=(/93,901,902,903,904,905,268,TIMER_SIZE/) ; msg='newvtr '
1968 : : case(37)
1969 [ + + ]: 84 : list(:2)=(/94,269/) ; msg='newrho '
1970 : : case(38)
1971 [ + + ]: 364 : list(:12)=(/9,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270/) ; msg='fourdp (upwards partitioning)'
1972 : : case(39)
1973 [ + + ]: 252 : list(:8)=(/ (ii,ii=250,257,1) /) ; msg='afterscfloop '
1974 : : case(40)
1975 [ + + ]: 168 : list(:5)=(/ (ii,ii=910,914,1) /) ; msg='forstr '
1976 : : case(41)
1977 [ + + ]: 280 : list(:9)=(/920,921,922,923,924,925,926,927,928/) ; msg='forstrnps '
1978 : : case(42)
1979 [ + + ]: 140 : list(:4)=(/670,671,672,673/) ; msg='exc_build_ham '
1980 : : case(43)
1981 [ + + ]: 224 : list(:7)=(/ (ii,ii=680,686,1) /) ; msg='exc_build_block'
1982 : : case(44)
1983 [ + + ]: 252 : list(:8)=(/ (ii,ii=690,697,1) /) ; msg='exc_haydock_driver '
1984 : : case(45)
1985 [ + + ]: 1428 : list(:50)=(/ (ii,ii=1150,1199,1) /) ; msg='outscfcv '
1986 : : case(46)
1987 [ + + ]: 280 : list(:9)=(/ (ii,ii=620,628,1) /) ; msg='dmft '
1988 : : case(47)
1989 [ + + ]: 280 : list(:9)=(/ (ii,ii=1001,1009,1) /) ; msg='initberry '
1990 : : case(48)
1991 [ + + ]: 168 : list(:5)=(/ (ii,ii=701,705,1) /) ; msg='dmft%impurity_solve: qmc_prep_ctqmc'
1992 : : case(50)
1993 [ + + ]: 168 : list(:5)=(/1560,1561,1562,1563,1565/) ; msg='fock2ACE '
1994 : : case(51)
1995 [ + + ]: 168 : list(:5)=(/1504,1515,850,1270,237/) ; msg='fock_getghc -original'
1996 : : case(52)
1997 [ + + ]: 168 : list(:5)=(/1504,1515,1512,1513,1514/) ; msg='fock_getghc -tight'
1998 : : case(53)
1999 [ + + ]: 140 : list(:4)=(/1504,1505,1506,1507/) ; msg='fock_getghc big blocs'
2000 : : case(54)
2001 [ + + ]: 336 : list(:11)=(/1504,1505,(ii,ii=1521,1528,1),1507/) ; msg='fock_getghc small blocs'
2002 : : case(55)
2003 [ + + ]: 448 : list(:15)=(/1504,1512,1513,1514,1541,1521,1542,1523,1544,1545,1546,1527,1528,1547,1548/)
2004 : 28 : msg='fock_getghc small blocs + fourXX, nonlop, xmpi_sum '
2005 : : case(60)
2006 [ + + ]: 392 : list(:13)=(/1600,1607,1630,1631,1632,1601,1603,1604,1605,1606,1608,1609,1610/) ; msg = 'chebfi'
2007 : : case(61)
2008 [ + + ]: 112 : list(:3)=(/1620,1621,1622/) ; msg = 'mkinvovl'
2009 : : case(70)
2010 [ + + ]: 168 : list(:5)=(/1701,1702,1703,1721,1722/) ; msg='gwls GW code'
2011 : : case(71)
2012 [ + + ]: 476 : list(:16)=(/ (ii,ii=1703,1718,1) /) ; msg='gwls: compute_correlations_shift_lanczos'
2013 : : case(72)
2014 [ + + ]: 308 : list(:10)=(/ (ii,ii=1724,1733,1) /) ; msg='gwls: Applying the susceptibility Pk'
2015 : : case(73)
2016 [ + + ]: 224 : list(:7)=(/ (ii,ii=1734,1740,1) /) ; msg='gwls: Applying the model susceptibility Pk_model'
2017 : : case(74)
2018 [ + + ]: 224 : list(:7)=(/ (ii,ii=1741,1747,1) /) ; msg='gwls: computing the matrix elements of eps_model^{-1}(w) -1 '
2019 : : case(75)
2020 [ + + ]: 616 : list(:21)=(/ (ii,ii=1640,1649,1), (ii,ii=1651,1660,1), 1661/) ; msg='lobpcgwf2 core engine '
2021 : : case(76)
2022 [ + + ]: 672 : list(:23)=(/ (ii,ii=2030,2051,1),2059/) ; msg='lobpcgwf2_cprj core engine '
2023 : : case(77)
2024 [ + + ]: 868 : list(:30)=(/ (ii,ii=1750,1778,1),1779 /) ; msg='chebfiwf2 core engine '
2025 : : case(78)
2026 [ + + ]: 616 : list(:21)=(/ (ii,ii=2060,2079,1),2080 /) ; msg='chebfiwf2_cprj core engine '
2027 : : case(79)
2028 [ + + ]: 168 : list(:5)=(/1690,1691,1692,1693,1694/) ; msg='low-level xgScalapack type '
2029 : : case(80)
2030 [ + + ]: 252 : list(:8)=(/1662,1663,1664,1665,1666,1667,1668,1669/) ; msg='low-level xgTransposer type '
2031 : : case(81)
2032 [ + + ]: 364 : list(:12)=(/1300,1293,1302,1303,1304,1305,1363,1370,351,211,880,1301/) ; msg='cgwf_cprj'
2033 : : case(82)
2034 [ + + ]: 168 : list(:5)=(/1290,1293,1294,1295,1299/) ; msg='getcprj'
2035 : : case(83)
2036 [ + + ]: 140 : list(:4)=(/1360,1363,1364,1362/) ; msg='getcsc'
2037 : : case(84)
2038 [ + + ]: 168 : list(:5)=(/1370,235,1371,1372,1375/) ; msg='getchc'
2039 : : case(85)
2040 [ + + ]: 448 : list(:15)=(/2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2120,2121,2122,2123/) ; msg='xg_nonlop'
2041 : : case(86)
2042 [ + + ]: 196 : list(:6)=(/2101,2130,2131,2132,2133,2134/) ; msg='xg_nonlop%getcprj'
2043 : : case(87)
2044 [ + + ]: 196 : list(:6)=(/2102,2135,2136,2137,2138,2139/) ; msg='xg_nonlop%apply_prj'
2045 : : case(88)
2046 [ + + ]: 168 : list(:5)=(/2104,2140,2141,2142,2143/) ; msg='xg_nonlop%multcprj'
2047 : : case(89)
2048 [ + + ]: 252 : list(:8)=(/2150,2151,2152,2153,2154,2155,2156,2159/) ; msg='xg_nonlop%forces_stress'
2049 : : case(90)
2050 [ + + ]: 1064 : list(:37)=(/ (ii,ii=1670,1689,1),(ii,ii=2000,2016,1) /) ; msg='low-level xgBlock type '
2051 : : case(91)
2052 [ + + ]: 280 : list(:9)=(/(ii,ii=2160,2168,1)/); msg='slicewf core engine '
2053 : : case(92)
2054 [ + + ]: 196 : list(:6)=(/ (ii,ii=2190,2195,1) /) ; msg='slicewf_cprj core engine '
2055 : : case default
2056 [ + + + + : 28000 : cycle ! This allows one to disable temporarily some partitionings
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + ]
2057 : :
2058 : : end select
2059 : :
2060 : 2156 : nlist=0
2061 [ + - ]: 24864 : do itim=1,TIMER_SIZE
2062 [ + + ]: 24864 : if(list(itim)/=0)then
2063 : 22708 : nlist=nlist+1
2064 : : else
2065 : : exit
2066 : : end if
2067 : : end do
2068 : :
2069 [ + + ]: 2156 : if(nlist==0)then
2070 : : cycle
2071 : : end if
2072 : :
2073 [ + + ]: 2156 : if(ncount(list(1))/=0)then
2074 : 513 : write(ount,'(/,a,a)')' Partitioning of ',trim(msg)
2075 : 513 : subcpu=zero
2076 : 513 : subwal=zero
2077 [ + + ]: 8024 : do ilist=1,nlist
2078 : 7511 : isort = list(ilist)
2079 : : ! When the LAST item is TIMER_SIZE, a complement is evaluated (count number set to -1)
2080 [ + + + + ]: 7511 : if(ilist==nlist .and. list(nlist)==TIMER_SIZE)then
2081 : 188 : times(1,TIMER_SIZE)=times(1,list(1))-subcpu
2082 : 188 : times(2,TIMER_SIZE)=times(2,list(1))-subwal
2083 : 188 : ncount(TIMER_SIZE)=-1
2084 : 188 : ftimes(1,TIMER_SIZE)=zero
2085 : 188 : mflops(TIMER_SIZE)=0
2086 : : #if defined HAVE_TEST_TIME_PARTITIONING
2087 : : if(times(2,TIMER_SIZE)>1.2d0 .and. wallnm*times(2,TIMER_SIZE)>3.d0)then
2088 : : write(ount, '(3a,es16.6,4a,es16.6,2a)')&
2089 : : ' Note : the partitioning does not work well for this routine.',ch10,&
2090 : : ' The (other) Wall time ',times(2,TIMER_SIZE),ch10,&
2091 : : ' is bigger than 1.2 secs. ',ch10,&
2092 : : ' The (other) Wall time percentage ',wallnm*times(2,TIMER_SIZE),ch10,&
2093 : : ' is bigger than 3% '
2094 : : else if (times(2,TIMER_SIZE)<0.2d0 .and. wallnm*times(2,TIMER_SIZE)<-0.2d0)then
2095 : : write(ount, '(3a,es16.6,2a)')&
2096 : : ' Note : the partitioning does not work well for this routine.',ch10,&
2097 : : ' The (other) Wall time percentage ',wallnm*times(2,TIMER_SIZE),ch10,&
2098 : : ' is negative '
2099 : : end if
2100 : : #endif
2101 : : end if
2102 [ + + ]: 8024 : if(ncount(isort)/=0)then
2103 : : ! Do not write a slot if the wall time ratio is below a threshold
2104 : : ! However, also identifies when the wall time of a slot (here, a complement) is negative
2105 [ + + + + : 4586 : if(times(2,isort)*wallnm>0.02d0 .or. ilist==1 .or. times(2,isort)*wallnm<-tol3)then
- + ]
2106 [ + + + - : 2267 : if((times(2,isort)*wallnm>0.02d0.or.ilist==1).and.times(2,isort) < 0.0001)times(2,isort)=-1.d0
+ + ]
2107 : 2267 : times(2,isort)=times(2,isort)+tol14
2108 : 2267 : write(ount,format01040)names(isort),&
2109 : 2267 : times(1,isort),times(1,isort)*cpunm,&
2110 : 2267 : times(2,isort),times(2,isort)*wallnm,ncount(isort), &
2111 : 4534 : times(1,isort)/times(2,isort),times(1,isort)/times(2,isort)/nthreads
2112 : : end if
2113 [ + + ]: 4586 : if(ilist/=1)then
2114 : 4073 : subcpu=subcpu+times(1,isort)
2115 : 4073 : subwal=subwal+times(2,isort)
2116 : : else
2117 : 513 : write(ount, '(a)' ) ' '
2118 : : end if
2119 : : end if
2120 : : end do
2121 : :
2122 : 513 : subwal = subwal + tol14
2123 : 513 : write(ount, 01201 ) subcpu,subcpu*cpunm,subwal,subwal*wallnm, subcpu/subwal,subcpu/subwal/nthreads
2124 : : #ifdef HAVE_TEST_TIME_PARTITIONING
2125 : : if( wallnm*abs(subwal-times(2,list(1)))>1.d0 .and. abs(subwal-times(2,list(1)))>0.2d0 )then
2126 : : write(ount, '(3a,es16.6,2a,es16.6,4a,es16.6,2a,es16.6,6a,i4)')&
2127 : : ' Note : the partitioning does not work well for this routine.',ch10,&
2128 : : ' The subtotal Wall time ',subwal,ch10,&
2129 : : ' differs from the total Wall time ',times(2,list(1)),ch10,&
2130 : : ' by more than 0.2 secs.',ch10,&
2131 : : ' The subtotal Wall time percentage ',wallnm*subwal,ch10,&
2132 : : ' differs from the total Wall time %',wallnm*times(2,list(1)),ch10,&
2133 : : ' by more than 1%. ',ch10,&
2134 : : ' The partitioning might not have been coded properly.',ch10,&
2135 : : ' nlist=',nlist
2136 : : do ilist=1,nlist
2137 : : write(ount, '(a,i4,i4,es16.6,i8)' )&
2138 : : ' ilist,list(ilist),wallnm*times(2,list(ilist)),ncount(list(ilist))=',&
2139 : : ilist,isort,wallnm*times(2,isort),ncount(isort)
2140 : : end do
2141 : : end if
2142 : : #endif
2143 : : end if
2144 : :
2145 : : end do ! End of loop on partitionings
2146 : :
2147 : : ! For parallel case
2148 : : if(xmpi_paral==1)then
2149 : 28 : write(ount, '(a,/,a)' )'-','-Synchronisation (=leave_test) and MPI calls '
2150 : 28 : nlist=14
2151 [ + + ]: 420 : list(:nlist)=(/48,61,62,63,64,65,66,67,71,85,86,543,544,787/)
2152 : 28 : subcpu=zero; subwal=zero
2153 [ + - ]: 28 : if(ncount(list(1))/=0)then
2154 [ + + ]: 420 : do ilist=1,nlist
2155 : 392 : isort = list(ilist)
2156 : : !
2157 [ + + ]: 420 : if (ncount(isort)/=0) then
2158 : 65 : times(2,isort)=times(2,isort)+tol14
2159 : 65 : write(ount,format01040)names(isort),&
2160 : 65 : times(1,isort),times(1,isort)*cpunm,&
2161 : 65 : times(2,isort),times(2,isort)*wallnm,ncount(isort), &
2162 : 130 : times(1,isort)/times(2,isort),times(1,isort)/times(2,isort)/nthreads
2163 : :
2164 [ + + ]: 65 : if(ilist/=1)then
2165 : 37 : subcpu=subcpu+times(1,isort)
2166 : 37 : subwal=subwal+times(2,isort)
2167 : : else
2168 : 28 : write(ount, '(a)' ) '-'
2169 : : end if
2170 : : end if !ncount
2171 : : end do !ilist
2172 : :
2173 : 28 : subwal = subwal + tol14
2174 : 28 : write(ount, 01200 ) subcpu,subcpu*cpunm,subwal,subwal*wallnm, subcpu/subwal,subcpu/subwal/nthreads
2175 : : end if !ncount
2176 : : end if !xmpi_paral
2177 : :
2178 : 784 : nlist=27
2179 [ + + ]: 784 : list(:nlist)=(/47,49,51,801,72,73,74,77,78,79,97,82,87,88,436,437,438,439,443,444,804,805,331,332,333,1280,1281/)
2180 : : flag_write=1
2181 [ + + ]: 784 : do ilist=1,nlist
2182 : 756 : isort = list(ilist)
2183 [ + + ]: 784 : if(ncount(isort)/=0)then
2184 [ + + ]: 186 : if(flag_write==1)then
2185 : 28 : write(ount, '(/,a)' ) ' Additional information'
2186 : 28 : flag_write=0
2187 : : end if
2188 : 186 : times(2,isort)=times(2,isort)+tol14
2189 : 186 : write(ount,format01040)names(isort),&
2190 : 186 : times(1,isort),times(1,isort)*cpunm,times(2,isort),times(2,isort)*wallnm,ncount(isort), &
2191 : 372 : times(1,isort)/times(2,isort),times(1,isort)/times(2,isort)/nthreads
2192 : : end if
2193 : : end do
2194 : :
2195 : 672 : nlist=23
2196 [ + + ]: 672 : list(:nlist)=(/550,551,552,553,554,555,556,558,559,560,561,562,563,564,565,566,567,593,594,595,596,597,598/)
2197 : : flag_write=1
2198 [ + + ]: 672 : do ilist=1,nlist
2199 : 644 : isort = list(ilist)
2200 [ + + ]: 672 : if(ncount(isort)/=0)then
2201 [ + + ]: 11 : if(flag_write==1)then
2202 : 1 : write(ount, '(/,a)' ) ' Additional information about PAW segments'
2203 : 1 : flag_write=0
2204 : : end if
2205 : 11 : times(2,isort)=times(2,isort)+tol14
2206 : 11 : write(ount,format01040)names(isort),&
2207 : 11 : times(1,isort),times(1,isort)*cpunm,times(2,isort),times(2,isort)*wallnm,ncount(isort), &
2208 : 22 : times(1,isort)/times(2,isort),times(1,isort)/times(2,isort)/nthreads
2209 : : end if
2210 : : end do
2211 : :
2212 : 112 : nlist=3
2213 [ + + ]: 112 : list(:nlist)=(/1795,1796,1797/)
2214 : : flag_write=1
2215 [ + + ]: 112 : do ilist=1,nlist
2216 : 84 : isort = list(ilist)
2217 [ + + ]: 112 : if(ncount(isort)/=0)then
2218 [ + + ]: 12 : if(flag_write==1)then
2219 : 4 : write(ount, '(/,a)' ) ' Additional information about diagonalization algorithm segments'
2220 : 4 : flag_write=0
2221 : : end if
2222 : 12 : times(2,isort)=times(2,isort)+tol14
2223 : 12 : write(ount,format01040)names(isort),&
2224 : 12 : times(1,isort),times(1,isort)*cpunm,times(2,isort),times(2,isort)*wallnm,ncount(isort), &
2225 : 24 : times(1,isort)/times(2,isort),times(1,isort)/times(2,isort)/nthreads
2226 : : end if
2227 : : end do
2228 : :
2229 : : ! The detailed analysis cannot be done in the multidataset mode
2230 [ + + ]: 28 : if(ndtset<2)then
2231 : : write(ount, '(/,/,a,/,a,/,a)' ) &
2232 : 15 : ' Detailed analysis of some time consuming routines ',&
2233 : 15 : ' tcpu ncalls tcpu/ncalls ndata tcpu/ncalls/ndata',&
2234 : 30 : ' (sec) (msec) (microsec)'
2235 : 15 : nlist=9
2236 [ + + ]: 150 : list(:nlist)=(/802,803,9,75,76,77,210,11,1795/)
2237 [ + + ]: 150 : do ilist=1,nlist
2238 : 135 : isort = list(ilist)
2239 [ + + ]: 150 : if(ncount(isort)/=0)then
2240 : 74 : write(ount, '(a,a24,f12.3,i10,f12.3,i10,f12.3)' )'- ',names(isort),&
2241 : 74 : times(1,isort),ncount(isort),&
2242 : 74 : 1000.0_dp*times(1,isort)/dble(ncount(isort)),ndata(isort),&
2243 : 148 : 1000000.0_dp*times(1,isort)/dble(ncount(isort)*dble(ndata(isort)))
2244 : : else
2245 : 61 : write(ount, '(a,a24,f12.3,i10)' )'- ',names(isort),times(1,isort),ncount(isort)
2246 : : end if
2247 : : end do !ilist
2248 : : else
2249 : 13 : write(ount,'(/,a)') ' timana : in multi dataset mode, the more detailed analysis is not done.'
2250 : : end if !ndtset
2251 : :
2252 : : end if ! End the condition of timopt<0
2253 : :
2254 : : end if ! me==0
2255 : :
2256 [ - + ]: 126 : ABI_FREE(list)
2257 : :
2258 : 126 : end subroutine timana
2259 : : !!***
2260 : :
2261 : : end module m_timana
2262 : : !!***
|