]> AND Public Git Repository - simgrid.git/blobdiff - src/smpi/mpi/smpi_win.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove useless new/delete (please sonar).
[simgrid.git] / src / smpi / mpi / smpi_win.cpp
index 456905c3832547c157fa07a71a36cb463b027000..6f1245e60cf8caa432e2a2dd332c4c7cdef98335 100644 (file)
@@ -96,9 +96,9 @@ Win::~Win(){
 
 int Win::attach(void* /*base*/, MPI_Aint size)
 {
-  if (not(base_ == MPI_BOTTOM || base_ == 0))
+  if (not(base_ == MPI_BOTTOM || base_ == nullptr))
     return MPI_ERR_ARG;
-  base_=0;//actually the address will be given in the RMA calls, as being the disp.
+  base_ = nullptr; // actually the address will be given in the RMA calls, as being the disp.
   size_+=size;
   return MPI_SUCCESS;
 }
@@ -228,7 +228,7 @@ int Win::put(const void *origin_addr, int origin_count, MPI_Datatype origin_data
   if(target_count*target_datatype->get_extent()>recv_win->size_)
     return MPI_ERR_ARG;
 
-  void* recv_addr = static_cast<void*> ( static_cast<char*>(recv_win->base_) + target_disp * recv_win->disp_unit_);
+  void* recv_addr = static_cast<char*>(recv_win->base_) + target_disp * recv_win->disp_unit_;
 
   if (target_rank != comm_->rank()) { // This is not for myself, so we need to send messages
     XBT_DEBUG("Entering MPI_Put to remote rank %d", target_rank);
@@ -348,7 +348,7 @@ int Win::accumulate(const void *origin_addr, int origin_count, MPI_Datatype orig
   if(target_count*target_datatype->get_extent()>recv_win->size_)
     return MPI_ERR_ARG;
 
-  void* recv_addr = static_cast<void*>(static_cast<char*>(recv_win->base_) + target_disp * recv_win->disp_unit_);
+  void* recv_addr = static_cast<char*>(recv_win->base_) + target_disp * recv_win->disp_unit_;
   XBT_DEBUG("Entering MPI_Accumulate to %d", target_rank);
   // As the tag will be used for ordering of the operations, subtract count from it (to avoid collisions with other
   // SMPI tags, SMPI_RMA_TAG is set below all the other ones we use)
@@ -469,7 +469,7 @@ int Win::start(MPI_Group group, int /*assert*/)
   int i             = 0;
   int j             = 0;
   int size          = group->size();
-  MPI_Request* reqs = xbt_new0(MPI_Request, size);
+  std::vector<MPI_Request> reqs(size);
 
   XBT_DEBUG("Entering MPI_Win_Start");
   while (j != size) {
@@ -481,12 +481,11 @@ int Win::start(MPI_Group group, int /*assert*/)
     j++;
   }
   size = i;
-  Request::startall(size, reqs);
-  Request::waitall(size, reqs, MPI_STATUSES_IGNORE);
+  Request::startall(size, reqs.data());
+  Request::waitall(size, reqs.data(), MPI_STATUSES_IGNORE);
   for (i = 0; i < size; i++) {
     Request::unref(&reqs[i]);
   }
-  xbt_free(reqs);
   opened_++; //we're open for business !
   group_=group;
   group->ref();
@@ -500,7 +499,7 @@ int Win::post(MPI_Group group, int /*assert*/)
   int i             = 0;
   int j             = 0;
   int size = group->size();
-  MPI_Request* reqs = xbt_new0(MPI_Request, size);
+  std::vector<MPI_Request> reqs(size);
 
   XBT_DEBUG("Entering MPI_Win_Post");
   while(j!=size){
@@ -513,12 +512,11 @@ int Win::post(MPI_Group group, int /*assert*/)
   }
   size=i;
 
-  Request::startall(size, reqs);
-  Request::waitall(size, reqs, MPI_STATUSES_IGNORE);
+  Request::startall(size, reqs.data());
+  Request::waitall(size, reqs.data(), MPI_STATUSES_IGNORE);
   for(i=0;i<size;i++){
     Request::unref(&reqs[i]);
   }
-  xbt_free(reqs);
   opened_++; //we're open for business !
   group_=group;
   group->ref();
@@ -534,7 +532,7 @@ int Win::complete(){
   int i             = 0;
   int j             = 0;
   int size          = group_->size();
-  MPI_Request* reqs = xbt_new0(MPI_Request, size);
+  std::vector<MPI_Request> reqs(size);
 
   while(j!=size){
     int dst = comm_->group()->rank(group_->actor(j));
@@ -546,13 +544,12 @@ int Win::complete(){
   }
   size=i;
   XBT_DEBUG("Win_complete - Sending sync messages to %d processes", size);
-  Request::startall(size, reqs);
-  Request::waitall(size, reqs, MPI_STATUSES_IGNORE);
+  Request::startall(size, reqs.data());
+  Request::waitall(size, reqs.data(), MPI_STATUSES_IGNORE);
 
   for(i=0;i<size;i++){
     Request::unref(&reqs[i]);
   }
-  xbt_free(reqs);
 
   int finished = finish_comms();
   XBT_DEBUG("Win_complete - Finished %d RMA calls", finished);
@@ -568,7 +565,7 @@ int Win::wait(){
   int i             = 0;
   int j             = 0;
   int size          = group_->size();
-  MPI_Request* reqs = xbt_new0(MPI_Request, size);
+  std::vector<MPI_Request> reqs(size);
 
   while(j!=size){
     int src = comm_->group()->rank(group_->actor(j));
@@ -580,12 +577,11 @@ int Win::wait(){
   }
   size=i;
   XBT_DEBUG("Win_wait - Receiving sync messages from %d processes", size);
-  Request::startall(size, reqs);
-  Request::waitall(size, reqs, MPI_STATUSES_IGNORE);
+  Request::startall(size, reqs.data());
+  Request::waitall(size, reqs.data(), MPI_STATUSES_IGNORE);
   for(i=0;i<size;i++){
     Request::unref(&reqs[i]);
   }
-  xbt_free(reqs);
   int finished = finish_comms();
   XBT_DEBUG("Win_wait - Finished %d RMA calls", finished);
 
@@ -709,7 +705,7 @@ int Win::finish_comms(int rank){
   if (size > 0) {
     size = 0;
     std::vector<MPI_Request> myreqqs;
-    std::vector<MPI_Request>::iterator iter = reqqs->begin();
+    auto iter                               = reqqs->begin();
     int proc_id                             = comm_->group()->actor(rank)->get_pid();
     while (iter != reqqs->end()){
       // Let's see if we're either the destination or the sender of this request