Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add Fortran examples for smpi+dvfs.
[simgrid.git] / examples / smpi / energy / f77 / sef.f
diff --git a/examples/smpi/energy/f77/sef.f b/examples/smpi/energy/f77/sef.f
new file mode 100644 (file)
index 0000000..a1588be
--- /dev/null
@@ -0,0 +1,42 @@
+      program main
+      include 'mpif.h'
+
+      integer ierr
+      integer rank, pstates
+      integer i
+      double precision p, t, e
+
+      call MPI_Init(ierr)
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+      pstates = smpi_get_host_nb_pstates()
+
+      t = MPI_Wtime()
+
+      print *, '[', t, '] [rank ', rank, ']',
+     &     pstates, 'pstates available'
+
+      do i = 0, pstates - 1
+         p = smpi_get_host_power_peak_at(i)
+         print *, '[', t, '] [rank ', rank, '] Power: ', p
+      end do
+
+      do i = 0, pstates - 1
+         call smpi_set_host_power_peak_at(i)
+         t = MPI_Wtime()
+         p = smpi_get_host_current_power_peak()
+         print *, '[', t, '] [rank ', rank, '] Current pstate: ', i,
+     &        '; Current power: ', p
+
+         e = 1e9
+         call smpi_execute_flops(e)
+
+         t = MPI_Wtime()
+         e = smpi_get_host_consumed_energy()
+         print *, '[', t, '] [rank ', rank, ']',
+     &        'Energy consumed (Joules): ', e
+      end do
+
+      call MPI_Finalize(ierr)
+
+      end program main