unsigned int group_;
unsigned int chassis_;
unsigned int blade_;
- surf::Link** blueLinks_ = nullptr;
- surf::Link** blackLinks_ = nullptr;
- surf::Link** greenLinks_ = nullptr;
- surf::Link** myNodes_ = nullptr;
+ surf::LinkImpl** blueLinks_ = nullptr;
+ surf::LinkImpl** blackLinks_ = nullptr;
+ surf::LinkImpl** greenLinks_ = nullptr;
+ surf::LinkImpl** myNodes_ = nullptr;
DragonflyRouter(int i, int j, int k);
~DragonflyRouter();
};
-/**
- * \class AsClusterDragonfly
- *
- * \brief Dragonfly representation and routing.
+/** @ingroup ROUTING_API
+ * @brief NetZone using a Dragonfly topology
*
* Generate dragonfly according to the topology asked for, according to:
* Cray Cascade: a Scalable HPC System based on a Dragonfly Network
* LIMITATIONS (for now):
* - Routing is only static and uses minimal routes.
* - When n links are used between two routers/groups, we consider only one link with n times the bandwidth (needs to
- * be validated on a real system)
+ * be validated on a real system)
* - All links have the same characteristics for now
* - Blue links are all attached to routers in the chassis n°0. This limits
* the number of groups possible to the number of blades in a chassis. This
*/
class XBT_PRIVATE DragonflyZone : public ClusterZone {
public:
- explicit DragonflyZone(NetZone* father, const char* name);
+ explicit DragonflyZone(NetZone* father, std::string name);
~DragonflyZone() override;
// void create_links_for_node(sg_platf_cluster_cbarg_t cluster, int id, int rank, int position) override;
- void getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t into, double* latency) override;
- void parse_specific_arguments(sg_platf_cluster_cbarg_t cluster) override;
+ void getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg_t into, double* latency) override;
+ void parse_specific_arguments(ClusterCreationArgs* cluster) override;
void seal() override;
void generateRouters();
void generateLinks();
- void createLink(char* id, int numlinks, Link** linkup, Link** linkdown);
- unsigned int* rankId_to_coords(int rankId);
+ void createLink(std::string id, int numlinks, surf::LinkImpl** linkup, surf::LinkImpl** linkdown);
private:
- sg_platf_cluster_cbarg_t cluster_;
+ void rankId_to_coords(int rankId, unsigned int (*coords)[4]);
+ ClusterCreationArgs* cluster_;
unsigned int numNodesPerBlade_ = 0;
unsigned int numBladesPerChassis_ = 0;
unsigned int numChassisPerGroup_ = 0;