Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Plug some easy memleaks
[simgrid.git] / src / smpi / smpi_global.c
index 4971ece..bd66ffb 100644 (file)
@@ -47,6 +47,7 @@ void smpi_request_reset(void *pointer)
 
   request->buf = NULL;
   request->completed = 0;
+  request->consumed = 0;
   request->data = NULL;
   request->forward = 0;
 
@@ -89,7 +90,6 @@ int smpi_create_request(void *buf, int count, smpi_mpi_datatype_t datatype,
 
   smpi_mpi_request_t request = NULL;
 
-           printf("in create-req():  MPI_ANY_SOURCE=%d,src=%d,comm->size=%d\n",MPI_ANY_SOURCE,src,comm->size);
   // parameter checking prob belongs in smpi_mpi, but this is less repeat code
   if (NULL == buf) {
     retval = MPI_ERR_INTERN;
@@ -100,7 +100,6 @@ int smpi_create_request(void *buf, int count, smpi_mpi_datatype_t datatype,
   } else if (MPI_ANY_SOURCE != src && (0 > src || comm->size <= src)) {
     retval = MPI_ERR_RANK;
   } else if (0 > dst || comm->size <= dst) {
-           printf("err MPI_ERR_RANK => MPI_ANY_SOURCE=%d,src=%d,dst=%d,comm->size=%d\n",MPI_ANY_SOURCE,src,dst,comm->size);
     retval = MPI_ERR_RANK;
   } else if (MPI_ANY_TAG != tag && 0 > tag) {
     retval = MPI_ERR_TAG;
@@ -191,6 +190,8 @@ void smpi_global_init()
   smpi_mpi_global->mpi_byte->size = (size_t) 1;
   smpi_mpi_global->mpi_int = xbt_new(s_smpi_mpi_datatype_t, 1);
   smpi_mpi_global->mpi_int->size = sizeof(int);
+  smpi_mpi_global->mpi_float = xbt_new(s_smpi_mpi_datatype_t, 1);
+  smpi_mpi_global->mpi_float->size = sizeof(float);
   smpi_mpi_global->mpi_double = xbt_new(s_smpi_mpi_datatype_t, 1);
   smpi_mpi_global->mpi_double->size = sizeof(double);
 
@@ -202,7 +203,7 @@ void smpi_global_init()
   smpi_mpi_global->mpi_min = xbt_new(s_smpi_mpi_op_t, 1);
   smpi_mpi_global->mpi_min->func = smpi_mpi_min_func;
   smpi_mpi_global->mpi_max = xbt_new(s_smpi_mpi_op_t, 1);
-  smpi_mpi_global->mpi_min->func = smpi_mpi_max_func;
+  smpi_mpi_global->mpi_max->func = smpi_mpi_max_func;
 
 }
 
@@ -235,14 +236,18 @@ void smpi_global_destroy()
   /* free smpi_mpi_global */
   SIMIX_mutex_destroy(smpi_mpi_global->mpi_comm_world->barrier_mutex);
   SIMIX_cond_destroy(smpi_mpi_global->mpi_comm_world->barrier_cond);
+  xbt_free(smpi_mpi_global->mpi_comm_world->rank_to_index_map);
   xbt_free(smpi_mpi_global->mpi_comm_world);
 
   xbt_free(smpi_mpi_global->mpi_byte);
   xbt_free(smpi_mpi_global->mpi_int);
   xbt_free(smpi_mpi_global->mpi_double);
+  xbt_free(smpi_mpi_global->mpi_float);
 
   xbt_free(smpi_mpi_global->mpi_land);
   xbt_free(smpi_mpi_global->mpi_sum);
+  xbt_free(smpi_mpi_global->mpi_max);
+  xbt_free(smpi_mpi_global->mpi_min);
 
   xbt_free(smpi_mpi_global);