Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Change malloc/free to new/delete.
[simgrid.git] / src / smpi / colls / allgather / allgather-3dmesh.cpp
index 2c80059..8d99c07 100644 (file)
@@ -1,10 +1,10 @@
-/* Copyright (c) 2013-2014. The SimGrid Team.
+/* Copyright (c) 2013-2019. 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. */
 
-#include "../colls_private.h"
+#include "../colls_private.hpp"
 
 /*****************************************************************************
 
@@ -96,12 +96,11 @@ namespace simgrid{
 namespace smpi{
 
 
-int Coll_allgather_3dmesh::allgather(void *send_buff, int send_count,
+int Coll_allgather_3dmesh::allgather(const void *send_buff, int send_count,
                                      MPI_Datatype send_type, void *recv_buff,
                                      int recv_count, MPI_Datatype recv_type,
                                      MPI_Comm comm)
 {
-  MPI_Request *req, *req_ptr;
   MPI_Aint extent;
 
   int i, src, dst, rank, num_procs, block_size, my_z_base;
@@ -113,7 +112,7 @@ int Coll_allgather_3dmesh::allgather(void *send_buff, int send_count,
   num_procs = comm->size();
   extent = send_type->get_extent();
 
-  if (!is_3dmesh(num_procs, &X, &Y, &Z))
+  if (not is_3dmesh(num_procs, &X, &Y, &Z))
     THROWF(arg_error,0, "allgather_3dmesh algorithm can't be used with this number of processes! ");
 
 
@@ -133,16 +132,15 @@ int Coll_allgather_3dmesh::allgather(void *send_buff, int send_count,
 
   block_size = extent * send_count;
 
-  req = (MPI_Request *) xbt_malloc(num_reqs * sizeof(MPI_Request));
+  MPI_Request* req     = new MPI_Request[num_reqs];
+  MPI_Request* req_ptr = req;
 
-  req_ptr = req;
-
-  // do local allgather/local copy 
+  // do local allgather/local copy
   recv_offset = rank * block_size;
   Datatype::copy(send_buff, send_count, send_type, (char *)recv_buff + recv_offset,
                  recv_count, recv_type);
 
-  // do rowwise comm 
+  // do rowwise comm
   for (i = 0; i < Y; i++) {
     src = i + my_row_base;
     if (src == rank)
@@ -206,7 +204,7 @@ int Coll_allgather_3dmesh::allgather(void *send_buff, int send_count,
   }
   Request::waitall(Z - 1, req, MPI_STATUSES_IGNORE);
 
-  free(req);
+  delete[] req;
 
   return MPI_SUCCESS;
 }