* under the terms of the license (GNU LGPL) which comes with this package. */
#include "smpi_comm.hpp"
-#include "private.h"
#include "private.hpp"
#include "simgrid/s4u/Host.hpp"
#include "smpi_coll.hpp"
#include "smpi_request.hpp"
#include "smpi_status.hpp"
#include "smpi_win.hpp"
-#include "src/simix/smx_private.h"
+#include "src/simix/smx_private.hpp"
#include <algorithm>
#include <climits>
#include <vector>
if (not attributes()->empty()) {
int flag;
void* value_out;
- for(auto it : *attributes()){
+ for (auto const& it : *attributes()) {
smpi_key_elem elem = keyvals_.at(it.first);
if (elem != nullptr && elem->copy_fn.comm_copy_fn != MPI_NULL_COPY_FN) {
ret = elem->copy_fn.comm_copy_fn(this, it.first, nullptr, it.second, &value_out, &flag);
}
MPI_Request* requests = xbt_new(MPI_Request, rankmap.size());
int reqs = 0;
- for (const auto& rank : rankmap) {
+ for (auto const& rank : rankmap) {
if (rank.second != 0) {
group_snd[reqs]=new Group(group_out);
requests[reqs] = Request::isend(&(group_snd[reqs]), 1, MPI_PTR, rank.second, system_tag, this);
if (non_uniform_map_ != nullptr)
xbt_free(non_uniform_map_);
if (leaders_map_ != nullptr)
- xbt_free(leaders_map_);
+ delete[] leaders_map_;
}
void Comm::unref(Comm* comm){
MPI_Comm comm_intra = new Comm(group_intra, nullptr);
leader=min_index;
- int * leaders_map= static_cast<int*>(xbt_malloc0(sizeof(int)*comm_size));
- int * leader_list= static_cast<int*>(xbt_malloc0(sizeof(int)*comm_size));
- for(i=0; i<comm_size; i++){
- leader_list[i] = -1;
- }
+ int* leaders_map = new int[comm_size];
+ int* leader_list = new int[comm_size];
+ std::fill_n(leaders_map, comm_size, 0);
+ std::fill_n(leader_list, comm_size, -1);
Coll_allgather_mpich::allgather(&leader, 1, MPI_INT , leaders_map, 1, MPI_INT, this);
if(leaders_map_==nullptr){
leaders_map_= leaders_map;
}else{
- xbt_free(leaders_map);
+ delete[] leaders_map;
}
int j=0;
int leader_group_size = 0;
}else{
is_blocked_=global_blocked;
}
- xbt_free(leader_list);
+ delete[] leader_list;
if(replaying)
smpi_process()->set_replaying(true);
return MPI_COMM_WORLD;
} else if(F2C::f2c_lookup() != nullptr && id >= 0) {
char key[KEY_SIZE];
- try {
- return static_cast<MPI_Comm>(F2C::f2c_lookup()->at(get_key_id(key, id)));
- } catch (std::out_of_range& unfound) {
- return MPI_COMM_NULL;
- }
+ const auto& lookup = F2C::f2c_lookup();
+ auto comm = lookup->find(get_key_id(key, id));
+ return comm == lookup->end() ? MPI_COMM_NULL : static_cast<MPI_Comm>(comm->second);
} else {
return MPI_COMM_NULL;
}
}
void Comm::finish_rma_calls(){
- for(auto it : rma_wins_){
+ for (auto const& it : rma_wins_) {
if(it->rank()==this->rank()){//is it ours (for MPI_COMM_WORLD)?
int finished = it->finish_comms();
XBT_DEBUG("Barrier for rank %d - Finished %d RMA calls",this->rank(), finished);