From bd7c03eb9cce367ec8f558de003eb70035194e0b Mon Sep 17 00:00:00 2001 From: Bruno Donassolo Date: Wed, 28 Apr 2021 18:39:11 +0200 Subject: [PATCH] FatTreeZone: Do the checks earlier --- include/simgrid/s4u/NetZone.hpp | 5 +---- src/kernel/routing/FatTreeZone.cpp | 10 ++++++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/simgrid/s4u/NetZone.hpp b/include/simgrid/s4u/NetZone.hpp index 1014aff3c6..3b412762fc 100644 --- a/include/simgrid/s4u/NetZone.hpp +++ b/include/simgrid/s4u/NetZone.hpp @@ -216,10 +216,7 @@ struct FatTreeParams { std::vector up; std::vector number; FatTreeParams(unsigned int n_levels, const std::vector& down_links, - const std::vector& up_links, const std::vector& links_number) - : levels(n_levels), down(down_links), up(up_links), number(links_number) - { /* nothing to do */ - } + const std::vector& up_links, const std::vector& links_number); }; /** * @brief Create a Fat-Tree zone diff --git a/src/kernel/routing/FatTreeZone.cpp b/src/kernel/routing/FatTreeZone.cpp index faa06f6fcc..a848e8d0d8 100644 --- a/src/kernel/routing/FatTreeZone.cpp +++ b/src/kernel/routing/FatTreeZone.cpp @@ -369,7 +369,7 @@ void FatTreeZone::check_topology(unsigned int n_levels, const std::vector 0"); auto check_vector = [&n_levels](const std::vector& vector, const std::string& var_name) { @@ -497,6 +497,13 @@ void FatTreeZone::generate_dot_file(const std::string& filename) const } // namespace kernel namespace s4u { +FatTreeParams::FatTreeParams(unsigned int n_levels, const std::vector& down_links, + const std::vector& up_links, const std::vector& links_number) + : levels(n_levels), down(down_links), up(up_links), number(links_number) +{ + kernel::routing::FatTreeZone::check_topology(levels, down, up, number); +} + NetZone* create_fatTree_zone(const std::string& name, const NetZone* parent, const FatTreeParams& params, double bandwidth, double latency, Link::SharingPolicy sharing_policy, const std::function& set_netpoint, @@ -510,7 +517,6 @@ NetZone* create_fatTree_zone(const std::string& name, const NetZone* parent, con if (latency < 0) throw std::invalid_argument("FatTreeZone: incorrect latency for internode communication, lat=" + std::to_string(latency)); - kernel::routing::FatTreeZone::check_topology(params.levels, params.down, params.up, params.number); /* creating zone */ auto* zone = new kernel::routing::FatTreeZone(name); -- 2.20.1