pacman.model.graphs.machine package

Module contents

class pacman.model.graphs.machine.AbstractSDRAMPartition

Bases: object

An edge partition that contains SDRAM edges.

abstractmethod get_sdram_base_address_for(vertex: MachineVertex) int[source]

Get the SDRAM base address for a edge given which side the vertex is on.

Parameters:

vertex – the vertex to find SDRAM base address of

Returns:

the SDRAM address for this vertex

abstractmethod get_sdram_size_of_region_for(vertex: MachineVertex) int[source]

Get the size of the region for a vertex given a edge.

Parameters:

vertex – the vertex to find SDRAM size of

Returns:

the SDRAM size for this vertex

abstract property sdram_base_address: int

The base address of the SDRAM piece used for communication.

abstractmethod total_sdram_requirements() int[source]

Get the total SDRAM required by this outgoing partition.

Returns:

int

class pacman.model.graphs.machine.ConstantSDRAMMachinePartition(identifier: str, pre_vertex: V)

Bases: AbstractSingleSourcePartition[V, E], Generic[V, E], AbstractSDRAMPartition

An SDRAM partition that uses a fixed amount of memory. The edges in the partition must agree on how much memory is required.

Parameters:
  • identifier – The identifier of the partition

  • pre_vertex – The vertex at the start of all the edges

add_edge(edge: E) None[source]

Add an edge to the edge partition.

Parameters:

edge – the edge to add

Raises:

PacmanInvalidParameterException – If the edge does not belong in this edge partition

get_sdram_base_address_for(vertex: MachineVertex) int[source]

Get the SDRAM base address for a edge given which side the vertex is on.

Parameters:

vertex – the vertex to find SDRAM base address of

Returns:

the SDRAM address for this vertex

get_sdram_size_of_region_for(vertex: MachineVertex) int[source]

Get the size of the region for a vertex given a edge.

Parameters:

vertex – the vertex to find SDRAM size of

Returns:

the SDRAM size for this vertex

property sdram_base_address: int

The base address of the SDRAM piece used for communication.

total_sdram_requirements() int[source]

Get the total SDRAM required by this outgoing partition.

Returns:

int

class pacman.model.graphs.machine.DestinationSegmentedSDRAMMachinePartition(identifier: str, pre_vertex: MachineVertex)

Bases: AbstractSingleSourcePartition[MachineVertex, SDRAMMachineEdge], AbstractSDRAMPartition

An SDRAM partition that gives each edge its own slice of memory from a contiguous block. The edges all have the same source vertex.

Parameters:
  • identifier – The identifier of the partition

  • pre_vertex – The vertex at the start of all the edges

add_edge(edge: SDRAMMachineEdge) None[source]

Add an edge to the edge partition.

Parameters:

edge – the edge to add

Raises:

PacmanInvalidParameterException – If the edge does not belong in this edge partition

get_sdram_base_address_for(vertex: MachineVertex) int[source]

Get the SDRAM base address for a edge given which side the vertex is on.

Parameters:

vertex – the vertex to find SDRAM base address of

Returns:

the SDRAM address for this vertex

get_sdram_size_of_region_for(vertex: MachineVertex) int[source]

Get the size of the region for a vertex given a edge.

Parameters:

vertex – the vertex to find SDRAM size of

Returns:

the SDRAM size for this vertex

property sdram_base_address: int

The base address of the SDRAM piece used for communication.

total_sdram_requirements() int[source]

Get the total SDRAM required by this outgoing partition.

Returns:

int

class pacman.model.graphs.machine.MachineEdge(pre_vertex: MachineVertex, post_vertex: MachineVertex, label: str | None = None)

Bases: AbstractEdge[object]

A simple implementation of a machine edge.

Parameters:
  • pre_vertex – The vertex at the start of the edge.

  • post_vertex – The vertex at the end of the edge.

  • label – The name of the edge.

property label: str | None

The label of the edge.

property post_vertex: MachineVertex

The vertex at the end of the edge.

property pre_vertex: MachineVertex

The vertex at the start of the edge.

class pacman.model.graphs.machine.MachineFPGAVertex(fpga_id: int, fpga_link_id: int, board_address: str | None = None, linked_chip_coordinates: XY | None = None, label: str | None = None, app_vertex: ApplicationVertex | None = None, vertex_slice: Slice | None = None, outgoing_keys_and_masks: List[BaseKeyAndMask] | None = None, incoming: bool = True, outgoing: bool = False)

Bases: MachineVertex, AbstractVirtual

A virtual vertex on an FPGA link.

Parameters:
  • fpga_id – Field Programmable Gate Arrays id

  • fpga_link_id – The Field Programmable Gate Arrays link id

  • board_address – IP address of the board

  • linked_chip_coordinates – The coordinates of the chip to which the device is connected.

  • label – The optional name of the vertex

  • app_vertex – The application vertex that caused this machine vertex to be created. If None, there is no such application vertex.

  • vertex_slice – The slice of the application vertex that this machine vertex implements.

  • outgoing_keys_and_masks – keys sent by the device

  • incoming – Whether this device sends traffic into SpiNNaker.

  • outgoing – Whether this device receives traffic from SpiNNaker.

property board_address: str | None

The IP address of the board to which the device is connected, or None for the boot board, or when using linked chip coordinates.

property fpga_id: int

The Field Programmable Gate Arrays id provided to the init.

The Field Programmable Gate Arrays link id provided to the init.

Get link data from the machine.

Parameters:

machine – The machine to get the data from

Returns:

The link of the type used by the specific vertex.

property incoming: bool

Whether this device sends traffic into SpiNNaker.

property linked_chip_coordinates: XY | None

The coordinates of the chip to which the device is connected, or None for the boot board, or when using a board address.

property outgoing: bool

Whether this device receives traffic from SpiNNaker.

outgoing_keys_and_masks() List[BaseKeyAndMask] | None[source]

Get the keys sent by the device or None if there aren’t any explicitly defined.

Returns:

The keys and masks used by the vertex if any

property sdram_required: ConstantSDRAM

The SDRAM space required by the vertex.

class pacman.model.graphs.machine.MachineSpiNNakerLinkVertex(spinnaker_link_id: int, board_address: str | None = None, linked_chip_coordinates: XY | None = None, label: str | None = None, app_vertex: ApplicationVertex | None = None, vertex_slice: Slice | None = None, outgoing_keys_and_masks: List[BaseKeyAndMask] | None = None, incoming: bool = True, outgoing: bool = False)

Bases: MachineVertex, AbstractVirtual

A virtual vertex on a SpiNNaker Link.

Parameters:
  • spinnaker_link_id – The id of the spinnaker link as passed into the init.

  • board_address – The IP address of the board to which the device is connected,

  • linked_chip_coordinates – The coordinates of the chip to which the device is connected,

  • label – The optional name of the vertex

  • app_vertex – The application vertex that caused this machine vertex to be created. If None, there is no such application vertex.

  • vertex_slice – The slice of the application vertex that this machine vertex implements.

  • outgoing_keys_and_masks – key and mask to be used by the device

  • incoming – Whether this device sends traffic into SpiNNaker.

  • outgoing – Whether this device receives traffic from SpiNNaker.

property board_address: str | None

The IP address of the board to which the device is connected, or None for the boot board, or when using linked chip coordinates.

Get link data from the machine.

Parameters:

machine – The machine to get the data from

Returns:

The link of the type used by the specific vertex.

property incoming: bool

Whether this device sends traffic into SpiNNaker.

property linked_chip_coordinates: XY | None

The coordinates of the chip to which the device is connected, or None for the boot board, or when using a board address.

property outgoing: bool

Whether this device receives traffic from SpiNNaker.

outgoing_keys_and_masks() List[BaseKeyAndMask] | None[source]

Get the keys sent by the device or None if there aren’t any explicitly defined.

Returns:

The keys and masks used by the vertex if any

property sdram_required: ConstantSDRAM

The SDRAM space required by the vertex.

The id of the spinnaker link as passed into the init.

class pacman.model.graphs.machine.MachineVertex(label: str | None = None, app_vertex: ApplicationVertex | None = None, vertex_slice: Slice | None = None)

Bases: AbstractVertex

A machine graph vertex.

Parameters:
  • label – The optional name of the vertex

  • app_vertex – The application vertex that caused this machine vertex to be created. If None, there is no such application vertex.

  • vertex_slice – The slice of the application vertex that this machine vertex implements.

Raises:
property app_vertex: ApplicationVertex

The application vertex that caused this machine vertex to be created. If None, there is no such application vertex.

get_fixed_location() ChipAndCore | None[source]

The x, y and possibly p the vertex must be placed on.

Typically None! Does not have the value of a normal placements.

Used instead of ChipAndCoreConstraint.

Returns:

None or the location constraint,

Note

If the Machine vertex has no fixed_location but does have an app_vertex, app_vertex.fixed_location is used. If both have a fixed_location the app level is ignored!

get_n_keys_for_partition(partition_id: str) int[source]

Get the number of keys required by the given partition of edges.

Parameters:

partition_id – The identifier of the partition; the partition_id param is only used by some MachineVertex subclasses

Returns:

The number of keys required

property index: int

The index into the collection of machine vertices for an application vertex.

property iptags: Iterable[IPtagResource]

The IPTags used by this vertex, if any.

property reverse_iptags: Iterable[ReverseIPtagResource]

The ReverseIPTags used by this vertex, if any.

abstract property sdram_required: AbstractSDRAM

The SDRAM space required by the vertex.

property vertex_slice: Slice

The slice of the application vertex that this machine vertex implements.

class pacman.model.graphs.machine.MulticastEdgePartition(pre_vertex: MachineVertex, identifier: str)

Bases: AbstractSingleSourcePartition[MachineVertex, MachineEdge]

A simple implementation of a machine edge partition that will communicate with SpiNNaker multicast packets. They have a common set of sources with the same semantics and so can share a single key.

Parameters:
  • pre_vertex – the pre vertex of this partition.

  • identifier – The identifier of the partition

class pacman.model.graphs.machine.SDRAMMachineEdge(pre_vertex: MachineVertex, post_vertex: MachineVertex, label: str)

Bases: MachineEdge

An edge that transfers information via a shared SDRAM area. This implies that it must be between two machine vertices placed on the same chip.

Parameters:
  • pre_vertex – The vertex at the start of the edge.

  • post_vertex – The vertex at the end of the edge.

  • label – The name of the edge.

property sdram_base_address: int | None

The start address of the sdram if set

property sdram_size: int

The sdram size reported by the pre_vertex

class pacman.model.graphs.machine.SimpleMachineVertex(sdram: AbstractSDRAM | None, label: str | None = None, app_vertex: ApplicationVertex | None = None, vertex_slice: Slice | None = None, iptags: Iterable[IPtagResource] | None = None, reverse_iptags: Iterable[ReverseIPtagResource] | None = None)

Bases: MachineVertex

A MachineVertex that stores its own resources.

This class is mainly intended for JSON and testing as it support the minimal API. If a more complex Vertex is required consider the MockMachineVertex.

Parameters:
  • sdram – The SDRAM space required by the vertex.

  • label – The optional name of the vertex

  • app_vertex – The application vertex that caused this machine vertex to be created. If None, there is no such application vertex.

  • vertex_slice – The slice of the application vertex that this machine vertex implements.

  • iptags – The forward tags used by this vertex

  • reverse_iptags – The reverse tags used by this vertex

property iptags: Iterable[IPtagResource]

The IPTags used by this vertex, if any.

property reverse_iptags: Iterable[ReverseIPtagResource]

The ReverseIPTags used by this vertex, if any.

property sdram_required: AbstractSDRAM

The SDRAM space required by the vertex.

class pacman.model.graphs.machine.SourceSegmentedSDRAMMachinePartition(identifier: str, pre_vertices: Collection[MachineVertex])

Bases: AbstractMultiplePartition[MachineVertex, SDRAMMachineEdge], AbstractSDRAMPartition

An SDRAM partition that gives each edge its own slice of memory from a contiguous block. The edges all have the same destination vertex.

Parameters:
  • identifier – The identifier of the partition

  • pre_vertices – The vertices that an edge in this partition may originate at

add_edge(edge: SDRAMMachineEdge) None[source]

Add an edge to the edge partition.

Parameters:

edge – the edge to add

Raises:

PacmanInvalidParameterException – If the edge does not belong in this edge partition

get_sdram_base_address_for(vertex: MachineVertex) int[source]

Get the SDRAM base address for a edge given which side the vertex is on.

Parameters:

vertex – the vertex to find SDRAM base address of

Returns:

the SDRAM address for this vertex

get_sdram_size_of_region_for(vertex: MachineVertex) int[source]

Get the size of the region for a vertex given a edge.

Parameters:

vertex – the vertex to find SDRAM size of

Returns:

the SDRAM size for this vertex

is_sdram_base_address_defined(vertex: MachineVertex) bool[source]

Do we have a base address for the given vertex? If the edge does not connect to the vertex, this is an error.

Returns:

True if the base address for the given vertex is known

property sdram_base_address: int

The start of the sdram block reserved on Chip

total_sdram_requirements() int[source]
Returns:

The total of the sdram size of each edge.