pacman.model.graphs.machine package¶
Module contents¶
- class pacman.model.graphs.machine.AbstractSDRAMPartition¶
Bases:
objectAn 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
- class pacman.model.graphs.machine.ConstantSDRAMMachinePartition(identifier: str, pre_vertex: V)¶
Bases:
AbstractSingleSourcePartition[V,E],Generic[V,E],AbstractSDRAMPartitionAn 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
- class pacman.model.graphs.machine.DestinationSegmentedSDRAMMachinePartition(identifier: str, pre_vertex: MachineVertex)¶
Bases:
AbstractSingleSourcePartition[MachineVertex,SDRAMMachineEdge],AbstractSDRAMPartitionAn 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
- 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 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,AbstractVirtualA 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
Nonefor the boot board, or when using linked chip coordinates.
- get_link_data(machine: Machine) FPGALinkData[source]¶
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 linked_chip_coordinates: XY | None¶
The coordinates of the chip to which the device is connected, or
Nonefor the boot board, or when using a board address.
- 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,AbstractVirtualA 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
Nonefor the boot board, or when using linked chip coordinates.
- get_link_data(machine: Machine) SpinnakerLinkData[source]¶
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 linked_chip_coordinates: XY | None¶
The coordinates of the chip to which the device is connected, or
Nonefor the boot board, or when using a board address.
- 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.MachineVertex(label: str | None = None, app_vertex: ApplicationVertex | None = None, vertex_slice: Slice | None = None)¶
Bases:
AbstractVertexA 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:
PacmanValueError – If the slice of the machine_vertex is too big
AttributeError – If a not-None app_vertex is not an ApplicationVertex
- 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 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.
- 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:
MachineEdgeAn 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.
- 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:
MachineVertexA 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 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],AbstractSDRAMPartitionAn 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