Fonctions Fortran de mesure de temps


Temps CPU en Fortran : ''CPU_TIME''

Sous-programme intrinsèque Fortran 90. Mesure le temps CPU d'une portion de code encadrée par deux appels à CPU_TIME. Exemple d'utilisation :

exemple
  implicit none
  integer               :: j, n
  real,dimension(10000) :: x
  real                  :: t1,t2
  . . . .
  call CPU_TIME( t1 )
  !do j=1,10000
  !  x(j)=log(23.)*j
  !end do
  x(:) = log(23.)*[ (j,j=1,10000) ]
  call CPU_TIME( t2 )
  . . . .
  read *, n ; print *, x(n)
  print *,t2 - t1
  . . . .

Notes

  • t1 et t2 sont de type réel, le résultat de CPU_TIME est mesuré en secondes.
  • Si l'argument retourné est négatif, c'est que la fonctionnalité n'est pas disponible.

Temps d'horloge en Fortran : ''SYSTEM_CLOCK''

Sous-programme intrinsèque Fortran 90. Donne un temps elapsed en retournant un nombre de périodes d'horloge consommées. Exemple d'utilisation :

exemple
  . . .
  INTEGER :: &
     nb_periodes_initial, & ! valeur initiale du compteur de périodes d'horloge
     nb_periodes_final,   & ! valeur finale   du compteur de périodes d'horloge
     nb_periodes_max,     & ! valeur maximale du compteur d'horloge
     nb_periodes_sec,     & ! nombre de périodes d'horloge par seconde
     nb_periodes            ! nombre de périodes d'horloge du code
  REAL :: temps_elapsed  ! temps réel en secondes
 
  ! Initialisations
 
  CALL SYSTEM_CLOCK(COUNT_RATE=nb_periodes_sec, COUNT_MAX=nb_periodes_max)
  . . .
  CALL SYSTEM_CLOCK(COUNT=nb_periodes_initial)
  . . .
  !      <<<<<<<<<<<<< partie du code à évaluer >>>>>>>>>>>>>
  . . .
  CALL SYSTEM_CLOCK(COUNT=nb_periodes_final)
  nb_periodes = nb_periodes_final - nb_periodes_initial
  IF (nb_periodes_final < nb_periodes_initial) &
          nb_periodes = nb_periodes + nb_periodes_max
  temps_elapsed   = REAL(nb_periodes) / nb_periodes_sec
  . . .