-/* Copyright (c) 2014-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2014-2018. 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 "smpi/smpi.h"
-#include "private.h"
+#include "private.hpp"
#include "smpi_comm.hpp"
#include "smpi_topo.hpp"
#include "xbt/sysdep.h"
oldGroup = comm_old->group();
newGroup = new Group(newSize);
for (int i = 0 ; i < newSize ; i++) {
- newGroup->set_mapping(oldGroup->index(i), i);
+ newGroup->set_mapping(oldGroup->actor(i), i);
}
nnodes_ = newSize;
*comm_cart = MPI_COMM_NULL;
}
}
- comm_=*comm_cart;
+ setComm(*comm_cart);
}
Topo_Cart* Topo_Cart::sub(const int remain_dims[], MPI_Comm *newcomm) {
}
if (newNDims > 0) {
- newDims = xbt_new(int, newNDims);
- newPeriodic = xbt_new(int, newNDims);
+ newDims = new int[newNDims];
+ newPeriodic = new int[newNDims];
// that should not segfault
int j = 0;
}
}
}
- return new Topo_Cart(comm_, newNDims, newDims, newPeriodic, 0, newcomm);
+ Topo_Cart* res = new Topo_Cart(getComm(), newNDims, newDims, newPeriodic, 0, newcomm);
+ delete[] newDims;
+ delete[] newPeriodic;
+ return res;
}
int Topo_Cart::coords(int rank, int maxdims, int coords[]) {
return MPI_ERR_DIMS;
}
- this->coords(comm_->rank(),ndims_, position);
+ this->coords(getComm()->rank(), ndims_, position);
position[direction] += disp;
if(position[direction] < 0 ||