/* 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. */
-#ifndef SURF_ROUTING_CLUSTER_FAT_TREE_HPP_
-#define SURF_ROUTING_CLUSTER_FAT_TREE_HPP_
+#ifndef SIMGRID_ROUTING_CLUSTER_FAT_TREE_HPP_
+#define SIMGRID_ROUTING_CLUSTER_FAT_TREE_HPP_
#include "src/surf/AsCluster.hpp"
namespace simgrid {
-namespace surf {
-
-/** \file surf_routing_cluster_fat_tree.cpp
- * The class AsClusterFatTree describes PGFT, as introduced by Eitan Zahavi
- * in "D-Mod-K Routing Providing Non-Blocking Traffic for Shift Permutations
- * on Real Life Fat Trees" (2010). RLFT are PGFT with some restrictions to
- * address real world constraints, which are not currently enforced.
- */
+namespace routing {
class XBT_PRIVATE FatTreeLink;
-/** \brief A node in a fat tree.
+/** \brief A node in a fat tree (@ref AsClusterFatTree).
* A FatTreeNode can either be a switch or a processing node. Switches are
* identified by a negative ID. This class is closely related to fat
*/
-/** \brief Link in a fat tree.
+/** \brief Link in a fat tree (@ref AsClusterFatTree).
*
* Represents a single, duplex link in a fat tree. This is necessary to have a tree.
* It is equivalent to a physical link.
FatTreeNode *downNode;
};
-
/**
* \class AsClusterFatTree
*
* \brief Fat tree representation and routing.
*
- * Generate fat trees according to the topology asked for. Almost everything
- * is based on the work of Eitan Zahavi in "D-Mod-K Routing Providing
- * Non-Blocking Traffic for Shift Permutations on Real Life Fat Trees" (2010).
+ * Generate fat trees according to the topology asked for, according to:
+ * Eitan Zahavi, D-Mod-K Routing Providing Non-Blocking Traffic for Shift
+ * Permutations on Real Life Fat Trees (2010).
+ *
+ * RLFT are PGFT with some restrictions to address real world constraints,
+ * which are not currently enforced.
*
* The exact topology is described in the mandatory topo_parameters
* field, and follow the "h ; m_h, ..., m_1 ; w_h, ..., w_1 ; p_h, ..., p_1" format.
*/
class XBT_PRIVATE AsClusterFatTree : public AsCluster {
public:
- AsClusterFatTree(const char*name);
- ~AsClusterFatTree();
- virtual void getRouteAndLatency(NetCard *src, NetCard *dst,
+ explicit AsClusterFatTree(const char*name);
+ ~AsClusterFatTree() override;
+ void getRouteAndLatency(NetCard *src, NetCard *dst,
sg_platf_route_cbarg_t into,
double *latency) override;
* tree is generated by calling generateLabels(), generateSwitches() and
* then connection all nodes between them, using their label.
*/
- virtual void create_links();
+ void seal() override;
/** \brief Read the parameters in topo_parameters field.
*
* It will also store the cluster for future use.