INTERVALLI DI TEMPO

Per calcolare il tempo speso nell'eseguire un codice parallelo al fine di valutare le prestazioni raggiunte e' opportuno descrivere l'utilizzo della funzione

MPI_WTIME()

da dichiarare in fortran come DOUBLE PRECISION.

Il seguente esempio ne chiarisce l'utilizzo:
 
 

      program tempo
      include 'mpif.h'
      parameter (n=100)
      integer nprocs, mype, ierr, itag, imesg, sum
      integer istatus, i
      double precision tstart, tend, dt
      dimension imesg(n)
      dimension istatus(MPI_STATUS_SIZE)

      call MPI_INIT(ierr)
      call MPI_COMM_SIZE(MPI_COMM_WORLD, nprocs, ierr)
      call MPI_COMM_RANK(MPI_COMM_WORLD, mype, ierr)

      tstart = MPI_WTIME()
      sum = 0

      do i=1,n
      imesg(i) = mype
      if(mype.eq.1) then
      call MPI_SEND(imesg(1),n,MPI_INTEGER,0,i,
     +              MPI_COMM_WORLD,ierr)
      elseif(mype.eq.0) then
      call MPI_RECV(imesg(1),n,MPI_INTEGER,1,i,
     +              MPI_COMM_WORLD,istatus,ierr)
      endif
      sum = sum + imesg(i)
      enddo
      tend = MPI_WTIME()
      dt = tend-tstart
      write(6,*) 'io sono',mype,' somma=',sum,' tempo=',dt
      call MPI_FINALIZE(ierr)
      end

Il tempo risultante dalla differenza del tempo misurato alle chiamate della funzione in esame e' il tempo trascorso nell'eseguire le istruzioni intermedie ed e' espresso in secondi.

Con questo terminiamo la nostra introduzione alle funzioni di base dell'MPI.