X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4443c1a30c45a0727ffeb75f45c04854083d109e..2d37e348a09783cda723c7019640ee69de168324:/src/smpi/colls/smpi_coll.cpp diff --git a/src/smpi/colls/smpi_coll.cpp b/src/smpi/colls/smpi_coll.cpp index b67212c666..6e2a9d9255 100644 --- a/src/smpi/colls/smpi_coll.cpp +++ b/src/smpi/colls/smpi_coll.cpp @@ -1,6 +1,6 @@ /* smpi_coll.c -- various optimized routing for collectives */ -/* Copyright (c) 2009-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-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. */ @@ -98,7 +98,7 @@ void Colls::set_collectives(){ if (selector_name.empty()) selector_name = "default"; - std::map> setter_callbacks = { + std::pair> setter_callbacks[] = { {"gather", &Colls::set_gather}, {"allgather", &Colls::set_allgather}, {"allgatherv", &Colls::set_allgatherv}, {"allreduce", &Colls::set_allreduce}, {"alltoall", &Colls::set_alltoall}, {"alltoallv", &Colls::set_alltoallv}, @@ -106,26 +106,13 @@ void Colls::set_collectives(){ {"scatter", &Colls::set_scatter}, {"bcast", &Colls::set_bcast}, {"barrier", &Colls::set_barrier}}; - // This only prevents code duplication - std::function setup = [selector_name, &setter_callbacks](std::string coll) { - std::string name = simgrid::config::get_value(("smpi/" + coll).c_str()); + for (auto& elem : setter_callbacks) { + std::string name = simgrid::config::get_value(("smpi/" + elem.first).c_str()); if (name.empty()) name = selector_name; - setter_callbacks[coll](name); - }; - - setup("gather"); - setup("allgather"); - setup("allgatherv"); - setup("allreduce"); - setup("alltoall"); - setup("alltoallv"); - setup("reduce"); - setup("reduce_scatter"); - setup("scatter"); - setup("bcast"); - setup("barrier"); + (elem.second)(name); + } }