Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'surf++'
[simgrid.git] / examples / smpi / energy / f90 / sef90.f90
1 program main
2   use mpi
3
4   integer ierr
5   integer rank, pstates
6   integer i
7   double precision p, t, e
8
9   call MPI_Init(ierr)
10   call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)
11
12   pstates = smpi_get_host_nb_pstates()
13
14   t = MPI_Wtime()
15
16   print *, '[', t, '] [rank ', rank, ']', pstates, 'pstates available'
17   do i = 0, pstates - 1
18      p = smpi_get_host_power_peak_at(i)
19      print *, '[', t, '] [rank ', rank, '] Power: ', p
20   end do
21
22   do i = 0, pstates - 1
23      call smpi_set_host_power_peak_at(i)
24      t = MPI_Wtime()
25      p = smpi_get_host_current_power_peak()
26      print *, '[', t, '] [rank ', rank, '] Current pstate: ', i, '; Current power: ', p
27
28      e = 1e9
29      call smpi_execute_flops(e)
30
31      t = MPI_Wtime()
32      e = smpi_get_host_consumed_energy()
33      print *, '[', t, '] [rank ', rank, '] Energy consumed (Joules): ', e
34   end do
35
36   call MPI_Finalize(ierr)
37
38 end program main