spinn_front_end_common.interface.buffer_management package

Submodules

spinn_front_end_common.interface.buffer_management.buffer_manager module

class spinn_front_end_common.interface.buffer_management.buffer_manager.BufferManager(placements, tags, transceiver, store_to_file=False)[source]

Bases: object

Manager of send buffers

Parameters:
add_receiving_vertex(vertex)[source]

Add a vertex into the managed list for vertices which require buffers to be received from them during runtime

add_sender_vertex(vertex)[source]
Add a vertex into the managed list for vertices
which require buffers to be sent to them during runtime
Parameters:vertex (spinnaker.pyNN.models.abstract_models.buffer_models.AbstractSendsBuffersFromHost) – the vertex to be managed
clear_recorded_data(x, y, p, recording_region_id)[source]

Removes the recorded data stored in memory.

Parameters:
  • x – placement x coord
  • y – placement y coord
  • p – placement p coord
  • recording_region_id – the recording region id
get_data_for_vertex(placement, recording_region_id)[source]

Get a pointer to the data container for all the data retrieved during the simulation from a specific region area of a core

Parameters:
Returns:

pointer to a class which inherits from AbstractBufferedDataStorage

Return type:

spinn_front_end_common.interface.buffer_management.buffer_models.AbstractBufferedDataStorage

load_initial_buffers()[source]

Load the initial buffers for the senders using mem writes

receive_buffer_command_message(packet)[source]

Handle an EIEIO command message for the buffers

Parameters:packet (spinnman.messages.eieio.command_messages.eieio_command_message.EIEIOCommandMessage) – The eieio message received
reload_buffer_files

The file paths for each buffered region for each sender vertex

reset()[source]

Resets the buffered regions to start transmitting from the beginning of its expected regions and clears the buffered out data files

resume()[source]

Resets any data structures needed before starting running again

sender_vertices

The vertices which are buffered

stop()[source]

Indicates that the simulation has finished, so no further outstanding requests need to be processed

spinn_front_end_common.interface.buffer_management.recording_utilities module

spinn_front_end_common.interface.buffer_management.recording_utilities.get_last_sequence_number(placement, transceiver, recording_data_address)[source]

Read the last sequence number from the data

Parameters:
  • placement – The placement from which to read the sequence number
  • transceiver – The transceiver to use to read the sequence number
  • recording_data_address – The address of the recording data from which to read the number
Return type:

int

spinn_front_end_common.interface.buffer_management.recording_utilities.get_minimum_buffer_sdram(buffered_sdram_per_timestep, n_machine_time_steps=None, minimum_sdram_for_buffering=1048576)[source]

Get the minimum buffer SDRAM

Parameters:
  • buffered_sdram_per_timestep (list of int) – The maximum number of bytes to use per timestep of recording, per recorded region. Disabled regions can specify 0.
  • n_machine_time_steps (int) – The number of machine time steps for the simulation. Can be None if use_auto_pause_and_resume is True
  • minimum_sdram_for_buffering (int) – The minimum SDRAM to reserve per recorded region for buffering
Return type:

list of int

spinn_front_end_common.interface.buffer_management.recording_utilities.get_n_timesteps_in_buffer_space(buffer_space, buffered_sdram_per_timestep)[source]

Get the number of time steps of data that can be stored in a given buffers space

Parameters:
  • buffer_space (int) – The space that will hold the data
  • buffered_sdram_per_timestep (list of int) – The maximum SDRAM used by each region per timestep
Return type:

int

spinn_front_end_common.interface.buffer_management.recording_utilities.get_recorded_region_ids(buffered_sdram_per_timestep)[source]

Get the ids of regions where recording is enabled

Parameters:buffered_sdram_per_timestep (list of int) – The maximum SDRAM used by each region per timestep, where 0 indicates a disabled region
Return type:list of int
spinn_front_end_common.interface.buffer_management.recording_utilities.get_recorded_region_sizes(n_machine_time_steps, buffered_sdram_per_timestep, maximum_sdram_for_buffering=None)[source]

Get the size of each recording region to be passed in to get_recording_header_array

Parameters:
  • n_machine_time_steps (int) – The duration of the simulation segment in time steps
  • buffered_sdram_per_timestep (list of int) – The maximum SDRAM used per timestep in bytes per region
  • maximum_sdram_for_buffering (None or list of int) – The maximum size of each buffer, or None if no maximum
Return type:

list of int

spinn_front_end_common.interface.buffer_management.recording_utilities.get_recording_data_size(recorded_region_sizes)[source]

Get the size of the recorded data to be reserved

Parameters:recorded_region_sizes – A list of sizes of each region to be recorded. A size of 0 is acceptable.
Return type:int
spinn_front_end_common.interface.buffer_management.recording_utilities.get_recording_header_array(recorded_region_sizes, time_between_triggers=0, buffer_size_before_request=None, ip_tags=None, buffering_tag=None)[source]

Get data to be written for the recording header

Parameters:
  • recorded_region_sizes – A list of sizes of each region to be recorded. A size of 0 is acceptable.
  • time_between_triggers – The minimum time between requesting reads of any region
  • buffer_size_before_request – The amount of buffer to fill before a read request is sent
  • ip_tags – A list of ip tags to extract the buffer tag from
  • buffering_tag – The tag to use for buffering requests
Returns:

An array of values to be written as the header

Return type:

list of int

spinn_front_end_common.interface.buffer_management.recording_utilities.get_recording_header_size(n_recorded_regions)[source]

Get the size of the data to be written for the recording header

Parameters:n_recorded_regions – The number of regions to be recorded
spinn_front_end_common.interface.buffer_management.recording_utilities.get_recording_region_sizes(buffered_sdram_per_timestep, n_machine_time_steps=None, minimum_sdram_for_buffering=1048576, maximum_sdram_for_buffering=None, use_auto_pause_and_resume=True)[source]

Get the size of each recording region to be passed in to get_recording_resources, based on the details of the simulation

Parameters:
  • buffered_sdram_per_timestep (list of int) – The maximum number of bytes to use per timestep of recording, per recorded region. Disabled regions can specify 0.
  • n_machine_time_steps (int) – The number of machine time steps for the simulation. Can be None if use_auto_pause_and_resume is True
  • minimum_sdram_for_buffering (int) – The minimum SDRAM to reserve per recorded region for buffering
  • maximum_sdram_for_buffering (None or list of int) – The maximum size of each buffer, or None if no maximum
  • use_auto_pause_and_resume (bool) – True if automatic pause and resume is to be used for buffering
Return type:

list of int

spinn_front_end_common.interface.buffer_management.recording_utilities.get_recording_resources(region_sizes, buffering_ip_address=None, buffering_port=None, notification_tag=None)[source]

Get the resources for recording

Parameters:
  • region_sizes (list of int) – A list of the sizes of each region. A size of 0 is acceptable to indicate an empty region
  • buffering_ip_address (str) – The ip address to receive buffering messages on, or None if buffering is not in use
  • buffering_port (int) – The port to receive buffering messages on, or None if a port is to be assigned
  • notification_tag (int) – The tag to send buffering messages with, or None to use a default tag
Return type:

pacman.model.resources.ResourceContainer

spinn_front_end_common.interface.buffer_management.recording_utilities.get_region_pointer(placement, transceiver, recording_data_address, region)[source]

Get a pointer to a recording region

Parameters:
  • placement – The placement from which to read the pointer
  • transceiver – The transceiver to use to read the pointer
  • recording_data_address – The address of the recording data from which to read the pointer
  • region – The index of the region to get the pointer of
Return type:

int

Module contents

class spinn_front_end_common.interface.buffer_management.BufferManager(placements, tags, transceiver, store_to_file=False)[source]

Bases: object

Manager of send buffers

Parameters:
add_receiving_vertex(vertex)[source]

Add a vertex into the managed list for vertices which require buffers to be received from them during runtime

add_sender_vertex(vertex)[source]
Add a vertex into the managed list for vertices
which require buffers to be sent to them during runtime
Parameters:vertex (spinnaker.pyNN.models.abstract_models.buffer_models.AbstractSendsBuffersFromHost) – the vertex to be managed
clear_recorded_data(x, y, p, recording_region_id)[source]

Removes the recorded data stored in memory.

Parameters:
  • x – placement x coord
  • y – placement y coord
  • p – placement p coord
  • recording_region_id – the recording region id
get_data_for_vertex(placement, recording_region_id)[source]

Get a pointer to the data container for all the data retrieved during the simulation from a specific region area of a core

Parameters:
Returns:

pointer to a class which inherits from AbstractBufferedDataStorage

Return type:

spinn_front_end_common.interface.buffer_management.buffer_models.AbstractBufferedDataStorage

load_initial_buffers()[source]

Load the initial buffers for the senders using mem writes

receive_buffer_command_message(packet)[source]

Handle an EIEIO command message for the buffers

Parameters:packet (spinnman.messages.eieio.command_messages.eieio_command_message.EIEIOCommandMessage) – The eieio message received
reload_buffer_files

The file paths for each buffered region for each sender vertex

reset()[source]

Resets the buffered regions to start transmitting from the beginning of its expected regions and clears the buffered out data files

resume()[source]

Resets any data structures needed before starting running again

sender_vertices

The vertices which are buffered

stop()[source]

Indicates that the simulation has finished, so no further outstanding requests need to be processed