Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Export DVFS functionality for smpi (experimental).
[simgrid.git] / src / smpi / smpi_global.c
index 842b659..b5b05af 100644 (file)
@@ -30,6 +30,7 @@ typedef struct s_smpi_process_data {
   void *data;                   /* user data */
   int index;
   int initialized;
+  int sampling;                 /* inside an SMPI_SAMPLE_ block? */
 } s_smpi_process_data_t;
 
 static smpi_process_data_t *process_data = NULL;
@@ -253,6 +254,18 @@ MPI_Comm smpi_process_comm_self(void)
   return data->comm_self;
 }
 
+void smpi_process_set_sampling(int s)
+{
+  smpi_process_data_t data = smpi_process_data();
+  data->sampling = s;
+}
+
+int smpi_process_get_sampling(void)
+{
+  smpi_process_data_t data = smpi_process_data();
+  return data->sampling;
+}
+
 void print_request(const char *message, MPI_Request request)
 {
   XBT_DEBUG
@@ -261,7 +274,7 @@ void print_request(const char *message, MPI_Request request)
        request->dst, request->tag, request->flags);
 }
 
-static void SMPI_comm_copy_buffer_callback(smx_action_t comm,
+static void smpi_comm_copy_buffer_callback(smx_action_t comm,
                                            void *buff, size_t buff_size)
 {
   XBT_DEBUG("Copy the data over");
@@ -284,7 +297,7 @@ void smpi_global_init(void)
   MPI_Group group;
   char name[MAILBOX_NAME_MAXLEN];
 
-  SIMIX_comm_set_copy_data_callback(&SMPI_comm_copy_buffer_callback);
+  SIMIX_comm_set_copy_data_callback(&smpi_comm_copy_buffer_callback);
   process_count = SIMIX_process_count();
   process_data = xbt_new(smpi_process_data_t, process_count);
   for (i = 0; i < process_count; i++) {
@@ -301,6 +314,7 @@ void smpi_global_init(void)
     group = smpi_group_new(1);
     process_data[i]->comm_self = smpi_comm_new(group);
     process_data[i]->initialized = 0;
+    process_data[i]->sampling = 0;
 
     smpi_group_set_mapping(group, i, 0);
   }
@@ -393,14 +407,15 @@ int smpi_main(int (*realmain) (int argc, char *argv[]), int argc, char *argv[])
   XBT_LOG_CONNECT(smpi_base);
   XBT_LOG_CONNECT(smpi_bench);
   XBT_LOG_CONNECT(smpi_coll);
+  XBT_LOG_CONNECT(smpi_colls);
   XBT_LOG_CONNECT(smpi_comm);
+  XBT_LOG_CONNECT(smpi_dvfs);
   XBT_LOG_CONNECT(smpi_group);
   XBT_LOG_CONNECT(smpi_kernel);
   XBT_LOG_CONNECT(smpi_mpi);
   XBT_LOG_CONNECT(smpi_mpi_dt);
   XBT_LOG_CONNECT(smpi_pmpi);
   XBT_LOG_CONNECT(smpi_replay);
-  XBT_LOG_CONNECT(smpi_colls);
 
 #ifdef HAVE_TRACING
   TRACE_global_init(&argc, argv);