Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Do the Right Thing for the host_(get/set)_pstate
[simgrid.git] / src / smpi / smpi_dvfs.c
index 4a71979..feb2051 100644 (file)
@@ -1,12 +1,13 @@
-/* Copyright (c) 2013. The SimGrid Team.
+/* Copyright (c) 2013-2015. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
 * under the terms of the license (GNU LGPL) which comes with this package. */
+ * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "xbt/log.h"
 #include "simgrid/simix.h"
 #include "smpi/smpi.h"
+#include "src/internal_config.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_dvfs, smpi,
                                 "Logging specific to SMPI (experimental DVFS support)");
@@ -33,21 +34,29 @@ double smpi_get_host_current_power_peak(void)
 }
 
 /**
- * \brief Return the number of pstates defined for host
+ * \brief Return the number of pstates defined for the current host
  */
 int smpi_get_host_nb_pstates(void)
 {
-  return simcall_host_get_nb_pstates(SIMIX_host_self());
+  return sg_host_get_nb_pstates(SIMIX_host_self());
 }
 
 /**
- * \brief Sets the speed of the processor (in flop/s) at a given pstate
+ * \brief Sets the pstate at which the processor should run
  *
  * \param pstate_index pstate to switch to
  */
-void smpi_set_host_power_peak_at(int pstate_index)
+void smpi_set_host_pstate(int pstate_index)
 {
-  simcall_host_set_power_peak_at(SIMIX_host_self(), pstate_index);
+  sg_host_set_pstate(SIMIX_host_self(), pstate_index);
+}
+/**
+ * \brief Gets the pstate at which the processor currently running
+ *
+ * \param pstate_index pstate to switch to
+ */
+int smpi_get_host_pstate() {
+  return sg_host_get_pstate(SIMIX_host_self());
 }
 
 /**
@@ -55,14 +64,26 @@ void smpi_set_host_power_peak_at(int pstate_index)
  *
  * \return Returns the consumed energy
  */
-double smpi_get_host_consumed_energy(void)
-{
-  return simcall_host_get_consumed_energy(SIMIX_host_self());
+double smpi_get_host_consumed_energy(void) {
+  return sg_host_get_consumed_energy(SIMIX_host_self());
 }
 
-#include "smpi/smpif.h"
 
-#ifdef SMPI_F2C
+#ifdef SMPI_FORTRAN
+
+#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+typedef int integer;
+typedef unsigned int uinteger;
+#else
+typedef long int integer;
+typedef unsigned long int uinteger;
+#endif
+typedef char *address;
+typedef short int shortint;
+typedef float real;
+typedef double doublereal;
+typedef struct { real r, i; } complex;
+typedef struct { doublereal r, i; } doublecomplex;
 
 XBT_PUBLIC(doublereal) smpi_get_host_power_peak_at_(integer *pstate_index);
 doublereal smpi_get_host_power_peak_at_(integer *pstate_index)
@@ -82,10 +103,10 @@ integer smpi_get_host_nb_pstates_(void)
   return (integer)smpi_get_host_nb_pstates();
 }
 
-XBT_PUBLIC(void) smpi_set_host_power_peak_at_(integer *pstate_index);
-void smpi_set_host_power_peak_at_(integer *pstate_index)
+XBT_PUBLIC(void) smpi_set_host_pstate_(integer *pstate_index);
+void smpi_set_host_pstate_(integer *pstate_index)
 {
-  smpi_set_host_power_peak_at((int)*pstate_index);
+  smpi_set_host_pstate((int)*pstate_index);
 }
 
 XBT_PUBLIC(doublereal) smpi_get_host_consumed_energy_(void);