Copyright 1993 Digital Equipment Corporation.
Distributed only by permission.
Last modified on Fri Aug 6 21:04:03 PDT 1993 by heydon
INTERFACE Topology;
IMPORT AlgGreedy, Graph, Rd, Thread;
TYPE
Kind = { Grid, Torus, Butterfly, FromFile };
PROCEDURE FromName(nm: TEXT): Kind;
Return the topology type corresponding to the name nm. The valid names
are the same as the names of the Topology.T enumerations, except that
they begin with lower-case letters.
PROCEDURE NewGrid(
alg: AlgGreedy.T;
w, h: CARDINAL;
maxQueueSize: CARDINAL;
bounded: BOOLEAN)
: Graph.T
RAISES {Thread.Alerted};
Return a new graph whose topology is a grid with h rows and w columns.
Each node is connected to its north, east, south, and west neighbors.
MaxQueueSize is the maximum size of the queue at each node if bouned is
true; otherwise, the queues are unbounded, but maxQueueSize is the
maximum expected queue size. Generate the interesting events to construct
this graph.
PROCEDURE NewTorus(
alg: AlgGreedy.T;
w, h: CARDINAL;
maxQueueSize: CARDINAL;
bounded: BOOLEAN)
: Graph.T
RAISES {Thread.Alerted};
Like NewGrid, but w + h extra edges are added so the topology is a
toroidal grid.
PROCEDURE NewButterfly(
alg: AlgGreedy.T;
dim: CARDINAL;
maxQueueSize: CARDINAL;
bounded: BOOLEAN)
: Graph.T
RAISES {Thread.Alerted};
Return a new graph whose topology is a butterfly with dimension dim. The
resulting graph is a grid of dim + 1 columns and 2^dim rows. There is
an edge between (i, j) and (i', j') iff i + 1 = i' and either j =
j' or the binary values for j and j' differ in the ith bit. The
procedure generates the interesting events to construct the graph.
EXCEPTION BadGraph(TEXT);
The argument to the BadGraph exception is an error message describing why
the graph cannot be created.
PROCEDURE NewFromFile(
alg: AlgGreedy.T;
rd: Rd.T;
maxQueueSize: CARDINAL;
bounded: BOOLEAN)
: Graph.T
RAISES {BadGraph, Thread.Alerted};
Return a new graph defined by the next s-expression in rd. MaxQueueSize
and bounded are as in the NewGrid procedure above. Generate the
interesting events to construct this graph.
END Topology.