Function caminos_lib::topology::new_topology[][src]

pub fn new_topology(arg: TopologyBuilderArgument<'_>) -> Box<dyn Topology>
Expand description

Build a topology. All topologies should admit an optional legend_name to be used in plots.

Cartesian topologies

Mesh example: a bidimensional mesh of side 16. Routers in the periphery has less degree, defined as un-connected ports.

Mesh{
	sides: [16,16],
	servers_per_router:1,
	legend_name: "A 16x16 mesh network",
}

Torus example

A bidimenstional torus of side 16. All routers have degree 4. Plus another port to connect to the server.

Torus{
	sides: [16,16],
	servers_per_router:1,
	legend_name: "A 16x16 torus network",
}

Hamming example

A bidimensional Hamming graph isomorphic to the Cartesian product of two Complete graph of 16 vertices. Also known as HyperX or flattened butterfly topology. Has degree 2*(16-1)=30. It is recommended to use a number of servers per router close to the side value, because of its low average distance.

Hamming{
	sides: [16,16],
	servers_per_router:16,
	legend_name: "A 16x16 Hamming network",
}

Topologies given by lists of neighbours.

Random regular graph example

A random regular can be built when at least one of degree or routers is an even number. A useful formula is degree^k=2routers*ln(routers), where the exponent k is close to the average distance. For large enough numbers ceil(k) should be the diameter. To have enough population severs_per_router should be a little below the quotient degree/average_distance, as some little throughput is wasted by the non-uniforme use of the links.

RandomRegularGraph{
	routers: 500,
	degree: 20,
	servers_per_router: 8,
	legend_name: "A random 20-regular graph of 500 routers",
}

File example

A file can be load as topology. This can be useful to keep a specific random graph without need to care about using the same RNG seed. It can also be used to simulate topologies generated by other software.

File{
	filename: "/path/to/my/topology/file",
	format: 0,//TODO: this needs documentation...
	servers_per_router: 5,
	legend_name: "some network in the device",
}

Dragonfly networks.

The global_ports_per_router was denotated h in their original article. It is only included the case with groups of size a=2h and g=ah+1 groups. The number of servers per router can be varied, but recommended to the same value as global_ports_per_router. Only the palm-tree arrangment of global links is currently supported.

CanonicDragonfly{
	global_ports_per_router: 4,
	servers_per_router: 4,
	legend_name: "h=4 dragonfly with palm-tree global arrangement",
}

Networks built over finite fields. Only prime fields are currently supported.

LeviProjective.

This topology is the Levi graph of the projective plane over a finite field. Both lines and points of the projective plane become vertices, that is, routers. Has average distance around 2.5, diameter 3 and girth 6. The finite field is of order prime, that should be a prime number. Powers are not yet supported. The topology degree is the prime plus one. Called projective networks in “Projective Networks: Topologies for Large Parallel Computer Systems” by C. Camarero et al.

LeviProjective{
	prime: 19,
	servers_per_router: 8,
	legend_name: "Levi-projective network over q=19",
}

Projective.

This is the quotient of the LeviProjective over a polarity: a bijection between points and lines that maintains incidence. It is also known as Brown graph or Erdös–Renyí graph. The degree is again prime+1, except in the fixed points which became loops. These loops are removed from the network, becoming non-conected ports. Has diameter 2, average distance a little below and girth 5. Called demi-projective networks in “Projective Networks: Topologies for Large Parallel Computer Systems” by C. Camarero et al.

Projective{
	prime: 19,
	servers_per_router: 10,
	legend_name: "demi-projective network over q=19",
}

SlimFly.

This is the MMS (Mirka–Miller–Siran) graph. For prime=5 it is the Hogffman–Singleton graph. Has Paley graphs as subgraph, or similar depending on whether the prime is congruent to what modulo 4. has diameter 2. Note the links in the (quasi)-Paley graph (which we can call local links) are used in a slightly different amount to the other links. This slightly reduces the delivered throughput.

SlimFly{
	prime: 19,
	//primitive: 2,//optional value, should actually be a primitive number. Should be better to let it be calculated.
	servers_per_router:9,
	legend_name: "Slimfly MMS over q=19",
}

Multi-stage networks.

In a multi-stage network routers are grouped by levels, which the routers within a level connecting only to routers of the preceding and the next levels. Routers at level 0 (the first level) are called leaf routers and they are the ones connected servers. We call stages to the connections from a level to the next. The number of stages is called height and it is one less than the number of levels. The levels hence range from 0 up to height (both inclusive).

Generic MultiStage

MultiStage{
	stages:[
		Fat { bottom_factor:4, top_factor:4 },
		Fat { bottom_factor:8, top_factor:4 },
	],
	servers_per_leaf: 4,
	legend_name: "a fat-tree defined using stages"
}

XGFT

An eXtended Generalized Fat-Tree, see “On Generalized Fat Trees” by S. R. Öhring et al.

XGFT{
	height: 3,
	down: [4,4,8],
	up: [4,4,4],
	servers_per_leaf: 4,
	legend_name: "XGFT(3;4,4,8;4,4,4)",
}

OFT

Orthogonal Fat-Tree, see “Recursively Scalable Fat-Trees as Interconnection Networks” by M. Valerio et al. Uses the construction shown in “Projective Networks: Topologies for Large Parallel Computer Systems” by C. Camarero et al. For the moment only implemented for projective planes over prime finite fields, excluding higher powers.

The optional parameter double_topmost_level (default to true) indicates whether the bottom of the last stage should be doubled, as using all ports in the topmost routers for downwards connections.

OFT{
	height: 2,
	prime: 3,
	servers_per_leaf: 4,
	//double_topmost_level: false,//optional parameter
	legend_name: "OFT over the projective plane of 3 points",
}

RFC

Random Folded Clos. See “Random Folded Clos Topologies for Datacenter Networks” by C. Camarero et al.

RFC{
	height: 3,
	down: [10,10,20],
	up: [10,10,10],
	sizes: [80,80,80,40],
	servers_per_leaf: 4,
	legend_name: "RGC of radix 20 with 80 leaf routers",
}