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 network architecture 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 alphabetSize
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 symbol can be different.

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

For the convex regular polytope, we have

vertices:= alphabetSize^wordLength
degree:= (alphabetSize-1)*wordLength

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

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


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

Vertices: 1024
Type: Polytope
Degree: 10
Diameter: 10 (2^10=1024)
Options:  -route-messages -connection-type polytope -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

