LCOV - code coverage report
Current view: top level - src/55_abiutil - m_timana.F90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 99.7 % 1430 1426
Test Date: 2026-11-09 12:18:26 Functions: 100.0 % 1 1
Branches: 95.1 % 630 599

             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         [ +  - ]:         565 :    do ii=1,20
    1370                 :             : 
    1371                 :         565 :      call timab(50,1,tsec)
    1372         [ +  + ]:     7394646 :      do itimab=ltimab,utimab
    1373                 :             : !      The channel 51 is here used as a dummy channel
    1374                 :     7394081 :        call timab(51,1,tsec)
    1375                 :     7394646 :        call timab(51,2,tsec)
    1376                 :             :      end do
    1377                 :         565 :      call timab(50,2,tsec)
    1378                 :         565 :      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         [ +  + ]:         565 :      if(tsec(1)>0.10_dp)then
    1384                 :             :        exit
    1385                 :             :      else
    1386                 :         524 :        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                 :         524 :        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                 :       69573 :          temp_list=list(ilist)
    1753                 :       69573 :          list(ilist)=list(ilist+1)
    1754                 :       69573 :          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                 :        1267 :        times(2,isort)=times(2,isort)+tol14
    1772                 :        1267 :        write(ount,format01041)names(isort),&
    1773                 :        1267 :          times(1,isort),times(1,isort)*cpunm,times(2,isort),times(2,isort)*wallnm,ncount(isort),mflops(isort), &
    1774                 :        2534 :          times(1,isort)/times(2,isort),times(1,isort)/times(2,isort)/nthreads
    1775                 :             :      else
    1776                 :       12404 :        nothers=nothers+1
    1777                 :       12404 :        other_cpu=other_cpu+times(1,isort)
    1778                 :       12404 :        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                 :         997 :          temp_list=list(ilist)
    1844                 :         997 :          list(ilist)=list(ilist+1)
    1845                 :         997 :          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                 :        1399 :        times(2,isort)=times(2,isort)+tol14
    1857                 :        1399 :        write(ount,format01041)names(isort),&
    1858                 :        1399 :          times(1,isort),times(1,isort)*cpunm,times(2,isort),times(2,isort)*wallnm,ncount(isort),mflops(isort), &
    1859                 :        2798 :          times(1,isort)/times(2,isort),times(1,isort)/times(2,isort)/nthreads
    1860                 :             :      else
    1861                 :       12272 :        nothers=nothers+1
    1862                 :       12272 :        other_cpu=other_cpu+times(1,isort)
    1863                 :       12272 :        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   [ +  +  +  -  :        2258 :                if((times(2,isort)*wallnm>0.02d0.or.ilist==1).and.times(2,isort) < 0.0001)times(2,isort)=-1.d0
                   +  + ]
    2107                 :        2258 :                times(2,isort)=times(2,isort)+tol14
    2108                 :        2258 :                write(ount,format01040)names(isort),&
    2109                 :        2258 :                  times(1,isort),times(1,isort)*cpunm,&
    2110                 :        2258 :                  times(2,isort),times(2,isort)*wallnm,ncount(isort), &
    2111                 :        4516 :                  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                 :             : !!***
        

Generated by: LCOV version 2.3-1