spinner-proxy-server

A proxy server which sits between very large SpiNNaker machines and multiple instances of spinner-wiring-guide to enable multiple people to work on a large machine at once. See below for a tutorial.

usage: spinner-proxy-server [-h] [--version] [--host HOST] [--port PORT]
                            [--verbose] (--num-boards N | --triads W H)
                            [--transformation {shear,slice}]
                            [--uncrinkle-direction {columns,rows}]
                            [--folds X Y] [--board-dimensions W H D]
                            [--board-wire-offset-south-west X Y Z]
                            [--board-wire-offset-north-east X Y Z]
                            [--board-wire-offset-east X Y Z]
                            [--board-wire-offset-west X Y Z]
                            [--board-wire-offset-north X Y Z]
                            [--board-wire-offset-south X Y Z]
                            [--inter-board-spacing S]
                            [--boards-per-frame BOARDS_PER_FRAME]
                            [--frame-dimensions W H D]
                            [--frame-board-offset X Y Z]
                            [--inter-frame-spacing S]
                            [--frames-per-cabinet FRAMES_PER_CABINET]
                            [--cabinet-dimensions W H D]
                            [--cabinet-frame-offset X Y Z]
                            [--inter-cabinet-spacing S] [--num-cabinets N]
                            [--num-frames N] [--bmp CABINET FRAME HOSTNAME]

Start a proxy server to enable multiple interactive wiring sessions to
interact with the same SpiNNaker machine.

optional arguments:
  -h, --help            show this help message and exit
  --version, -V         show program's version number and exit
  --host HOST, -H HOST  Host interface to listen on (default: any)
  --port PORT, -p PORT  Port listen on (default: 6512)
  --verbose, -v         Increase verbosity.

machine topology dimensions:
  --num-boards N, -n N  build the 'squarest' system with this many boards
  --triads W H, -t W H  build a system with the specified number of triads of
                        boards in each dimension (yielding 3*W*H boards)

topology folding options:
  --transformation {shear,slice}, -T {shear,slice}
                        the transformation function to use from hexagonal
                        torus to rectangular Cartesian grid (selected
                        automatically if omitted)
  --uncrinkle-direction {columns,rows}
                        direction in which to uncrinkle the hexagonal mesh to
                        form a regular grid (default: rows)
  --folds X Y, -F X Y   the number of pieces to fold into in each dimension
                        (default: (2, 2)) ignored if --transformation is not
                        given

board physical dimensions:
  --board-dimensions W H D
                        physical board dimensions in meters (default: (0.014,
                        0.233, 0.24))
  --board-wire-offset-south-west X Y Z
                        physical offset of the south-west connector from board
                        left-top-front corner in meters (default: (0.008,
                        0.013, 0.0))
  --board-wire-offset-north-east X Y Z
                        physical offset of the north-east connector from board
                        left-top-front corner in meters (default: (0.008,
                        0.031, 0.0))
  --board-wire-offset-east X Y Z
                        physical offset of the east connector from board left-
                        top-front corner in meters (default: (0.008, 0.049,
                        0.0))
  --board-wire-offset-west X Y Z
                        physical offset of the west connector from board left-
                        top-front corner in meters (default: (0.008, 0.067,
                        0.0))
  --board-wire-offset-north X Y Z
                        physical offset of the north connector from board
                        left-top-front corner in meters (default: (0.008,
                        0.085, 0.0))
  --board-wire-offset-south X Y Z
                        physical offset of the south connector from board
                        left-top-front corner in meters (default: (0.008,
                        0.103, 0.0))
  --inter-board-spacing S
                        physical spacing between each board in a frame in
                        meters (default: 0.00124)

frame physical dimensions:
  --boards-per-frame BOARDS_PER_FRAME
                        number of boards per frame (default: 24)
  --frame-dimensions W H D
                        frame physical dimensions in meters (default: (0.43,
                        0.266, 0.25))
  --frame-board-offset X Y Z
                        physical offset of the left-top-front corner of the
                        left-most board from the left-top-front corner of a
                        frame in meters (default: (0.06, 0.017, 0.0))
  --inter-frame-spacing S
                        physical spacing between frames in a cabinet in meters
                        (default: 0.133)

cabinet physical dimensions:
  --frames-per-cabinet FRAMES_PER_CABINET
                        number of frames per cabinet (default: 5)
  --cabinet-dimensions W H D
                        cabinet physical dimensions in meters (default: (0.6,
                        2.0, 0.25))
  --cabinet-frame-offset X Y Z
                        physical offset of the left-top-front corner of the
                        top frame from the left-top-front corner of a cabinet
                        in meters (default: (0.085, 0.047, 0.0))
  --inter-cabinet-spacing S
                        physical spacing between each cabinet in meters
                        (default: 0.0)
  --num-cabinets N, -c N
                        specify how many cabinets to spread the system over
                        (default: the minimum possible)
  --num-frames N, -f N  when only one cabinet is required, specifies how many
                        frames within that cabinet the system should be spread
                        across (default: the minimum possible)

SpiNNaker BMP connection details:
  --bmp CABINET FRAME HOSTNAME
                        specify the hostname of a BMP to use to communicate
                        with SpiNNaker boards in the given frame

Parallel, multi-person cable installation

To enable multiple people to install the cables in a very large machine simultaneously, a spinner-proxy-server may be set up which allows multiple instances of the spinner-wiring-guide tool to be started, one instance per person (ideally running on seperate computers and headphones).

The server should be started (on a single machine) like so:

$ spinner-proxy-server -n 600 --bmp 0 0 192.168.1.0 ...
Proxy server starting...

Note that the arguments specifying the size of the machine, along with BMP IP addresses for all frames, must be given.

Next, each installer must start the interactive wiring guide, substituting the ususal --bmp arguments for the hostname of the machine running the proxy server. In addition the --subset argument (see the documentation) should be used to assign each installer a non-overlapping portion of the machine.

For example, if the first installer will install all cables within cabinet 0 and between cabinets 1 and 0, the following command would be used to start the wiring guide on their machine:

$ spinner-wiring-guide -n 600 -l 0.15 0.3 0.5 0.7 1.0 --proxy hostname --subset 0.*.* 0-1.*.*

If the second installer will install cables in cabinet 1 and going between cabinets 1 and 2, the following command would be used on their machine:

$ spinner-wiring-guide -n 600 -l 0.15 0.3 0.5 0.7 1.0 --proxy hostname --subset 1.*.* 1-2.*.*

...and so on!

Since SpiNNer will install cables staying within cabinets before moving to inter-cabinet cabling, the scheme described above should result in minimal overlap between installers’ activity. An alternative scheme would be for each installer to first complete the wiring within their assigned cabinet and, once complete, restart the tool to guide installation of the cables between cabinets.