From: Augustin Degomme Date: Fri, 20 May 2022 07:23:12 +0000 (+0000) Subject: Merge branch 'dev-add_comm_fault_scenario' into 'master' X-Git-Tag: v3.32~227 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/519fc4af194190fc8092d801d51b2fd83d35845e?hp=c1c7acf4ea5ee23e3f033480f15b8e97944c6ccf Merge branch 'dev-add_comm_fault_scenario' into 'master' Add a test to cover many communication fault scenarios See merge request simgrid/simgrid!103 --- diff --git a/MANIFEST.in b/MANIFEST.in index 27bb704106..c3f49ce0b6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -607,6 +607,7 @@ include examples/smpi/mc/non_termination2.c include examples/smpi/mc/non_termination3.c include examples/smpi/mc/non_termination4.c include examples/smpi/mc/only_send_deterministic.c +include examples/smpi/mc/only_send_deterministic.tesh include examples/smpi/mc/promela_bugged1_liveness include examples/smpi/mc/sendsend.c include examples/smpi/mc/sendsend.tesh @@ -1944,6 +1945,9 @@ include examples/platforms/small_platform_routing_none.xml include examples/platforms/small_platform_with_routers.xml include examples/platforms/storage/content/small_content.txt include examples/platforms/storage/content/storage_content.txt +include examples/platforms/supernode.cpp +include examples/platforms/supernode.py +include examples/platforms/supernode.svg include examples/platforms/syscoord/generate_peer_platform.pl include examples/platforms/syscoord/median_harvard.syscoord include examples/platforms/syscoord/median_meridian.syscoord @@ -1966,7 +1970,6 @@ include examples/python/platform-failures/platform-failures_d.xml include examples/smpi/CMakeLists.txt include examples/smpi/NAS/CMakeLists.txt include examples/smpi/comm_dynamic_costs/CMakeLists.txt -include examples/smpi/mc/only_send_deterministic.tesh include examples/smpi/replay_multiple/CMakeLists.txt include examples/smpi/replay_multiple_manual_deploy/CMakeLists.txt include examples/smpi/smpi_s4u_masterworker/CMakeLists.txt diff --git a/examples/platforms/CMakeLists.txt b/examples/platforms/CMakeLists.txt index 42a50736c9..187377329b 100644 --- a/examples/platforms/CMakeLists.txt +++ b/examples/platforms/CMakeLists.txt @@ -1,6 +1,6 @@ add_custom_target(platf_cpp COMMENT "C++ platform description") add_dependencies(tests platf_cpp) -foreach (platf routing_cluster griffon) +foreach (platf griffon routing_cluster supernode) add_library (${platf} SHARED ${platf}.cpp) target_link_libraries(${platf} simgrid) add_dependencies(platf_cpp ${platf}) diff --git a/examples/platforms/supernode.cpp b/examples/platforms/supernode.cpp new file mode 100644 index 0000000000..d3f91266b8 --- /dev/null +++ b/examples/platforms/supernode.cpp @@ -0,0 +1,100 @@ +/* Copyright (c) 2006-2022. 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 +namespace sg4 = simgrid::s4u; + +constexpr double BW_CPU = 1e12; +constexpr double LAT_CPU = 0; + +constexpr double BW_NODE = 1e11; +constexpr double LAT_NODE = 1e-8; + +constexpr double BW_NETWORK = 1.25e10; +constexpr double LAT_NETWORK = 1e-7; + +static std::string int_string(int n) +{ + return simgrid::xbt::string_printf("%02d", n); +} + +/** + * + * This function creates one node made of nb_cpu CPUs. + */ +static sg4::NetZone* create_node(const sg4::NetZone* root, const std::string& node_name, const int nb_cpu) +{ + auto* node = sg4::create_star_zone(node_name); + node->set_parent(root); + + /* create all hosts and connect them to outside world */ + for (int i = 0; i < nb_cpu; i++) { + const auto& cpuname = node_name + "_cpu-" + int_string(i); + const auto& linkname = "link_" + cpuname; + + const sg4::Host* host = node->create_host(cpuname, 1e9); + const sg4::Link* l = node->create_split_duplex_link(linkname, BW_CPU)->set_latency(LAT_CPU)->seal(); + + node->add_route(host->get_netpoint(), nullptr, nullptr, nullptr, {{l, sg4::LinkInRoute::Direction::UP}}, true); + } + + return node; +} + +/** + * + * This function creates one super-node made of nb_nodes nodes with nb_cpu CPUs. + */ +static sg4::NetZone* create_supernode(const sg4::NetZone* root, const std::string& supernode_name, const int nb_nodes, + const int nb_cpu) +{ + auto* supernode = sg4::create_star_zone(supernode_name); + supernode->set_parent(root); + + /* create all nodes and connect them to outside world */ + for (int i = 0; i < nb_nodes; i++) { + const auto& node_name = supernode_name + "_node-" + int_string(i); + const auto& linkname = "link_" + node_name; + + sg4::NetZone* node = create_node(supernode, node_name, nb_cpu); + const auto router = node->create_router("router_" + node_name); + node->seal(); + + const sg4::Link* l = supernode->create_split_duplex_link(linkname, BW_NODE)->set_latency(LAT_NODE)->seal(); + supernode->add_route(node->get_netpoint(), nullptr, router, nullptr, {{l, sg4::LinkInRoute::Direction::UP}}, true); + } + return supernode; +} + +/** + * + * This function creates one cluster of nb_supernodes super-nodes made of nb_nodes nodes with nb_cpu CPUs. + */ +static sg4::NetZone* create_cluster(const std::string& cluster_name, const int nb_supernodes, const int nb_nodes, + const int nb_cpu) +{ + auto* cluster = sg4::create_star_zone(cluster_name); + + /* create all supernodes and connect them to outside world */ + for (int i = 0; i < nb_supernodes; i++) { + const auto& supernode_name = cluster_name + "_supernode-" + int_string(i); + const auto& linkname = "link_" + supernode_name; + + sg4::NetZone* supernode = create_supernode(cluster, supernode_name, nb_nodes, nb_cpu); + const auto router = supernode->create_router("router_" + supernode_name); + supernode->seal(); + + const sg4::Link* l = cluster->create_split_duplex_link(linkname, BW_NETWORK)->set_latency(LAT_NETWORK)->seal(); + cluster->add_route(supernode->get_netpoint(), nullptr, router, nullptr, {{l, sg4::LinkInRoute::Direction::UP}}, + true); + } + return cluster; +} + +extern "C" void load_platform(const sg4::Engine& e); +void load_platform(const sg4::Engine& e) +{ + create_cluster("cluster", 4, 6, 2)->seal(); +} diff --git a/examples/platforms/supernode.py b/examples/platforms/supernode.py new file mode 100755 index 0000000000..5ffde32fe9 --- /dev/null +++ b/examples/platforms/supernode.py @@ -0,0 +1,95 @@ +#! /usr/bin/env python3 + +# Copyright (c) 2006-2022. 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. + + +# This script takes as input a C++ platform file, compiles it, then dumps the +# routing graph as a CSV and generates an SVG image. +# The layout should be alright for any platform file, but the colors are very +# ad-hoc for file supernode.cpp : do not hesitate to adapt this script to your needs. + +import sys +import subprocess +import pandas +import matplotlib as mpl +import matplotlib.pyplot as plt +import networkx as nx +try: + from palettable.colorbrewer.qualitative import Set1_9 + colors = Set1_9.hex_colors +except ImportError: + print('Warning: could not import palettable, will use a default palette.') + colors = [None]*10 + + +def run_command(cmd): + print(cmd) + subprocess.run(cmd.split(), capture_output=True, check=True) + + +def compile_platform(platform_cpp): + platform_so = platform_cpp.replace('.cpp', '.so') + cmd = f'g++ -g -fPIC -shared -o {platform_so} {platform_cpp} -lsimgrid' + run_command(cmd) + return platform_so + + +def dump_csv(platform_so): + platform_csv = platform_so.replace('.so', '.csv') + cmd = f'graphicator {platform_so} {platform_csv}' + run_command(cmd) + return platform_csv + + +def load_graph(platform_csv): + edges = pandas.read_csv(platform_csv) + G = nx.Graph() + G.add_edges_from([e for _, e in edges.drop_duplicates().iterrows()]) + print(f'Loaded a graph with {len(G)} vertices with {len(G.edges)} edges') + return G + + +def plot_graph(G, label=False, groups=[]): + # First, we compute the graph layout, i.e. the position of the nodes. + # The neato algorithm from graphviz is nicer, but this is an extra-dependency. + # The spring_layout is also not too bad. + try: + pos = nx.nx_agraph.graphviz_layout(G, 'neato') + except ImportError: + print('Warning: could not import pygraphviz, will use another layout algorithm.') + pos = nx.spring_layout(G, k=0.5, iterations=1000, seed=42) + plt.figure(figsize=(20, 15)) + plt.axis('off') + all_nodes = set(G) + # We then iterate on all the specified groups, to plot each of them in the right color. + # Note that the order of the groups is important here, as we are looking at substrings in the node names. + for i, grp in enumerate(groups): + nodes = {u for u in all_nodes if grp in u} + all_nodes -= nodes + nx.draw_networkx_nodes(G, pos, nodelist=nodes, node_size=50, node_color=colors[i], label=grp.replace('_', '')) + nx.draw_networkx_nodes(G, pos, nodelist=all_nodes, node_size=50, node_color=colors[-1], label='unknown') + # Finally we draw the edges, the (optional) labels, and the legend. + nx.draw_networkx_edges(G, pos, alpha=0.3) + if label: + nx.draw_networkx_labels(G, pos) + plt.legend(scatterpoints = 1) + + +def generate_svg(platform_csv): + G = load_graph(platform_csv) + plot_graph(G, label=False, groups=['router', 'link', 'cpu', '_node', 'supernode', 'cluster']) + img = platform_csv.replace('.csv', '.svg') + plt.savefig(img) + print(f'Generated file {img}') + + +if __name__ == '__main__': + if len(sys.argv) != 2: + sys.exit(f'Syntax: {sys.argv[0]} platform.cpp') + platform_cpp = sys.argv[1] + platform_so = compile_platform(platform_cpp) + platform_csv = dump_csv(platform_so) + generate_svg(platform_csv) diff --git a/examples/platforms/supernode.svg b/examples/platforms/supernode.svg new file mode 100644 index 0000000000..c6c6b52589 --- /dev/null +++ b/examples/platforms/supernode.svg @@ -0,0 +1,1777 @@ + + + + + + + + 2022-05-18T17:06:35.525617 + image/svg+xml + + + Matplotlib v3.5.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/smpi/CMakeLists.txt b/examples/smpi/CMakeLists.txt index 11a0a10884..406554822f 100644 --- a/examples/smpi/CMakeLists.txt +++ b/examples/smpi/CMakeLists.txt @@ -59,6 +59,7 @@ set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/energy/energy.tes ${CMAKE_CURRENT_SOURCE_DIR}/trace_simple/trace_simple.tesh ${CMAKE_CURRENT_SOURCE_DIR}/trace_call_location/trace_call_location.tesh ${CMAKE_CURRENT_SOURCE_DIR}/ampi_test/ampi_test.tesh + ${CMAKE_CURRENT_SOURCE_DIR}/mc/only_send_deterministic.tesh ${CMAKE_CURRENT_SOURCE_DIR}/mc/sendsend.tesh ${CMAKE_CURRENT_SOURCE_DIR}/replay/replay-override-replayer.tesh ${CMAKE_CURRENT_SOURCE_DIR}/replay/replay.tesh PARENT_SCOPE) diff --git a/include/xbt/config.hpp b/include/xbt/config.hpp index 47cbe7c30f..59dfd0aee6 100644 --- a/include/xbt/config.hpp +++ b/include/xbt/config.hpp @@ -20,6 +20,7 @@ #include #include +#include namespace simgrid { namespace config { @@ -221,13 +222,13 @@ public: * @param desc Flag description * @param value Flag initial/default value */ - Flag(const char* name, const char* desc, T value) : value_(value), name_(name) + Flag(const char* name, const char* desc, xbt::type_identity_t value) : value_(value), name_(name) { simgrid::config::bind_flag(value_, name, desc); } /** Constructor taking also an array of aliases for name */ - Flag(const char* name, std::initializer_list aliases, const char* desc, T value) + Flag(const char* name, std::initializer_list aliases, const char* desc, xbt::type_identity_t value) : value_(value), name_(name) { simgrid::config::bind_flag(value_, name, aliases, desc); @@ -236,13 +237,15 @@ public: /* A constructor accepting a callback that will be passed the parameter. * It can either return a boolean (informing whether the parameter is valid), or returning void. */ - template Flag(const char* name, const char* desc, T value, F callback) : value_(value), name_(name) + template + Flag(const char* name, const char* desc, xbt::type_identity_t value, F callback) : value_(value), name_(name) { simgrid::config::bind_flag(value_, name, desc, std::move(callback)); } template - Flag(const char* name, std::initializer_list aliases, const char* desc, T value, F callback) + Flag(const char* name, std::initializer_list aliases, const char* desc, xbt::type_identity_t value, + F callback) : value_(value), name_(name) { simgrid::config::bind_flag(value_, name, aliases, desc, std::move(callback)); @@ -252,8 +255,8 @@ public: * and producing an informative error message when an invalid value is passed, or when help is passed as a value. */ template - Flag(const char* name, const char* desc, T value, const std::map>& valid_values, - F callback) + Flag(const char* name, const char* desc, xbt::type_identity_t value, + const std::map>& valid_values, F callback) : value_(value), name_(name) { simgrid::config::bind_flag(value_, name, desc, valid_values, std::move(callback)); @@ -261,7 +264,7 @@ public: /* A constructor with everything */ template - Flag(const char* name, std::initializer_list aliases, const char* desc, T value, + Flag(const char* name, std::initializer_list aliases, const char* desc, xbt::type_identity_t value, const std::map>& valid_values, F callback) : value_(value), name_(name) { diff --git a/include/xbt/utility.hpp b/include/xbt/utility.hpp index d0d73022ff..03458064d3 100644 --- a/include/xbt/utility.hpp +++ b/include/xbt/utility.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include /** @brief Helper macro to declare enum class @@ -29,6 +30,18 @@ namespace simgrid { namespace xbt { +/** @brief Replacement for C++20's std::type_identity_t + */ +#if __cplusplus >= 201806L // __cpp_lib_type_identity +template using type_identity_t = typename std::type_identity_t; +#else +template struct type_identity { + using type = T; +}; + +template using type_identity_t = typename type_identity::type; +#endif + /** @brief A hash which works with more stuff * * It can hash pairs: the standard hash currently doesn't include this. diff --git a/src/kernel/activity/ActivityImpl.hpp b/src/kernel/activity/ActivityImpl.hpp index 68defdbbb9..f3dca0b2cc 100644 --- a/src/kernel/activity/ActivityImpl.hpp +++ b/src/kernel/activity/ActivityImpl.hpp @@ -24,11 +24,12 @@ XBT_DECLARE_ENUM_CLASS(State, WAITING, READY, RUNNING, DONE, CANCELED, FAILED, S class XBT_PUBLIC ActivityImpl { std::atomic_int_fast32_t refcount_{0}; - std::string name_ = ""; + std::string name_ = ""; actor::ActorImpl* actor_ = nullptr; State state_ = State::WAITING; /* State of the activity */ double start_time_ = -1.0; double finish_time_ = -1.0; + std::vector hosts_; public: virtual ~ActivityImpl(); @@ -45,6 +46,9 @@ protected: name_ = name; } void set_start_time(double start_time) { start_time_ = start_time; } + void clear_hosts() { hosts_.clear(); } + void add_host(s4u::Host* host) { hosts_.push_back(host); } + void set_hosts(const std::vector& hosts) { hosts_ = hosts; } public: const std::string& get_name() const { return name_; } @@ -81,6 +85,9 @@ public: virtual void finish() = 0; // Unlock all simcalls blocked on that activity, either because it was marked as done by // the model or because it terminated without waiting for the model + s4u::Host* get_host() const { return hosts_.front(); } + const std::vector& get_hosts() const { return hosts_; }; + void register_simcall(actor::Simcall* simcall); void unregister_simcall(actor::Simcall* simcall); void handle_activity_waitany(actor::Simcall* simcall); diff --git a/src/kernel/activity/CommImpl.cpp b/src/kernel/activity/CommImpl.cpp index 0dc962a8f6..e0272554cc 100644 --- a/src/kernel/activity/CommImpl.cpp +++ b/src/kernel/activity/CommImpl.cpp @@ -11,6 +11,7 @@ #define SIMIX_H_NO_DEPRECATED_WARNING // avoid deprecation warning on include (remove with XBT_ATTRIB_DEPRECATED_v333) #include +#include "src/kernel/EngineImpl.hpp" #include "src/kernel/activity/CommImpl.hpp" #include "src/kernel/activity/MailboxImpl.hpp" #include "src/kernel/actor/SimcallObserver.hpp" @@ -61,13 +62,17 @@ CommImpl& CommImpl::set_type(CommImplType type) CommImpl& CommImpl::set_source(s4u::Host* from) { + xbt_assert( from_ == nullptr ); from_ = from; + add_host(from); return *this; } CommImpl& CommImpl::set_destination(s4u::Host* to) { + xbt_assert( to_ == nullptr ); to_ = to; + add_host(to_); return *this; } @@ -107,6 +112,7 @@ CommImpl& CommImpl::set_dst_buff(unsigned char* buff, size_t* size) CommImpl& CommImpl::detach() { detached_ = true; + EngineImpl::get_instance()->get_maestro()->activities_.emplace_back(this); return *this; } diff --git a/src/kernel/activity/ExecImpl.cpp b/src/kernel/activity/ExecImpl.cpp index 4b2ad5c7e4..503e2c5d84 100644 --- a/src/kernel/activity/ExecImpl.cpp +++ b/src/kernel/activity/ExecImpl.cpp @@ -31,20 +31,20 @@ ExecImpl::ExecImpl() ExecImpl& ExecImpl::set_host(s4u::Host* host) { - hosts_.assign(1, host); + ActivityImpl::set_hosts({host}); return *this; } ExecImpl& ExecImpl::set_hosts(const std::vector& hosts) { - hosts_ = hosts; + ActivityImpl::set_hosts(hosts); return *this; } ExecImpl& ExecImpl::set_timeout(double timeout) { if (timeout >= 0 && not MC_is_active() && not MC_record_replay_is_active()) { - timeout_detector_.reset(hosts_.front()->get_cpu()->sleep(timeout)); + timeout_detector_.reset(get_host()->get_cpu()->sleep(timeout)); timeout_detector_->set_activity(this); } return *this; @@ -79,19 +79,19 @@ ExecImpl* ExecImpl::start() { set_state(State::RUNNING); if (not MC_is_active() && not MC_record_replay_is_active()) { - if (hosts_.size() == 1) { + if (get_hosts().size() == 1) { if (thread_count_ == 1) { - surf_action_ = hosts_.front()->get_cpu()->execution_start(flops_amounts_.front(), bound_); + surf_action_ = get_host()->get_cpu()->execution_start(flops_amounts_.front(), bound_); surf_action_->set_sharing_penalty(sharing_penalty_); } else { - auto host_model = hosts_.front()->get_netpoint()->get_englobing_zone()->get_host_model(); - surf_action_ = host_model->execute_thread(hosts_.front(), flops_amounts_.front(), thread_count_); + auto host_model = get_host()->get_netpoint()->get_englobing_zone()->get_host_model(); + surf_action_ = host_model->execute_thread(get_host(), flops_amounts_.front(), thread_count_); } surf_action_->set_category(get_tracing_category()); } else { // get the model from first host since we have only 1 by now - auto host_model = hosts_.front()->get_netpoint()->get_englobing_zone()->get_host_model(); - surf_action_ = host_model->execute_parallel(hosts_, flops_amounts_.data(), bytes_amounts_.data(), -1); + auto host_model = get_host()->get_netpoint()->get_englobing_zone()->get_host_model(); + surf_action_ = host_model->execute_parallel(get_hosts(), flops_amounts_.data(), bytes_amounts_.data(), -1); } surf_action_->set_activity(this); set_start_time(surf_action_->get_start_time()); @@ -145,7 +145,8 @@ ExecImpl& ExecImpl::update_sharing_penalty(double sharing_penalty) void ExecImpl::post() { xbt_assert(surf_action_ != nullptr); - if (std::any_of(hosts_.begin(), hosts_.end(), [](const s4u::Host* host) { return not host->is_on(); })) { + auto const& hosts = get_hosts(); + if (std::any_of(hosts.begin(), hosts.end(), [](const s4u::Host* host) { return not host->is_on(); })) { /* If one of the hosts running the synchro failed, notice it. This way, the asking * process can be killed if it runs on that host itself */ set_state(State::FAILED); @@ -223,7 +224,7 @@ void ExecImpl::finish() void ExecImpl::reset() { - hosts_.clear(); + clear_hosts(); bytes_amounts_.clear(); flops_amounts_.clear(); set_start_time(-1.0); diff --git a/src/kernel/activity/ExecImpl.hpp b/src/kernel/activity/ExecImpl.hpp index 079402b30f..22dfb5c00f 100644 --- a/src/kernel/activity/ExecImpl.hpp +++ b/src/kernel/activity/ExecImpl.hpp @@ -18,7 +18,6 @@ class XBT_PUBLIC ExecImpl : public ActivityImpl_T { nullptr, [](resource::Action* a) { a->unref(); }}; double sharing_penalty_ = 1.0; double bound_ = 0.0; - std::vector hosts_; std::vector flops_amounts_; std::vector bytes_amounts_; int thread_count_ = 1; @@ -36,15 +35,13 @@ public: ExecImpl& set_flops_amount(double flop_amount); ExecImpl& set_host(s4u::Host* host); - s4u::Host* get_host() const { return hosts_.front(); } - const std::vector& get_hosts() const { return hosts_; } ExecImpl& set_flops_amounts(const std::vector& flops_amounts); ExecImpl& set_bytes_amounts(const std::vector& bytes_amounts); ExecImpl& set_thread_count(int thread_count); ExecImpl& set_hosts(const std::vector& hosts); - unsigned int get_host_number() const { return static_cast(hosts_.size()); } + unsigned int get_host_number() const { return static_cast(get_hosts().size()); } double get_seq_remaining_ratio(); double get_par_remaining_ratio(); double get_remaining() const override; diff --git a/src/kernel/activity/MailboxImpl.cpp b/src/kernel/activity/MailboxImpl.cpp index c9d8c45004..7ee160c332 100644 --- a/src/kernel/activity/MailboxImpl.cpp +++ b/src/kernel/activity/MailboxImpl.cpp @@ -4,6 +4,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "src/kernel/activity/MailboxImpl.hpp" +#include "simgrid/msg.h" #include "src/kernel/activity/CommImpl.hpp" #include @@ -20,7 +21,7 @@ unsigned MailboxImpl::next_id_ = 0; MailboxImpl::~MailboxImpl() { - clear(); + clear(false); set_receiver(nullptr); } @@ -67,23 +68,28 @@ void MailboxImpl::remove(const CommImplPtr& comm) /** @brief Removes all communication activities from a mailbox */ -void MailboxImpl::clear() +void MailboxImpl::clear( bool do_post ) { + // CommImpl::cancel() will remove the comm from the mailbox.. for (auto comm : done_comm_queue_) { comm->cancel(); - comm->set_state(State::DST_HOST_FAILURE); + comm->set_state(State::FAILED); + if(do_post) + comm->post(); } done_comm_queue_.clear(); - // CommImpl::cancel() will remove the comm from the mailbox.. while (not comm_queue_.empty()) { auto comm = comm_queue_.back(); if (comm->get_state() == State::WAITING && not comm->is_detached()) { comm->cancel(); - comm->set_state(State::DST_HOST_FAILURE); + comm->set_state(State::FAILED); + if(do_post) + comm->post(); } else comm_queue_.pop_back(); } + xbt_assert(comm_queue_.empty() && done_comm_queue_.empty()); } CommImplPtr MailboxImpl::iprobe(int type, const std::function& match_fun, void* data) diff --git a/src/kernel/activity/MailboxImpl.hpp b/src/kernel/activity/MailboxImpl.hpp index 1c7b3117c2..353b963e73 100644 --- a/src/kernel/activity/MailboxImpl.hpp +++ b/src/kernel/activity/MailboxImpl.hpp @@ -54,7 +54,7 @@ public: void push(CommImplPtr comm); void push_done(CommImplPtr done_comm) { done_comm_queue_.push_back(done_comm); } void remove(const CommImplPtr& comm); - void clear(); + void clear(bool do_post ); CommImplPtr iprobe(int type, const std::function& match_fun, void* data); CommImplPtr find_matching_comm(CommImplType type, const std::function& match_fun, void* this_user_data, const CommImplPtr& my_synchro, bool done, bool remove_matching); diff --git a/src/kernel/resource/profile/ProfileBuilder.cpp b/src/kernel/resource/profile/ProfileBuilder.cpp index bbfb98d805..038a0ea251 100644 --- a/src/kernel/resource/profile/ProfileBuilder.cpp +++ b/src/kernel/resource/profile/ProfileBuilder.cpp @@ -213,7 +213,7 @@ public: } } - std::vector get_pattern() { return pattern; } + std::vector get_pattern() const { return pattern; } }; Profile* ProfileBuilder::from_string(const std::string& name, const std::string& input, double periodicity) diff --git a/src/s4u/s4u_Mailbox.cpp b/src/s4u/s4u_Mailbox.cpp index 7a266927cb..4621305dfd 100644 --- a/src/s4u/s4u_Mailbox.cpp +++ b/src/s4u/s4u_Mailbox.cpp @@ -136,7 +136,7 @@ Mailbox::iprobe(int type, const std::functionpimpl_->clear(); }); + kernel::actor::simcall_answered([this]() { this->pimpl_->clear(true); }); } } // namespace simgrid::s4u diff --git a/src/surf/HostImpl.cpp b/src/surf/HostImpl.cpp index 5e7d0da0e6..ef5b9f6546 100644 --- a/src/surf/HostImpl.cpp +++ b/src/surf/HostImpl.cpp @@ -95,13 +95,10 @@ void HostImpl::turn_off(const actor::ActorImpl* issuer) issuer->kill(&actor); } for (const auto& activity : EngineImpl::get_instance()->get_maestro()->activities_) { - auto* exec = dynamic_cast(activity.get()); - if (exec != nullptr) { - auto hosts = exec->get_hosts(); - if (std::find(hosts.begin(), hosts.end(), &piface_) != hosts.end()) { - exec->cancel(); - exec->set_state(activity::State::FAILED); - } + auto const& hosts = activity->get_hosts(); + if (std::find(hosts.begin(), hosts.end(), &piface_) != hosts.end()) { + activity->cancel(); + activity->set_state(activity::State::FAILED); } } // When a host is turned off, we want to keep only the actors that should restart for when it will boot again. diff --git a/src/xbt/xbt_replay.cpp b/src/xbt/xbt_replay.cpp index d135bb581c..f478b5ab66 100644 --- a/src/xbt/xbt_replay.cpp +++ b/src/xbt/xbt_replay.cpp @@ -16,7 +16,7 @@ namespace simgrid::xbt { static std::ifstream action_fs; std::unordered_map action_funs; -static std::unordered_map> action_queues; +static std::unordered_map>> action_queues; static void read_and_trim_line(std::ifstream& fs, std::string* line) { @@ -50,12 +50,12 @@ bool ReplayReader::get(ReplayAction* action) return not fs.eof(); } -static ReplayAction* get_action(const char* name) +static std::unique_ptr get_action(const char* name) { if (auto queue_elt = action_queues.find(std::string(name)); queue_elt != action_queues.end()) { if (auto& my_queue = queue_elt->second; not my_queue.empty()) { // Get something from my queue and return it - ReplayAction* action = my_queue.front(); + auto action = std::move(my_queue.front()); my_queue.pop(); return action; } @@ -69,7 +69,7 @@ static ReplayAction* get_action(const char* name) if (action_fs.eof()) break; /* we cannot split in place here because we parse&store several lines for the colleagues... */ - auto* action = new ReplayAction(); + auto action = std::make_unique(); boost::split(*action, action_line, boost::is_any_of(" \t"), boost::token_compress_on); // if it's for me, I'm done @@ -78,7 +78,7 @@ static ReplayAction* get_action(const char* name) return action; // else, I have to store it for the relevant colleague - action_queues[evtname].push(action); + action_queues[evtname].emplace(std::move(action)); } // end of file reached while searching in vain for more work @@ -114,11 +114,10 @@ int replay_runner(const char* actor_name, const char* trace_filename) "Passing nullptr to replay_runner() means that you want to use a shared trace, but you did not provide " "any. Please use xbt_replay_set_tracefile()."); while (true) { - simgrid::xbt::ReplayAction* evt = simgrid::xbt::get_action(actor_name); + auto evt = simgrid::xbt::get_action(actor_name); if (not evt) break; simgrid::xbt::handle_action(*evt); - delete evt; } action_queues.erase(actor_name_string); } else { // Should have got my trace file in argument diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index b1f7bf77a3..97661ce23f 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -3,14 +3,17 @@ set(EXTRA_DIST src/bindings/java/MANIFEST.in src/bindings/python/simgrid_python.cpp + src/dag/dax.dtd + src/dag/dax_dtd.c + src/dag/dax_dtd.h + src/include/catch.hpp src/include/mc/datatypes.h src/include/mc/mc.h src/include/simgrid/sg_config.hpp src/include/xbt/coverage.h - src/include/xbt/parmap.hpp src/include/xbt/mmalloc.h + src/include/xbt/parmap.hpp src/include/xbt/xbt_modinter.h - src/include/catch.hpp src/include/xxhash.hpp src/kernel/actor/Simcall.hpp src/kernel/resource/LinkImpl.hpp @@ -21,9 +24,6 @@ set(EXTRA_DIST src/mc/mc_mmu.hpp src/mc/mc_record.hpp src/msg/msg_private.hpp - src/dag/dax.dtd - src/dag/dax_dtd.c - src/dag/dax_dtd.h src/smpi/colls/coll_tuned_topo.hpp src/smpi/colls/colls_private.hpp src/smpi/colls/smpi_mvapich2_selector_stampede.hpp @@ -31,24 +31,24 @@ set(EXTRA_DIST src/smpi/include/smpi_utils.hpp src/smpi/smpi_main.c src/smpi/smpi_replay_main.cpp + src/surf/HostImpl.hpp src/surf/cpu_cas01.hpp src/surf/cpu_ti.hpp + src/surf/disk_s19.hpp + src/surf/host_clm03.hpp src/surf/network_cm02.hpp src/surf/network_constant.hpp + src/surf/network_ib.hpp src/surf/network_ns3.hpp src/surf/network_smpi.hpp - src/surf/network_ib.hpp src/surf/ns3/ns3_simulator.hpp + src/surf/ptask_L07.hpp + src/surf/surf_interface.hpp src/surf/xml/simgrid.dtd - src/surf/xml/simgrid_dtd.h src/surf/xml/simgrid_dtd.c + src/surf/xml/simgrid_dtd.h src/surf/xml/surfxml_sax_cb.cpp - src/surf/disk_s19.hpp - src/surf/surf_interface.hpp - src/surf/host_clm03.hpp - src/surf/HostImpl.hpp - src/surf/ptask_L07.hpp src/xbt/automaton/automaton_lexer.yy.c src/xbt/automaton/parserPromela.lex src/xbt/automaton/parserPromela.tab.cacc @@ -69,60 +69,15 @@ set(EXTRA_DIST src/xbt/mmalloc/mrealloc.c src/xbt/mmalloc/swag.c src/xbt/mmalloc/swag.h - examples/smpi/mc/only_send_deterministic.tesh ) set(SMPI_SRC - src/smpi/internals/instr_smpi.cpp - src/smpi/internals/smpi_bench.cpp - src/smpi/internals/smpi_memory.cpp - src/smpi/internals/smpi_shared.cpp - src/smpi/internals/smpi_deployment.cpp - src/smpi/internals/smpi_global.cpp - src/smpi/internals/smpi_host.cpp - src/smpi/internals/smpi_replay.cpp - src/smpi/internals/smpi_actor.cpp - src/smpi/internals/smpi_utils.cpp - src/smpi/internals/smpi_config.cpp - src/smpi/mpi/smpi_comm.cpp - src/smpi/mpi/smpi_datatype.cpp - src/smpi/mpi/smpi_datatype_derived.cpp - src/smpi/mpi/smpi_errhandler.cpp - src/smpi/mpi/smpi_f2c.cpp - src/smpi/mpi/smpi_file.cpp - src/smpi/mpi/smpi_group.cpp - src/smpi/mpi/smpi_info.cpp - src/smpi/mpi/smpi_keyvals.cpp - src/smpi/mpi/smpi_op.cpp - src/smpi/mpi/smpi_request.cpp - src/smpi/mpi/smpi_status.cpp - src/smpi/mpi/smpi_topo.cpp - src/smpi/mpi/smpi_win.cpp - src/smpi/include/smpi_actor.hpp - src/smpi/include/smpi_coll.hpp - src/smpi/include/smpi_comm.hpp - src/smpi/include/smpi_config.hpp - src/smpi/include/smpi_datatype_derived.hpp - src/smpi/include/smpi_datatype.hpp - src/smpi/include/smpi_errhandler.hpp - src/smpi/include/smpi_f2c.hpp - src/smpi/include/smpi_file.hpp - src/smpi/include/smpi_group.hpp - src/smpi/include/smpi_host.hpp - src/smpi/include/smpi_info.hpp - src/smpi/include/smpi_keyvals.hpp - src/smpi/include/smpi_op.hpp - src/smpi/include/smpi_replay.hpp - src/smpi/include/smpi_request.hpp - src/smpi/include/smpi_status.hpp - src/smpi/include/smpi_topo.hpp - src/smpi/include/smpi_win.hpp - src/smpi/plugins/ampi/ampi.cpp - src/smpi/plugins/ampi/ampi.hpp - src/smpi/plugins/ampi/instr_ampi.cpp - src/smpi/plugins/ampi/instr_ampi.hpp - src/surf/network_smpi.cpp - src/surf/network_ib.cpp + src/smpi/bindings/smpi_f77.cpp + src/smpi/bindings/smpi_f77_coll.cpp + src/smpi/bindings/smpi_f77_comm.cpp + src/smpi/bindings/smpi_f77_file.cpp + src/smpi/bindings/smpi_f77_request.cpp + src/smpi/bindings/smpi_f77_type.cpp src/smpi/bindings/smpi_mpi.cpp src/smpi/bindings/smpi_pmpi.cpp src/smpi/bindings/smpi_pmpi_coll.cpp @@ -135,20 +90,6 @@ set(SMPI_SRC src/smpi/bindings/smpi_pmpi_topo.cpp src/smpi/bindings/smpi_pmpi_type.cpp src/smpi/bindings/smpi_pmpi_win.cpp - src/smpi/bindings/smpi_f77.cpp - src/smpi/bindings/smpi_f77_coll.cpp - src/smpi/bindings/smpi_f77_comm.cpp - src/smpi/bindings/smpi_f77_file.cpp - src/smpi/bindings/smpi_f77_request.cpp - src/smpi/bindings/smpi_f77_type.cpp - src/smpi/colls/smpi_coll.cpp - src/smpi/colls/smpi_nbc_impl.cpp - src/smpi/colls/smpi_automatic_selector.cpp - src/smpi/colls/smpi_default_selector.cpp - src/smpi/colls/smpi_mpich_selector.cpp - src/smpi/colls/smpi_intel_mpi_selector.cpp - src/smpi/colls/smpi_openmpi_selector.cpp - src/smpi/colls/smpi_mvapich2_selector.cpp src/smpi/colls/allgather/allgather-2dmesh.cpp src/smpi/colls/allgather/allgather-3dmesh.cpp src/smpi/colls/allgather/allgather-GB.cpp @@ -157,9 +98,9 @@ set(SMPI_SRC src/smpi/colls/allgather/allgather-SMP-NTS.cpp src/smpi/colls/allgather/allgather-bruck.cpp src/smpi/colls/allgather/allgather-loosely-lr.cpp + src/smpi/colls/allgather/allgather-mvapich-smp.cpp src/smpi/colls/allgather/allgather-ompi-neighborexchange.cpp src/smpi/colls/allgather/allgather-pair.cpp - src/smpi/colls/allgather/allgather-mvapich-smp.cpp src/smpi/colls/allgather/allgather-rdb.cpp src/smpi/colls/allgather/allgather-rhv.cpp src/smpi/colls/allgather/allgather-ring.cpp @@ -173,6 +114,8 @@ set(SMPI_SRC src/smpi/colls/allgatherv/allgatherv-pair.cpp src/smpi/colls/allgatherv/allgatherv-ring.cpp src/smpi/colls/allreduce/allreduce-lr.cpp + src/smpi/colls/allreduce/allreduce-mvapich-rs.cpp + src/smpi/colls/allreduce/allreduce-mvapich-two-level.cpp src/smpi/colls/allreduce/allreduce-ompi-ring-segmented.cpp src/smpi/colls/allreduce/allreduce-rab-rdb.cpp src/smpi/colls/allreduce/allreduce-rab1.cpp @@ -185,12 +128,11 @@ set(SMPI_SRC src/smpi/colls/allreduce/allreduce-smp-rsag-lr.cpp src/smpi/colls/allreduce/allreduce-smp-rsag-rab.cpp src/smpi/colls/allreduce/allreduce-smp-rsag.cpp - src/smpi/colls/allreduce/allreduce-mvapich-rs.cpp - src/smpi/colls/allreduce/allreduce-mvapich-two-level.cpp - src/smpi/colls/alltoall/alltoall-basic-linear.cpp src/smpi/colls/alltoall/alltoall-2dmesh.cpp src/smpi/colls/alltoall/alltoall-3dmesh.cpp + src/smpi/colls/alltoall/alltoall-basic-linear.cpp src/smpi/colls/alltoall/alltoall-bruck.cpp + src/smpi/colls/alltoall/alltoall-mvapich-scatter-dest.cpp src/smpi/colls/alltoall/alltoall-pair-light-barrier.cpp src/smpi/colls/alltoall/alltoall-pair-mpi-barrier.cpp src/smpi/colls/alltoall/alltoall-pair-one-barrier.cpp @@ -200,7 +142,6 @@ set(SMPI_SRC src/smpi/colls/alltoall/alltoall-ring-mpi-barrier.cpp src/smpi/colls/alltoall/alltoall-ring-one-barrier.cpp src/smpi/colls/alltoall/alltoall-ring.cpp - src/smpi/colls/alltoall/alltoall-mvapich-scatter-dest.cpp src/smpi/colls/alltoallv/alltoallv-bruck.cpp src/smpi/colls/alltoallv/alltoallv-ompi-basic-linear.cpp src/smpi/colls/alltoallv/alltoallv-pair-light-barrier.cpp @@ -211,9 +152,9 @@ set(SMPI_SRC src/smpi/colls/alltoallv/alltoallv-ring-mpi-barrier.cpp src/smpi/colls/alltoallv/alltoallv-ring-one-barrier.cpp src/smpi/colls/alltoallv/alltoallv-ring.cpp - src/smpi/colls/barrier/barrier-ompi.cpp - src/smpi/colls/barrier/barrier-mvapich2-pair.cpp src/smpi/colls/barrier/barrier-mpich-smp.cpp + src/smpi/colls/barrier/barrier-mvapich2-pair.cpp + src/smpi/colls/barrier/barrier-ompi.cpp src/smpi/colls/bcast/bcast-NTSB.cpp src/smpi/colls/bcast/bcast-NTSL-Isend.cpp src/smpi/colls/bcast/bcast-NTSL.cpp @@ -226,31 +167,91 @@ set(SMPI_SRC src/smpi/colls/bcast/bcast-binomial-tree.cpp src/smpi/colls/bcast/bcast-flattree-pipeline.cpp src/smpi/colls/bcast/bcast-flattree.cpp + src/smpi/colls/bcast/bcast-mvapich-smp.cpp src/smpi/colls/bcast/bcast-ompi-pipeline.cpp src/smpi/colls/bcast/bcast-ompi-split-bintree.cpp - src/smpi/colls/bcast/bcast-mvapich-smp.cpp src/smpi/colls/bcast/bcast-scatter-LR-allgather.cpp src/smpi/colls/bcast/bcast-scatter-rdb-allgather.cpp src/smpi/colls/coll_tuned_topo.cpp src/smpi/colls/colls_global.cpp - src/smpi/colls/gather/gather-ompi.cpp src/smpi/colls/gather/gather-mvapich.cpp + src/smpi/colls/gather/gather-ompi.cpp src/smpi/colls/reduce/reduce-NTSL.cpp src/smpi/colls/reduce/reduce-arrival-pattern-aware.cpp src/smpi/colls/reduce/reduce-binomial.cpp src/smpi/colls/reduce/reduce-flat-tree.cpp + src/smpi/colls/reduce/reduce-mvapich-knomial.cpp + src/smpi/colls/reduce/reduce-mvapich-two-level.cpp src/smpi/colls/reduce/reduce-ompi.cpp + src/smpi/colls/reduce/reduce-rab.cpp src/smpi/colls/reduce/reduce-scatter-gather.cpp src/smpi/colls/reduce_scatter/reduce_scatter-mpich.cpp src/smpi/colls/reduce_scatter/reduce_scatter-ompi.cpp - src/smpi/colls/reduce/reduce-mvapich-knomial.cpp - src/smpi/colls/reduce/reduce-mvapich-two-level.cpp - src/smpi/colls/reduce/reduce-rab.cpp - src/smpi/colls/scatter/scatter-ompi.cpp src/smpi/colls/scatter/scatter-mvapich-two-level.cpp + src/smpi/colls/scatter/scatter-ompi.cpp + src/smpi/colls/smpi_automatic_selector.cpp + src/smpi/colls/smpi_coll.cpp + src/smpi/colls/smpi_default_selector.cpp + src/smpi/colls/smpi_intel_mpi_selector.cpp + src/smpi/colls/smpi_mpich_selector.cpp + src/smpi/colls/smpi_mvapich2_selector.cpp + src/smpi/colls/smpi_nbc_impl.cpp + src/smpi/colls/smpi_openmpi_selector.cpp + src/smpi/include/smpi_actor.hpp + src/smpi/include/smpi_coll.hpp + src/smpi/include/smpi_comm.hpp + src/smpi/include/smpi_config.hpp + src/smpi/include/smpi_datatype.hpp + src/smpi/include/smpi_datatype_derived.hpp + src/smpi/include/smpi_errhandler.hpp + src/smpi/include/smpi_f2c.hpp + src/smpi/include/smpi_file.hpp + src/smpi/include/smpi_group.hpp + src/smpi/include/smpi_host.hpp + src/smpi/include/smpi_info.hpp + src/smpi/include/smpi_keyvals.hpp + src/smpi/include/smpi_op.hpp + src/smpi/include/smpi_replay.hpp + src/smpi/include/smpi_request.hpp + src/smpi/include/smpi_status.hpp + src/smpi/include/smpi_topo.hpp + src/smpi/include/smpi_win.hpp + src/smpi/internals/instr_smpi.cpp + src/smpi/internals/smpi_actor.cpp + src/smpi/internals/smpi_bench.cpp + src/smpi/internals/smpi_config.cpp + src/smpi/internals/smpi_deployment.cpp + src/smpi/internals/smpi_global.cpp + src/smpi/internals/smpi_host.cpp + src/smpi/internals/smpi_memory.cpp + src/smpi/internals/smpi_replay.cpp + src/smpi/internals/smpi_shared.cpp + src/smpi/internals/smpi_utils.cpp + src/smpi/mpi/smpi_comm.cpp + src/smpi/mpi/smpi_datatype.cpp + src/smpi/mpi/smpi_datatype_derived.cpp + src/smpi/mpi/smpi_errhandler.cpp + src/smpi/mpi/smpi_f2c.cpp + src/smpi/mpi/smpi_file.cpp + src/smpi/mpi/smpi_group.cpp + src/smpi/mpi/smpi_info.cpp + src/smpi/mpi/smpi_keyvals.cpp + src/smpi/mpi/smpi_op.cpp + src/smpi/mpi/smpi_request.cpp + src/smpi/mpi/smpi_status.cpp + src/smpi/mpi/smpi_topo.cpp + src/smpi/mpi/smpi_win.cpp + src/smpi/plugins/ampi/ampi.cpp + src/smpi/plugins/ampi/ampi.hpp + src/smpi/plugins/ampi/instr_ampi.cpp + src/smpi/plugins/ampi/instr_ampi.hpp + src/surf/network_ib.cpp + src/surf/network_smpi.cpp ) set(XBT_SRC + src/xbt/OsSemaphore.hpp + src/xbt/PropertyHolder.cpp src/xbt/automaton/automaton.c src/xbt/automaton/automatonparse_promela.c src/xbt/backtrace.cpp @@ -265,8 +266,6 @@ set(XBT_SRC src/xbt/mallocator.c src/xbt/memory_map.cpp src/xbt/memory_map.hpp - src/xbt/OsSemaphore.hpp - src/xbt/PropertyHolder.cpp src/xbt/parmap.cpp src/xbt/random.cpp src/xbt/snprintf.c @@ -289,16 +288,21 @@ else() set(EXTRA_DIST ${EXTRA_DIST} src/xbt/mmalloc/mm.c) endif() -set(NS3_SRC src/surf/network_ns3.cpp - src/surf/ns3/ns3_simulator.cpp ) +set(NS3_SRC + src/surf/network_ns3.cpp + src/surf/ns3/ns3_simulator.cpp + ) set(SURF_SRC - src/kernel/lmm/fair_bottleneck.hpp + src/kernel/EngineImpl.cpp + src/kernel/EngineImpl.hpp + + src/kernel/lmm/System.cpp + src/kernel/lmm/System.hpp src/kernel/lmm/fair_bottleneck.cpp - src/kernel/lmm/maxmin.hpp + src/kernel/lmm/fair_bottleneck.hpp src/kernel/lmm/maxmin.cpp - src/kernel/lmm/System.hpp - src/kernel/lmm/System.cpp + src/kernel/lmm/maxmin.hpp src/kernel/resource/Action.cpp src/kernel/resource/CpuImpl.cpp @@ -310,16 +314,16 @@ set(SURF_SRC src/kernel/resource/Resource.hpp src/kernel/resource/SplitDuplexLinkImpl.cpp src/kernel/resource/StandardLinkImpl.cpp - src/kernel/resource/VirtualMachineImpl.hpp src/kernel/resource/VirtualMachineImpl.cpp + src/kernel/resource/VirtualMachineImpl.hpp src/kernel/resource/WifiLinkImpl.cpp src/kernel/resource/profile/Event.hpp src/kernel/resource/profile/FutureEvtSet.cpp src/kernel/resource/profile/FutureEvtSet.hpp - src/kernel/resource/profile/ProfileBuilder.cpp src/kernel/resource/profile/Profile.cpp src/kernel/resource/profile/Profile.hpp + src/kernel/resource/profile/ProfileBuilder.cpp src/kernel/resource/profile/StochasticDatedValue.cpp src/kernel/resource/profile/StochasticDatedValue.hpp @@ -340,68 +344,57 @@ set(SURF_SRC src/kernel/timer/Timer.cpp - src/kernel/EngineImpl.cpp - src/kernel/EngineImpl.hpp - + src/surf/HostImpl.cpp src/surf/cpu_cas01.cpp src/surf/cpu_ti.cpp src/surf/disk_s19.cpp + src/surf/host_clm03.cpp src/surf/network_cm02.cpp src/surf/network_constant.cpp + src/surf/ptask_L07.cpp src/surf/sg_platf.cpp src/surf/surf_interface.cpp src/surf/xml/platf.hpp src/surf/xml/platf_private.hpp - src/surf/xml/surfxml_sax_cb.cpp src/surf/xml/surfxml_parseplatf.cpp - src/surf/host_clm03.cpp - src/surf/HostImpl.cpp - src/surf/ptask_L07.cpp + src/surf/xml/surfxml_sax_cb.cpp ) if (Eigen3_FOUND) set(SURF_SRC ${SURF_SRC} - src/kernel/lmm/bmf.hpp - src/kernel/lmm/bmf.cpp) + src/kernel/lmm/bmf.cpp + src/kernel/lmm/bmf.hpp) else() set(EXTRA_DIST ${EXTRA_DIST} - src/kernel/lmm/bmf.hpp - src/kernel/lmm/bmf.cpp) + src/kernel/lmm/bmf.cpp + src/kernel/lmm/bmf.hpp) endif() set(PLUGINS_SRC src/plugins/ProducerConsumer.cpp src/plugins/chaos_monkey.cpp + src/plugins/file_system/s4u_FileSystem.cpp src/plugins/host_dvfs.cpp src/plugins/host_energy.cpp + src/plugins/host_load.cpp src/plugins/link_energy.cpp src/plugins/link_energy_wifi.cpp - src/plugins/host_load.cpp src/plugins/link_load.cpp - src/plugins/file_system/s4u_FileSystem.cpp - src/plugins/vm/dirty_page_tracking.cpp src/plugins/vm/VmLiveMigration.cpp src/plugins/vm/VmLiveMigration.hpp + src/plugins/vm/dirty_page_tracking.cpp ) set(SIMIX_SRC - src/kernel/context/Context.cpp - src/kernel/context/Context.hpp - src/kernel/context/ContextRaw.cpp - src/kernel/context/ContextRaw.hpp - src/kernel/context/ContextSwapped.cpp - src/kernel/context/ContextSwapped.hpp - src/kernel/context/ContextThread.cpp - src/kernel/context/ContextThread.hpp src/kernel/activity/ActivityImpl.cpp src/kernel/activity/ActivityImpl.hpp src/kernel/activity/BarrierImpl.cpp src/kernel/activity/BarrierImpl.hpp - src/kernel/activity/ConditionVariableImpl.cpp - src/kernel/activity/ConditionVariableImpl.hpp src/kernel/activity/CommImpl.cpp src/kernel/activity/CommImpl.hpp + src/kernel/activity/ConditionVariableImpl.cpp + src/kernel/activity/ConditionVariableImpl.hpp src/kernel/activity/ExecImpl.cpp src/kernel/activity/ExecImpl.hpp src/kernel/activity/IoImpl.cpp @@ -425,6 +418,14 @@ set(SIMIX_SRC src/kernel/actor/SimcallObserver.hpp src/kernel/actor/SynchroObserver.cpp src/kernel/actor/SynchroObserver.hpp + src/kernel/context/Context.cpp + src/kernel/context/Context.hpp + src/kernel/context/ContextRaw.cpp + src/kernel/context/ContextRaw.hpp + src/kernel/context/ContextSwapped.cpp + src/kernel/context/ContextSwapped.hpp + src/kernel/context/ContextThread.cpp + src/kernel/context/ContextThread.hpp src/simix/libsmx.cpp src/simix/smx_context.cpp ) @@ -433,21 +434,21 @@ set(SIMIX_SRC if (HAVE_BOOST_CONTEXTS) set(SIMIX_SRC ${SIMIX_SRC} - src/kernel/context/ContextBoost.hpp - src/kernel/context/ContextBoost.cpp) + src/kernel/context/ContextBoost.cpp + src/kernel/context/ContextBoost.hpp) else() set(EXTRA_DIST ${EXTRA_DIST} - src/kernel/context/ContextBoost.hpp - src/kernel/context/ContextBoost.cpp) + src/kernel/context/ContextBoost.cpp + src/kernel/context/ContextBoost.hpp) endif() set(S4U_SRC - src/s4u/s4u_Actor.cpp src/s4u/s4u_Activity.cpp + src/s4u/s4u_Actor.cpp src/s4u/s4u_Barrier.cpp - src/s4u/s4u_ConditionVariable.cpp src/s4u/s4u_Comm.cpp + src/s4u/s4u_ConditionVariable.cpp src/s4u/s4u_Disk.cpp src/s4u/s4u_Engine.cpp src/s4u/s4u_Exec.cpp @@ -469,8 +470,8 @@ set(SIMGRID_SRC ) set(MSG_SRC - src/msg/msg_global.cpp src/msg/msg_comm.cpp + src/msg/msg_global.cpp src/msg/msg_legacy.cpp src/msg/msg_process.cpp src/msg/msg_task.cpp @@ -481,6 +482,8 @@ set(DAG_SRC ) set(JMSG_C_SRC + src/bindings/java/JavaContext.cpp + src/bindings/java/JavaContext.hpp src/bindings/java/jmsg.cpp src/bindings/java/jmsg.hpp src/bindings/java/jmsg_as.cpp @@ -499,9 +502,7 @@ set(JMSG_C_SRC src/bindings/java/jmsg_vm.h src/bindings/java/jxbt_utilities.cpp src/bindings/java/jxbt_utilities.hpp - src/bindings/java/JavaContext.cpp - src/bindings/java/JavaContext.hpp -) + ) set(JMSG_JAVA_SRC src/bindings/java/org/simgrid/NativeLib.java @@ -523,12 +524,12 @@ set(JMSG_JAVA_SRC src/bindings/java/org/simgrid/msg/TimeoutException.java src/bindings/java/org/simgrid/msg/TransferFailureException.java src/bindings/java/org/simgrid/msg/VM.java -) + ) set(JTRACE_C_SRC src/bindings/java/jtrace.cpp src/bindings/java/jtrace.h -) + ) set(JTRACE_JAVA_SRC src/bindings/java/org/simgrid/trace/Trace.java) @@ -549,49 +550,49 @@ set(TRACING_SRC src/instr/instr_paje_values.hpp src/instr/instr_platform.cpp src/instr/instr_private.hpp - src/instr/instr_smpi.hpp src/instr/instr_resource_utilization.cpp + src/instr/instr_smpi.hpp ) set(MC_SRC_BASE src/mc/mc_base.cpp src/mc/mc_base.hpp - src/mc/mc_record.hpp - src/mc/mc_replay.hpp - src/mc/mc_record.cpp src/mc/mc_config.cpp src/mc/mc_config.hpp src/mc/mc_global.cpp + src/mc/mc_record.cpp + src/mc/mc_record.hpp + src/mc/mc_replay.hpp src/mc/transition/Transition.cpp ) set(MC_SRC - src/mc/explo/Exploration.hpp src/mc/explo/CommunicationDeterminismChecker.cpp src/mc/explo/DFSExplorer.cpp src/mc/explo/DFSExplorer.hpp + src/mc/explo/Exploration.hpp src/mc/explo/LivenessChecker.cpp src/mc/explo/LivenessChecker.hpp src/mc/explo/UdporChecker.cpp src/mc/explo/UdporChecker.hpp - src/mc/inspect/DwarfExpression.hpp src/mc/inspect/DwarfExpression.cpp - src/mc/inspect/Frame.hpp + src/mc/inspect/DwarfExpression.hpp src/mc/inspect/Frame.cpp - src/mc/inspect/LocationList.hpp + src/mc/inspect/Frame.hpp src/mc/inspect/LocationList.cpp - src/mc/inspect/ObjectInformation.hpp + src/mc/inspect/LocationList.hpp src/mc/inspect/ObjectInformation.cpp + src/mc/inspect/ObjectInformation.hpp src/mc/inspect/Type.hpp src/mc/inspect/Variable.hpp - src/mc/inspect/mc_dwarf.hpp src/mc/inspect/mc_dwarf.cpp + src/mc/inspect/mc_dwarf.hpp src/mc/inspect/mc_dwarf_attrnames.cpp src/mc/inspect/mc_dwarf_tagnames.cpp src/mc/inspect/mc_member.cpp - src/mc/inspect/mc_unw.hpp src/mc/inspect/mc_unw.cpp + src/mc/inspect/mc_unw.hpp src/mc/inspect/mc_unw_vmread.cpp src/mc/remote/AppSide.cpp @@ -600,52 +601,53 @@ set(MC_SRC src/mc/remote/Channel.hpp src/mc/remote/CheckerSide.cpp src/mc/remote/CheckerSide.hpp - src/mc/remote/RemoteProcess.hpp src/mc/remote/RemoteProcess.cpp + src/mc/remote/RemoteProcess.hpp src/mc/remote/RemotePtr.hpp src/mc/remote/mc_protocol.h - src/mc/sosp/PageStore.hpp - src/mc/sosp/PageStore.cpp - src/mc/sosp/ChunkedData.hpp src/mc/sosp/ChunkedData.cpp + src/mc/sosp/ChunkedData.hpp + src/mc/sosp/PageStore.cpp + src/mc/sosp/PageStore.hpp src/mc/sosp/Region.cpp src/mc/sosp/Region.hpp - src/mc/sosp/Snapshot.hpp src/mc/sosp/Snapshot.cpp + src/mc/sosp/Snapshot.hpp + + src/mc/transition/Transition.hpp + src/mc/transition/TransitionAny.cpp + src/mc/transition/TransitionAny.hpp + src/mc/transition/TransitionComm.cpp + src/mc/transition/TransitionComm.hpp + src/mc/transition/TransitionRandom.cpp + src/mc/transition/TransitionRandom.hpp + src/mc/transition/TransitionSynchro.cpp + src/mc/transition/TransitionSynchro.hpp src/mc/AddressSpace.hpp - src/mc/ModelChecker.hpp src/mc/ModelChecker.cpp - src/mc/mc_forward.hpp + src/mc/ModelChecker.hpp src/mc/Session.cpp src/mc/Session.hpp - src/mc/mc_pattern.hpp - src/mc/compare.cpp + src/mc/VisitedState.cpp + src/mc/VisitedState.hpp src/mc/api.cpp src/mc/api.hpp - src/mc/mc_hash.hpp + src/mc/api/State.cpp + src/mc/api/State.hpp + src/mc/compare.cpp + src/mc/mc_client_api.cpp + src/mc/mc_exit.hpp + src/mc/mc_forward.hpp src/mc/mc_hash.cpp + src/mc/mc_hash.hpp src/mc/mc_ignore.hpp - src/mc/mc_record.cpp + src/mc/mc_pattern.hpp src/mc/mc_private.hpp + src/mc/mc_record.cpp src/mc/mc_safety.hpp - src/mc/VisitedState.cpp - src/mc/VisitedState.hpp - src/mc/mc_client_api.cpp src/mc/mc_smx.cpp - src/mc/mc_exit.hpp - src/mc/api/State.hpp - src/mc/api/State.cpp - src/mc/transition/Transition.hpp - src/mc/transition/TransitionAny.cpp - src/mc/transition/TransitionAny.hpp - src/mc/transition/TransitionComm.cpp - src/mc/transition/TransitionComm.hpp - src/mc/transition/TransitionRandom.cpp - src/mc/transition/TransitionRandom.hpp - src/mc/transition/TransitionSynchro.cpp - src/mc/transition/TransitionSynchro.hpp src/mc/udpor_global.cpp src/mc/udpor_global.hpp ) @@ -988,9 +990,9 @@ set(DOC_TOOLS # these files get copied automatically to the html documentation set(DOC_IMG - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/eclipseScreenShot.png ${CMAKE_HOME_DIRECTORY}/doc/webcruft/Paje_MSG_screenshot.jpg ${CMAKE_HOME_DIRECTORY}/doc/webcruft/Paje_MSG_screenshot_thn.jpg + ${CMAKE_HOME_DIRECTORY}/doc/webcruft/eclipseScreenShot.png ${CMAKE_HOME_DIRECTORY}/doc/webcruft/output.goal.pdf ) @@ -998,8 +1000,8 @@ set(bin_files ${bin_files} src/smpi/smpicc.in src/smpi/smpicxx.in - src/smpi/smpiff.in src/smpi/smpif90.in + src/smpi/smpiff.in src/smpi/smpirun.in src/smpi/smpitools.sh ) @@ -1008,26 +1010,26 @@ set(txt_files ${txt_files} AUTHORS COPYING - README.md ChangeLog LICENSE-LGPL-2.1 NEWS + README.md ) # The list of cmake build directories is constructed from the following list. # Add your CMakeLists file here to see your subdir built. set(CMAKEFILES_TXT - examples/platforms/CMakeLists.txt examples/c/CMakeLists.txt examples/cpp/CMakeLists.txt + examples/deprecated/java/CMakeLists.txt + examples/platforms/CMakeLists.txt + examples/python/CMakeLists.txt examples/smpi/CMakeLists.txt - examples/smpi/comm_dynamic_costs/CMakeLists.txt examples/smpi/NAS/CMakeLists.txt - examples/smpi/smpi_s4u_masterworker/CMakeLists.txt + examples/smpi/comm_dynamic_costs/CMakeLists.txt examples/smpi/replay_multiple/CMakeLists.txt examples/smpi/replay_multiple_manual_deploy/CMakeLists.txt - examples/python/CMakeLists.txt - examples/deprecated/java/CMakeLists.txt + examples/smpi/smpi_s4u_masterworker/CMakeLists.txt teshsuite/java/CMakeLists.txt teshsuite/kernel/CMakeLists.txt @@ -1038,8 +1040,6 @@ set(CMAKEFILES_TXT teshsuite/python/CMakeLists.txt teshsuite/s4u/CMakeLists.txt teshsuite/smpi/CMakeLists.txt - teshsuite/surf/CMakeLists.txt - teshsuite/xbt/CMakeLists.txt teshsuite/smpi/MBI/CMakeLists.txt teshsuite/smpi/mpich3-test/CMakeLists.txt @@ -1050,31 +1050,33 @@ set(CMAKEFILES_TXT teshsuite/smpi/mpich3-test/errhan/CMakeLists.txt teshsuite/smpi/mpich3-test/f77/attr/CMakeLists.txt teshsuite/smpi/mpich3-test/f77/coll/CMakeLists.txt - teshsuite/smpi/mpich3-test/f77/info/CMakeLists.txt teshsuite/smpi/mpich3-test/f77/comm/CMakeLists.txt teshsuite/smpi/mpich3-test/f77/datatype/CMakeLists.txt teshsuite/smpi/mpich3-test/f77/ext/CMakeLists.txt + teshsuite/smpi/mpich3-test/f77/info/CMakeLists.txt teshsuite/smpi/mpich3-test/f77/init/CMakeLists.txt teshsuite/smpi/mpich3-test/f77/pt2pt/CMakeLists.txt - teshsuite/smpi/mpich3-test/f77/util/CMakeLists.txt - teshsuite/smpi/mpich3-test/f77/topo/CMakeLists.txt teshsuite/smpi/mpich3-test/f77/rma/CMakeLists.txt + teshsuite/smpi/mpich3-test/f77/topo/CMakeLists.txt + teshsuite/smpi/mpich3-test/f77/util/CMakeLists.txt teshsuite/smpi/mpich3-test/f90/coll/CMakeLists.txt teshsuite/smpi/mpich3-test/f90/datatype/CMakeLists.txt teshsuite/smpi/mpich3-test/f90/info/CMakeLists.txt teshsuite/smpi/mpich3-test/f90/init/CMakeLists.txt teshsuite/smpi/mpich3-test/f90/pt2pt/CMakeLists.txt - teshsuite/smpi/mpich3-test/f90/util/CMakeLists.txt teshsuite/smpi/mpich3-test/f90/rma/CMakeLists.txt + teshsuite/smpi/mpich3-test/f90/util/CMakeLists.txt teshsuite/smpi/mpich3-test/group/CMakeLists.txt teshsuite/smpi/mpich3-test/info/CMakeLists.txt - teshsuite/smpi/mpich3-test/io/CMakeLists.txt teshsuite/smpi/mpich3-test/init/CMakeLists.txt + teshsuite/smpi/mpich3-test/io/CMakeLists.txt + teshsuite/smpi/mpich3-test/perf/CMakeLists.txt teshsuite/smpi/mpich3-test/pt2pt/CMakeLists.txt - teshsuite/smpi/mpich3-test/topo/CMakeLists.txt teshsuite/smpi/mpich3-test/rma/CMakeLists.txt - teshsuite/smpi/mpich3-test/perf/CMakeLists.txt + teshsuite/smpi/mpich3-test/topo/CMakeLists.txt + teshsuite/surf/CMakeLists.txt + teshsuite/xbt/CMakeLists.txt tools/CMakeLists.txt tools/graphicator/CMakeLists.txt tools/tesh/CMakeLists.txt @@ -1083,27 +1085,31 @@ set(CMAKEFILES_TXT set(CMAKE_SOURCE_FILES CMakeLists.txt FindSimGrid.cmake - tools/cmake/Tests.cmake + MANIFEST.in + MANIFEST.in.in + setup.py tools/cmake/CTestConfig.cmake tools/cmake/CTestCustom.cmake tools/cmake/DefinePackages.cmake tools/cmake/Distrib.cmake - tools/cmake/Flags.cmake tools/cmake/Documentation.cmake - tools/cmake/MaintainerMode.cmake + tools/cmake/Flags.cmake tools/cmake/Java.cmake + tools/cmake/MaintainerMode.cmake tools/cmake/MakeLib.cmake tools/cmake/MakeLibWin.cmake tools/cmake/Modules/FindGraphviz.cmake tools/cmake/Modules/FindLibdw.cmake tools/cmake/Modules/FindLibelf.cmake - tools/cmake/Modules/FindLibunwind.cmake tools/cmake/Modules/FindLibevent.cmake + tools/cmake/Modules/FindLibunwind.cmake tools/cmake/Modules/FindNS3.cmake tools/cmake/Modules/FindPAPI.cmake - tools/cmake/Modules/pybind11Config.cmake tools/cmake/Modules/FindValgrind.cmake + tools/cmake/Modules/pybind11Config.cmake tools/cmake/Option.cmake + tools/cmake/Tests.cmake + tools/cmake/cross-mingw.cmake tools/cmake/scripts/fixup_simgrid_dtd_l.pl tools/cmake/scripts/my_valgrind.pl tools/cmake/scripts/update_tesh.pl @@ -1112,85 +1118,83 @@ set(CMAKE_SOURCE_FILES tools/cmake/test_prog/prog_stackgrowth.c tools/cmake/test_prog/prog_stacksetup.c tools/cmake/test_prog/prog_tsan.cpp - tools/cmake/cross-mingw.cmake tools/simgrid-monkey tools/smpi/generate_smpi_defines.pl + tools/stack-cleaner/README tools/stack-cleaner/as - tools/stack-cleaner/cc tools/stack-cleaner/c++ - tools/stack-cleaner/fortran + tools/stack-cleaner/cc tools/stack-cleaner/clean-stack-filter tools/stack-cleaner/compiler-wrapper - tools/stack-cleaner/README - - setup.py - MANIFEST.in - MANIFEST.in.in + tools/stack-cleaner/fortran ) set(PLATFORMS_EXAMPLES - examples/platforms/bypassZoneRoute.xml examples/platforms/bypassRoute.xml + examples/platforms/bypassZoneRoute.xml examples/platforms/cloud.xml - examples/platforms/cluster_backbone.xml - examples/platforms/cluster_backbone.svg - examples/platforms/cluster_multi.xml examples/platforms/cluster_and_one_host.xml - examples/platforms/cluster_crossbar.xml + examples/platforms/cluster_backbone.svg + examples/platforms/cluster_backbone.xml examples/platforms/cluster_crossbar.svg - examples/platforms/cluster_fat_tree.xml + examples/platforms/cluster_crossbar.xml + examples/platforms/cluster_dragonfly.svg + examples/platforms/cluster_dragonfly.xml examples/platforms/cluster_fat_tree.svg - examples/platforms/cluster_torus.xml + examples/platforms/cluster_fat_tree.xml + examples/platforms/cluster_multi.xml examples/platforms/cluster_torus.svg - examples/platforms/cluster_dragonfly.xml - examples/platforms/cluster_dragonfly.svg - examples/platforms/crosstraffic.xml - examples/platforms/optorsim/gridpp_grid_2004.conf - examples/platforms/optorsim/lcg_sept2004_grid.conf - examples/platforms/optorsim/transform_optorsim_platform.pl + examples/platforms/cluster_torus.xml examples/platforms/config.xml examples/platforms/config_tracing.xml - examples/platforms/model_checker_platform.xml - examples/platforms/profiles/fafard_state.profile - examples/platforms/profiles/faulty_host.profile - examples/platforms/profiles/ginette_state.profile - examples/platforms/profiles/jupiter_speed.profile - examples/platforms/profiles/jupiter_state.profile - examples/platforms/profiles/link1_bandwidth.profile - examples/platforms/profiles/link1_latency.profile - examples/platforms/profiles/link3_state.profile - examples/platforms/profiles/link4_state.profile - examples/platforms/profiles/trace_A_failure.txt - examples/platforms/profiles/trace_A.txt - examples/platforms/profiles/trace_B.txt + examples/platforms/crosstraffic.xml examples/platforms/data_center.xml examples/platforms/dogbone.xml examples/platforms/energy_boot.xml - examples/platforms/energy_platform.xml examples/platforms/energy_cluster.xml + examples/platforms/energy_platform.xml examples/platforms/faulty_host.xml examples/platforms/g5k.xml examples/platforms/griffon.cpp examples/platforms/griffon.xml examples/platforms/hosts_with_disks.xml examples/platforms/meta_cluster.xml + examples/platforms/model_checker_platform.xml examples/platforms/multicore_machine.xml examples/platforms/ns3-big-cluster.xml examples/platforms/onelink.xml - examples/platforms/ptask_L07.xml + examples/platforms/optorsim/gridpp_grid_2004.conf + examples/platforms/optorsim/lcg_sept2004_grid.conf + examples/platforms/optorsim/transform_optorsim_platform.pl + examples/platforms/profiles/fafard_state.profile + examples/platforms/profiles/faulty_host.profile + examples/platforms/profiles/ginette_state.profile + examples/platforms/profiles/jupiter_speed.profile + examples/platforms/profiles/jupiter_state.profile + examples/platforms/profiles/link1_bandwidth.profile + examples/platforms/profiles/link1_latency.profile + examples/platforms/profiles/link3_state.profile + examples/platforms/profiles/link4_state.profile + examples/platforms/profiles/trace_A.txt + examples/platforms/profiles/trace_A_failure.txt + examples/platforms/profiles/trace_B.txt examples/platforms/prop.xml - examples/platforms/routing_cluster.xml + examples/platforms/ptask_L07.xml examples/platforms/routing_cluster.cpp + examples/platforms/routing_cluster.xml examples/platforms/simulacrum_7_hosts.xml - examples/platforms/storage/content/small_content.txt - examples/platforms/storage/content/storage_content.txt examples/platforms/small_platform.xml - examples/platforms/small_platform_routing_none.xml examples/platforms/small_platform_failures.xml examples/platforms/small_platform_fatpipe.xml examples/platforms/small_platform_one_link_routes.xml examples/platforms/small_platform_profile.xml + examples/platforms/small_platform_routing_none.xml examples/platforms/small_platform_with_routers.xml + examples/platforms/storage/content/small_content.txt + examples/platforms/storage/content/storage_content.txt + examples/platforms/supernode.cpp + examples/platforms/supernode.py + examples/platforms/supernode.svg examples/platforms/syscoord/generate_peer_platform.pl examples/platforms/syscoord/median_harvard.syscoord examples/platforms/syscoord/median_meridian.syscoord @@ -1198,13 +1202,13 @@ set(PLATFORMS_EXAMPLES examples/platforms/three_multicore_hosts.xml examples/platforms/two_hosts.xml examples/platforms/two_hosts_platform_shared.xml - examples/platforms/two_hosts_profiles.xml examples/platforms/two_hosts_platform_with_availability_included.xml + examples/platforms/two_hosts_profiles.xml examples/platforms/two_peers.xml examples/platforms/vivaldi.xml + examples/platforms/wifi.xml examples/platforms/wifi_energy.xml examples/platforms/wifi_ns3.xml - examples/platforms/wifi.xml ) set(generated_src_files