For very large jobs, routing should be enabled.
Message routing reduces the latency and memory usage.
Also, the network will by happier.

This guide contains virtual network architectures for routing messages with Ray.

Vertices is the number of computer cores to use (mpiexec -n ###)

See also Documentation/Very-Large-Jobs.txt.

## Convex regular polytope

Messages can be routed with a polytope using
the polytope connection type. A hypercube is a polytope with radix
of 2. The connection types 'polytope' and 'hypercube' use the same code
path so they are equivalent.

The basic relation for edges is that only 1 dimension can be different.

  Example:  <0,1,2> -> <0,2,2>

For the convex regular polytope, we have

Vertices:= Radix^Dimension
Degree:= (Radix-1)*Dimension

Vertices: 64
Type: Polytope
Radix: 8
Dimension: 2
Degree: 14
Options: -route-messages -connection-type polytope -routing-graph-degree 14

Vertices: 512
Type: Polytope
Radix: 8
Dimension: 3 (8^3=512)
Degree: 21=(8-1)*3
Options:  -route-messages -connection-type polytope -routing-graph-degree 21

Vertices: 1024 = 32*32
Type: Polytope
Radix: 32
Dimension: 2 (32^2=1024)
Degree: 62 = (32-1)*2
Options:  -route-messages -connection-type polytope -routing-graph-degree 62

Vertices: 1024
Type: Polytope
Radix: 2
Dimension: 10 (2^10=1024)
Degree: 10
Options:  -route-messages -connection-type polytope -routing-graph-degree 10

Vertices: 2025 (45 ^ 2)
Type: Polytope
Radix: 45
Dimension: 2
Degree: 88 ((45 - 1 ) * 2)
Options:  -route-messages -connection-type polytope -routing-graph-degree 88

Vertices: 4225 = 65*65
Type: Polytope
Degree: 128 = (65-1)*2
Diameter: 2 (65^2=1024)
Options:  -route-messages -connection-type polytope -routing-graph-degree 128


## Torus

Type: torus
Radix: 8
Dimension: 3
Vertices: Radix^Dimension = 512
Degree: 2*Dimension = 6
Options:  -route-messages -connection-type torus -routing-graph-degree 6

Type: torus
Radix: 4
Dimension: 5
Vertices: Radix^Dimension = 1024
Degree: 2*Dimension = 10
Options:  -route-messages -connection-type torus -routing-graph-degree 10


## de Bruijn

Vertices: 256
Type: de Bruijn
Degree: 4
Diameter: 4 (4*4*4*4=256)
Options:  -route-messages -connection-type debruijn -routing-graph-degree 4

Vertices: 512
Type: de Bruijn
Degree: 8
Diameter: 3 (8*8*8)
Options:  -route-messages -connection-type debruijn -routing-graph-degree 8

Vertices: 1024
Type: de Bruijn
Degree: 4
Diameter: 5 (4*4*4*4*4)
Options:  -route-messages -connection-type debruijn -routing-graph-degree 4

Vertices: 1024
Type: de Bruijn
Degree: 32
Diameter: 2 (32*32)
Options:  -route-messages -connection-type debruijn -routing-graph-degree 32

Vertices: 1024
Type: de Bruijn
Degree: 2
Diameter: 10 (2^10)
Options:  -route-messages -connection-type debruijn -routing-graph-degree 2


## Kautz

Vertices: 750
Type: Kautz
Degree: 5
Diameter: 4 (6*5*5*5)
Options:  -route-messages -connection-type kautz -routing-graph-degree 5

Vertices: 972
Type: Kautz
Degree: 3
Diameter: 6 (4*3*3*3*3*3)
Options:  -route-messages -connection-type kautz -routing-graph-degree 3

Vertices: 768
Type: Kautz
Degree: 2
Diameter: 9 (3*2*2*2*2*2*2*2*2)
Options:  -route-messages -connection-type kautz -routing-graph-degree 2

