c functions cclock and scnds called via iso_c_binding

git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13601 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
giannozz 2017-07-15 15:34:01 +00:00
parent 9d3cd8474e
commit f3be636b49
9 changed files with 64 additions and 54 deletions

View File

@ -176,7 +176,7 @@ MODULE cp_restart
REAL(DP) :: nelec
REAL(DP) :: scalef
LOGICAL :: lsda
REAL(DP) :: s0, s1, cclock
REAL(DP) :: s0, s1
INTEGER :: nbnd_tot
INTEGER :: natomwfc, nbnd_
REAL(DP), ALLOCATABLE :: mrepl(:,:)
@ -185,6 +185,13 @@ MODULE cp_restart
INTEGER :: inlc
CHARACTER(iotk_attlenx) :: attr
REAL(DP), ALLOCATABLE :: temp_vec(:), wfc_temp(:,:) ! BS
INTERFACE
FUNCTION cclock ( ) BIND(C,name="cclock") RESULT(t)
USE ISO_C_BINDING
REAL(kind=c_double) :: t
END FUNCTION cclock
END INTERFACE
!
!
k1 = 0
k2 = 0

View File

@ -166,7 +166,7 @@ MODULE cp_restart_new
REAL(DP) :: wk_(2), nelec
REAL(DP) :: scalef
LOGICAL :: lsda
REAL(DP) :: s0, s1, cclock
REAL(DP) :: s0, s1
INTEGER :: natomwfc, nbnd_, nb, ib
REAL(DP), ALLOCATABLE :: mrepl(:,:)
LOGICAL :: exst
@ -178,7 +178,7 @@ MODULE cp_restart_new
!
! ... subroutine body
!
s0 = cclock()
CALL start_clock('restart')
!
IF( force_pairing ) &
CALL errore('cp_writefile',' force pairing not implemented', 1 )
@ -478,9 +478,8 @@ MODULE cp_restart_new
DEALLOCATE( tau )
DEALLOCATE( ityp )
!
s1 = cclock()
!
WRITE( stdout, '(3X,"restart file written in ",F8.3," sec.",/)' ) (s1-s0)
CALL stop_clock('restart')
CALL print_clock('restart')
!
RETURN
!
@ -606,7 +605,6 @@ MODULE cp_restart_new
REAL(DP), ALLOCATABLE :: occ_(:,:), et_(:,:)
CHARACTER(LEN=256) :: psfile_(ntypx)
CHARACTER(LEN=80) :: pos_unit
REAL(DP) :: s1, s0, cclock
REAL(DP), ALLOCATABLE :: mrepl(:,:)
LOGICAL :: md_found, exist_wfc
INTEGER :: io_bgrp_id

View File

@ -56,9 +56,13 @@ CONTAINS
REAL(DP) :: t1, tpar, tser
INTEGER :: nr, nc, ir, ic, nx
TYPE(la_descriptor) :: desc
REAL(DP) :: cclock
EXTERNAL :: cclock
INTEGER, PARAMETER :: paradim = 1000
INTERFACE
FUNCTION cclock ( ) BIND(C,name="cclock") RESULT(t)
USE ISO_C_BINDING
REAL(kind=c_double) :: t
END FUNCTION cclock
END INTERFACE
!
! Check if number of PEs for orthogonalization/diagonalization is given from the input
!
@ -202,9 +206,12 @@ CONTAINS
REAL(DP) :: t1, tcan
INTEGER :: nr, nc, ir, ic, np, lnode
TYPE(la_descriptor) :: desc
!
REAL(DP) :: cclock
EXTERNAL :: cclock
INTERFACE
FUNCTION cclock ( ) BIND(C,name="cclock") RESULT(t)
USE ISO_C_BINDING
REAL(kind=c_double) :: t
END FUNCTION cclock
END INTERFACE
!
np = MAX( INT( SQRT( DBLE( nproc_ortho ) + 0.1d0 ) ), 1 )
!

View File

@ -30,6 +30,12 @@ MODULE check_stop
LOGICAL :: stopped_by_user = .FALSE.
LOGICAL, PRIVATE :: tinit = .FALSE.
!
INTERFACE
FUNCTION cclock ( ) BIND(C,name="cclock") RESULT(t)
USE ISO_C_BINDING
REAL(kind=c_double) :: t
END FUNCTION cclock
END INTERFACE
CONTAINS
!
! ... internal procedures
@ -47,8 +53,6 @@ MODULE check_stop
!
IMPLICIT NONE
!
REAL(DP), EXTERNAL :: cclock
!
IF ( tinit ) &
WRITE( UNIT = stdout, &
FMT = '(/,5X,"WARNING: check_stop already initialized")' )
@ -90,7 +94,6 @@ MODULE check_stop
LOGICAL :: check_stop_now, tex=.false.
LOGICAL :: signaled
REAL(DP) :: seconds
REAL(DP), EXTERNAL :: cclock
!
IF ( stopped_by_user ) THEN
check_stop_now = .TRUE.

View File

@ -51,6 +51,17 @@ MODULE mytime
#if defined (__TRACE)
INTEGER :: trace_depth = 0
#endif
INTERFACE
FUNCTION cclock ( ) BIND(C,name="cclock") RESULT(t)
USE ISO_C_BINDING
REAL(kind=c_double) :: t
END FUNCTION cclock
FUNCTION scnds ( ) BIND(C,name="scnds") RESULT(t)
USE ISO_C_BINDING
REAL(kind=c_double) :: t
END FUNCTION scnds
END INTERFACE
CONTAINS
!
END MODULE mytime
!
@ -99,7 +110,7 @@ SUBROUTINE start_clock( label )
USE mytime, ONLY : trace_depth
#endif
USE mytime, ONLY : nclock, clock_label, notrunning, no, maxclock, &
t0cpu, t0wall
t0cpu, t0wall, cclock, scnds
!
IMPLICIT NONE
!
@ -107,7 +118,6 @@ SUBROUTINE start_clock( label )
!
CHARACTER(len=12) :: label_
INTEGER :: n
REAL(DP), EXTERNAL :: scnds, cclock
!
#if defined (__TRACE)
WRITE( stdout, '("mpime = ",I2,", TRACE (depth=",I2,") Start: ",A12)') mpime, trace_depth, label
@ -132,7 +142,7 @@ SUBROUTINE start_clock( label )
! & " already started")' ) n, label_
ELSE
t0cpu(n) = scnds()
t0wall(n) = cclock()
t0wall(n) = cclock()
ENDIF
!
RETURN
@ -149,10 +159,10 @@ SUBROUTINE start_clock( label )
!
ELSE
!
nclock = nclock + 1
clock_label(nclock) = label_
t0cpu(nclock) = scnds()
t0wall(nclock) = cclock()
nclock = nclock + 1
clock_label(nclock) = label_
t0cpu(nclock) = scnds()
t0wall(nclock) = cclock()
!
ENDIF
!
@ -171,7 +181,7 @@ SUBROUTINE stop_clock( label )
USE mytime, ONLY : trace_depth
#endif
USE mytime, ONLY : no, nclock, clock_label, cputime, walltime, &
notrunning, called, t0cpu, t0wall
notrunning, called, t0cpu, t0wall, cclock, scnds
!
IMPLICIT NONE
!
@ -179,7 +189,6 @@ SUBROUTINE stop_clock( label )
!
CHARACTER(len=12) :: label_
INTEGER :: n
REAL(DP), EXTERNAL :: scnds, cclock
!
#if defined (__TRACE)
trace_depth = trace_depth - 1
@ -208,7 +217,7 @@ SUBROUTINE stop_clock( label )
!
cputime(n) = cputime(n) + scnds() - t0cpu(n)
walltime(n) = walltime(n) + cclock() - t0wall(n)
t0cpu(n) = notrunning
t0cpu(n) = notrunning
t0wall(n) = notrunning
called(n) = called(n) + 1
!
@ -283,7 +292,7 @@ SUBROUTINE print_this_clock( n )
USE kinds, ONLY : DP
USE io_global, ONLY : stdout
USE mytime, ONLY : clock_label, cputime, walltime, &
notrunning, called, t0cpu, t0wall
notrunning, called, t0cpu, t0wall, cclock, scnds
!
! ... See comments below about parallel case
!
@ -296,8 +305,6 @@ SUBROUTINE print_this_clock( n )
REAL(DP) :: elapsed_cpu_time, elapsed_wall_time, nsec, msec
INTEGER :: nday, nhour, nmin, nmax, mday, mhour, mmin
!
REAL(DP), EXTERNAL :: scnds, cclock
!
!
IF ( t0cpu(n) == notrunning ) THEN
!
@ -426,7 +433,7 @@ FUNCTION get_clock( label )
!
USE kinds, ONLY : DP
USE mytime, ONLY : no, nclock, clock_label, walltime, &
notrunning, t0wall, t0cpu
notrunning, t0wall, t0cpu, cclock
!
! ... See comments in subroutine print_this_clock about parallel case
!
@ -439,9 +446,6 @@ FUNCTION get_clock( label )
CHARACTER(len=*) :: label
INTEGER :: n
!
REAL(DP), EXTERNAL :: cclock
!
!
IF ( no ) THEN
!
IF ( label == clock_label(1) ) THEN

View File

@ -58,7 +58,7 @@ SUBROUTINE stm (sample_bias, stmdos, istates)
! last band close enough to the specified energy range [down1:up1]
real(DP) :: emin, emax, x, y, &
w1, w2, up, up1, down, down1, t0, scnds
w1, w2, up, up1, down, down1
COMPLEX(DP), PARAMETER :: i= (0.d0, 1.d0)
real(DP), ALLOCATABLE :: gs (:,:)
@ -67,7 +67,7 @@ SUBROUTINE stm (sample_bias, stmdos, istates)
real(DP), EXTERNAL :: w0gauss
t0 = scnds ()
CALL start_clock('STM')
ALLOCATE (gs( 2, npwx))
ALLOCATE (psi(dfftp%nr1x, dfftp%nr2x))
!
@ -240,7 +240,8 @@ SUBROUTINE stm (sample_bias, stmdos, istates)
#endif
DEALLOCATE(psi)
DEALLOCATE(gs)
WRITE( stdout, '(/5x,"STM:",f10.2,"s cpu time")') scnds ()-t0
CALL stop_clock('STM')
CALL print_clock('STM')
!
#if defined(__MPI)
CALL mp_sum( istates, inter_pool_comm )

View File

@ -92,7 +92,7 @@ SUBROUTINE new_hamiltonian(form, plot_bands)
USE constants, ONLY : rytoev , tpi
USE buffers
USE symm_base, ONLY : nsym
!
IMPLICIT NONE
LOGICAL :: plot_bands
CHARACTER(len=256), INTENT(IN) :: form
@ -101,8 +101,13 @@ SUBROUTINE new_hamiltonian(form, plot_bands)
COMPLEX(DP), ALLOCATABLE :: hamk(:,:,:), hamh(:,:,:)
real(DP), ALLOCATABLE :: ek(:,:)
real(DP) :: e(nwan), x, hoping(3), nelec
REAL(DP), EXTERNAL :: cclock
CHARACTER(20) :: fmt
INTERFACE
FUNCTION cclock ( ) BIND(C,name="cclock") RESULT(t)
USE ISO_C_BINDING
REAL(kind=c_double) :: t
END FUNCTION cclock
END INTERFACE
ALLOCATE(ek(nwan,nks))
ALLOCATE(hamk(nwan,nwan,nks))

View File

@ -16,9 +16,7 @@
#endif
#include <unistd.h>
#include "c_defs.h"
double F77_FUNC(cclock,CCLOCK)()
double cclock()
/* Return the second elapsed since Epoch (00:00:00 UTC, January 1, 1970)
*/
@ -33,7 +31,7 @@ double F77_FUNC(cclock,CCLOCK)()
}
double F77_FUNC(scnds,SCNDS) ( )
double scnds ( )
/* Return the cpu time associated to the current process
*/

View File

@ -1,13 +0,0 @@
!
! Copyright (C) 2002 FPMD group
! This file is distributed under the terms of the
! GNU General Public License. See the file `License'
! in the root directory of the present distribution,
! or http://www.gnu.org/copyleft/gpl.txt .
!
#if defined __AIX
# define __BSIZ_VALUE 55
#else
# define __BSIZ_VALUE 35
#endif