spinn_front_end_common.utilities package

Submodules

spinn_front_end_common.utilities.constants module

class spinn_front_end_common.utilities.constants.BUFFERING_OPERATIONS[source]

Bases: enum.Enum

A listing of what SpiNNaker specific EIEIO commands there are.

BUFFER_READ = 0
BUFFER_WRITE = 1
spinn_front_end_common.utilities.constants.CLOCKS_PER_US = 200

The number of clock cycles per micro-second (at 200Mhz)

spinn_front_end_common.utilities.constants.DATA_SPECABLE_BASIC_SETUP_INFO_N_BYTES = 144

The number of words in the AbstractDataSpecable basic setup information. This is the amount required by the pointer table plus a SARK allocation.

spinn_front_end_common.utilities.constants.DEFAULT_BUFFER_SIZE_BEFORE_RECEIVE = 16384

The default size of a recording buffer before receive request is sent

spinn_front_end_common.utilities.constants.DSE_DATA_STRUCT_SIZE = 16

size of the on-chip DSE data structure required, in bytes

spinn_front_end_common.utilities.constants.MAX_DATABASE_PATH_LENGTH = 50000

Database file path maximum length for database notification messages. Note that this is not sent to SpiNNaker and so is not subject to the usual SDP limit.

spinn_front_end_common.utilities.constants.MAX_POSSIBLE_BINARY_SIZE = 33792

the ITCM max limit for a binary

spinn_front_end_common.utilities.constants.MAX_SAFE_BINARY_SIZE = 32768

the ITCM max safe limit for a binary

spinn_front_end_common.utilities.constants.MAX_SIZE_OF_BUFFERED_REGION_ON_CHIP = 1048576

max size expected to be used by the reverse ip_tag multicast source during buffered operations.

spinn_front_end_common.utilities.constants.NOTIFY_PORT = 19999

The default local port that the toolchain listens on for the notification protocol.

spinn_front_end_common.utilities.constants.PARTITION_ID_FOR_MULTICAST_DATA_SPEED_UP = 'DATA_SPEED_UP_ROAD'

partition IDs preallocated to functionality

spinn_front_end_common.utilities.constants.SARK_PER_MALLOC_SDRAM_USAGE = 8

The number of bytes used by SARK per memory allocation

class spinn_front_end_common.utilities.constants.SDP_PORTS[source]

Bases: enum.Enum

SDP port handling output buffering data streaming

EXTRA_MONITOR_CORE_DATA_IN_SPEED_UP = 6
EXTRA_MONITOR_CORE_DATA_SPEED_UP = 5
EXTRA_MONITOR_CORE_REINJECTION = 4
INPUT_BUFFERING_SDP_PORT = 1
OUTPUT_BUFFERING_SDP_PORT = 2
RUNNING_COMMAND_SDP_PORT = 3
class spinn_front_end_common.utilities.constants.SDP_RUNNING_MESSAGE_CODES[source]

Bases: enum.Enum

An enumeration.

SDP_CLEAR_IOBUF_CODE = 9
SDP_NEW_RUNTIME_ID_CODE = 7
SDP_STOP_ID_CODE = 6
SDP_UPDATE_PROVENCE_REGION_AND_EXIT = 8
spinn_front_end_common.utilities.constants.SDRAM_BASE_ADDR = 1879048192

start of where SDRAM starts (either unbuffered or buffered)

spinn_front_end_common.utilities.constants.SIMULATION_N_BYTES = 12

The number of bytes used by the simulation interface. This is one word for the machine_time_step, one for the SDP port, and one for the application hash.

spinn_front_end_common.utilities.constants.SYSTEM_BYTES_REQUIREMENT = 156

The number of bytes used by the DSG and simulation interfaces

spinn_front_end_common.utilities.exceptions module

exception spinn_front_end_common.utilities.exceptions.BufferableRegionTooSmall[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when the SDRAM space of the region for buffered packets is too small to contain any packet at all

exception spinn_front_end_common.utilities.exceptions.BufferedRegionNotPresent[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when trying to issue buffered packets for a region not managed

exception spinn_front_end_common.utilities.exceptions.CantFindSDRAMToUseException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when malloc and sdram stealing cannot occur.

exception spinn_front_end_common.utilities.exceptions.ConfigurationException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when the front end determines a input parameter is invalid

exception spinn_front_end_common.utilities.exceptions.ExecutableFailedToStartException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when an executable has not entered the expected state during start up

exception spinn_front_end_common.utilities.exceptions.ExecutableFailedToStopException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when an executable has not entered the expected state during execution

exception spinn_front_end_common.utilities.exceptions.ExecutableNotFoundException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when a specified executable could not be found

exception spinn_front_end_common.utilities.exceptions.RallocException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when there are not enough routing table entries

exception spinn_front_end_common.utilities.exceptions.SimulatorNotSetupException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when trying to get simulator before it has been setup

exception spinn_front_end_common.utilities.exceptions.SimulatorRunningException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when trying to running get simulator that should not be running

exception spinn_front_end_common.utilities.exceptions.SimulatorShutdownException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when trying to get simulator after it has been shit down

exception spinn_front_end_common.utilities.exceptions.SpinnFrontEndException[source]

Bases: Exception

Raised when the front end detects an error

spinn_front_end_common.utilities.globals_variables module

spinn_front_end_common.utilities.globals_variables.app_provenance_file_path()[source]

Returns the path to the directory that holds all app provenance files

This will be the path used by the last run call or to be used by the next run if it has not yet been called.

..note: In unittest mode this returns a tempdir shared by all path methods

Rtpye:str
Raises:SimulatorNotSetupException – If the simulator has not been setup
spinn_front_end_common.utilities.globals_variables.check_simulator()[source]

Check if a simulator has been setup but not yet shut down

Raises:SimulatorNotSetupException, SimulatorShutdownException
spinn_front_end_common.utilities.globals_variables.get_generated_output(output)[source]

Get one of the simulator outputs by name.

Parameters:output (str) – The name of the output to retrieve.
Returns:The value (of arbitrary type, dependent on which output), or None if the variable is not found.
Raises:SimulatorNotSetupException – if the system has a status where outputs can’t be retrieved
spinn_front_end_common.utilities.globals_variables.get_last_simulator()[source]

Get the last simulator object setup.

Unlike get_simulator this method will also return a simulator that has
been shutdown.
Return type:AbstractSpinnakerBase
Raises:SimulatorNotSetupException
spinn_front_end_common.utilities.globals_variables.get_not_running_simulator()[source]

Get the current simulator object and verify that it is not running.

Return type:AbstractSpinnakerBase
Raises:SimulatorNotSetupException, SimulatorShutdownException, SimulatorRunningException
spinn_front_end_common.utilities.globals_variables.get_simulator()[source]

Get the current simulator object.

Return type:AbstractSpinnakerBase
Raises:SimulatorNotSetupException, SimulatorShutdownException
spinn_front_end_common.utilities.globals_variables.has_simulator()[source]

Check if a simulator has been setup but not yet shut down

Should behave in the same way as check_simulator except that it returns False where check_simulator raises and exception and True when it does not

Return type:bool
spinn_front_end_common.utilities.globals_variables.machine_time_step()[source]

The machine timestep, in microseconds

..note: In unittest mode this returns the default 1000

Return type:int
Raises:SimulatorNotSetupException – If the simulator has not been setup
spinn_front_end_common.utilities.globals_variables.machine_time_step_ms()[source]

The machine timestep, in microseconds

Semantic sugar for machine_time_step() / 1000.

..note: In unittest mode this returns the default 1.0

Return type:float
Raises:SimulatorNotSetupException – If the simulator has not been setup
spinn_front_end_common.utilities.globals_variables.machine_time_step_per_ms()[source]

The machine timesteps in a microseconds

Semantic sugar for 1000 / machine_time_step()

..note: In unittest mode this returns the default 1.0

Return type:float
Raises:SimulatorNotSetupException – If the simulator has not been setup
spinn_front_end_common.utilities.globals_variables.provenance_file_path()[source]

Returns the path to the directory that holds all provenance files

This will be the path used by the last run call or to be used by the next run if it has not yet been called.

..note: In unittest mode this returns a tempdir shared by all path methods

Rtpye:str
Raises:SimulatorNotSetupException – If the simulator has not been setup
spinn_front_end_common.utilities.globals_variables.report_default_directory()[source]

Returns the path to the directory that holds all the reports for run

This will be the path used by the last run call or to be used by the next run if it has not yet been called.

..note: In unittest mode this returns a tempdir shared by all path methods

Rtpye:str
Raises:SimulatorNotSetupException – If the simulator has not been setup
spinn_front_end_common.utilities.globals_variables.set_simulator(new_simulator)[source]

Set the current simulator object.

Parameters:new_simulator (AbstractSpinnakerBase) – The simulator to set.
spinn_front_end_common.utilities.globals_variables.setup_for_unittest()[source]

Removes the link to the previous simulator and clears injection

This will also delete any temp_dir from previous tests.

As this call is not required before calling set_simulator so should only be called by unittest_setup.

spinn_front_end_common.utilities.globals_variables.system_provenance_file_path()[source]

Returns the path to the directory that holds all provenance files

This will be the path used by the last run call or to be used by the next run if it has not yet been called.

..note: In unittest mode this returns a tempdir shared by all path methods

Rtpye:str
Raises:SimulatorNotSetupException – If the simulator has not been setup
spinn_front_end_common.utilities.globals_variables.time_scale_factor()[source]

The time scaling factor.

..note: In unittest mode this returns the default 1

Return type:

int

Raises:

spinn_front_end_common.utilities.helpful_functions module

spinn_front_end_common.utilities.helpful_functions.convert_string_into_chip_and_core_subset(cores)[source]

Translate a string list of cores into a core subset

Parameters:cores (str or None) – string representing down cores formatted as x,y,p[:x,y,p]*
Return type:CoreSubsets
spinn_front_end_common.utilities.helpful_functions.convert_time_diff_to_total_milliseconds(sample)[source]

Convert between a time diff and total milliseconds.

Parameters:sample (timedelta) –
Returns:total milliseconds
Return type:float
spinn_front_end_common.utilities.helpful_functions.convert_vertices_to_core_subset(vertices, placements)[source]

Converts vertices into core subsets.

Parameters:
  • vertices (iterable(MachineVertex)) – the vertices to convert to core subsets
  • placements (Placements) – the placements object
Returns:

the CoreSubSets of the vertices

Return type:

CoreSubsets

spinn_front_end_common.utilities.helpful_functions.determine_flow_states(executable_types, no_sync_changes)[source]

Get the start and end states for these executable types.

Parameters:
  • executable_types (dict(ExecutableType,any)) – the execute types to locate start and end states from
  • no_sync_changes (int) – the number of times sync signals been sent
Returns:

dict of executable type to states.

Return type:

tuple(dict(ExecutableType,CPUState), dict(ExecutableType,CPUState))

spinn_front_end_common.utilities.helpful_functions.flood_fill_binary_to_spinnaker(executable_targets, binary, txrx, app_id)[source]

Flood fills a binary to spinnaker on a given app_id given the executable targets and binary.

Parameters:
  • executable_targets (ExecutableTargets) – the executable targets object
  • binary (str) – the (name of the) binary to flood fill
  • txrx (Transceiver) – spinnman instance
  • app_id (int) – the application ID to load it as
Returns:

the number of cores it was loaded onto

Return type:

int

spinn_front_end_common.utilities.helpful_functions.generate_unique_folder_name(folder, filename, extension)[source]

Generate a unique file name with a given extension in a given folder

Parameters:
  • folder (str) – where to put this unique file
  • filename (str) – the name of the first part of the file without extension
  • extension (str) – extension of the file
Returns:

file path with a unique addition

Return type:

str

spinn_front_end_common.utilities.helpful_functions.get_defaultable_source_id(entry)[source]

Hack to support the source requirement for the router compressor on chip.

Parameters:entry (MulticastRoutingEntry) – the multicast router table entry.
Returns:return the source value
Return type:int
spinn_front_end_common.utilities.helpful_functions.get_ethernet_chip(machine, board_address)[source]

Locate the chip with the given board IP address

Parameters:
  • machine (Machine) – the SpiNNaker machine
  • board_address (str) – the board address to locate the chip of.
Returns:

The chip that supports that board address

Return type:

Chip

Raises:

ConfigurationException – when that board address has no chip associated with it

spinn_front_end_common.utilities.helpful_functions.locate_extra_monitor_mc_receiver(machine, placement_x, placement_y, packet_gather_cores_to_ethernet_connection_map)[source]

Get the data speed up gatherer that can be used to talk to a particular chip. This will be on the same board.

Parameters:
Return type:

DataSpeedUpPacketGatherMachineVertex

spinn_front_end_common.utilities.helpful_functions.locate_memory_region_for_placement(placement, region, transceiver)[source]

Get the address of a region for a placement.

Parameters:
  • region (int) – the region to locate the base address of
  • placement (Placement) – the placement object to get the region address of
  • transceiver (Transceiver) – the python interface to the SpiNNaker machine
Returns:

the address

Return type:

int

spinn_front_end_common.utilities.helpful_functions.n_word_struct(n_words)[source]

Manages a precompiled cache of structs for parsing blocks of words. Thus, this:

data = n_word_struct(n_words).unpack(data_blob)

Is much like doing this:

data = struct.unpack("<{}I".format(n_words), data_blob)

except quite a bit more efficient because things are shared including the cost of parsing the format.

Parameters:n_words (int) – The number of SpiNNaker words to be handled.
Returns:A struct for working with that many words.
Return type:Struct
spinn_front_end_common.utilities.helpful_functions.read_data(x, y, address, length, data_format, transceiver)[source]

Reads and converts a single data item from memory.

Parameters:
  • x (int) – chip x
  • y (int) – chip y
  • address (int) – base address of the SDRAM chip to read
  • length (int) – length to read
  • data_format (str) – the format to read memory (see struct.pack())
  • transceiver (Transceiver) – the SpinnMan interface
spinn_front_end_common.utilities.helpful_functions.write_address_to_user0(txrx, x, y, p, address)[source]

Writes the given address into the user_0 register of the given core.

Parameters:
  • txrx (Transceiver) – The transceiver.
  • x (int) – Chip coordinate.
  • y (int) – Chip coordinate.
  • p (int) – Core ID on chip.
  • address (int) – Value to write (32-bit integer)
spinn_front_end_common.utilities.helpful_functions.write_address_to_user1(txrx, x, y, p, address)[source]

Writes the given address into the user_1 register of the given core.

Parameters:
  • txrx (Transceiver) – The transceiver.
  • x (int) – Chip coordinate.
  • y (int) – Chip coordinate.
  • p (int) – Core ID on chip.
  • address (int) – Value to write (32-bit integer)

spinn_front_end_common.utilities.sqlite_db module

class spinn_front_end_common.utilities.sqlite_db.Isolation[source]

Bases: enum.Enum

Transaction isolation levels for SQLiteDB.transaction().

DEFERRED = 'DEFERRED'

Standard transaction type; postpones holding a lock until required.

EXCLUSIVE = 'EXCLUSIVE'

Take a write lock immediately. This is the strongest lock type.

IMMEDIATE = 'IMMEDIATE'

Take the lock immediately; this may be a read-lock that gets upgraded.

class spinn_front_end_common.utilities.sqlite_db.SQLiteDB(database_file=None, *, read_only=False, ddl_file=None, row_factory=<class 'sqlite3.Row'>, text_factory=<class 'memoryview'>, case_insensitive_like=True)[source]

Bases: spinn_utilities.abstract_context_manager.AbstractContextManager

General support class for SQLite databases. This handles a lot of the low-level detail of setting up a connection.

Basic usage (with the default row type):

with SQLiteDB("db_file.sqlite3") as db:
    with db.transaction() as cursor:
        for row in cursor.execute("SELECT thing FROM ..."):
            print(row["thing"])

This class is designed to be either used as above or by subclassing. See the SQLite SQL documentation for details of how to write queries, and the Python sqlite3 module for how to do parameter binding.

Parameters:
  • database_file (str) – The name of a file that contains (or will contain) an SQLite database holding the data. If omitted, an unshared in-memory database will be used (suitable only for testing).
  • read_only (bool) – Whether the database is in read-only mode. When the database is in read-only mode, it must already exist.
  • ddl_file (str or None) – The name of a file (typically containing SQL DDL commands used to create the tables) to be evaluated against the database before this object completes construction. If None, nothing will be evaluated. You probably don’t want to specify a DDL file at the same time as setting read_only=True.
  • row_factory (Callable or None) – Callable used to create the rows of result sets. Either tuple or sqlite3.Row (default); can be None to use the DB driver default.
  • text_factory (Callable or None) – Callable used to create the Python values of non-numeric columns in result sets. Usually memoryview (default) but should be str when you’re expecting string results; can be None to use the DB driver default.
  • case_insensitive_like (bool) – Whether we want the LIKE matching operator to be case-sensitive or case-insensitive (default).
close()[source]

Finalises and closes the database.

connection

The underlying SQLite database connection.

Warning

If you’re using this a lot, consider contacting the SpiNNaker Software Team with details of your use case so we can extend the relevant core class to support you. Normally it is better to use transaction() to obtain a cursor with appropriate transactional guards.

Return type:Connection
Raises:AttributeError – if the database connection has been closed
pragma(pragma_name, value)[source]

Set a database PRAGMA. See the SQLite PRAGMA documentation for details.

Parameters:
  • pragma_name (str) – The name of the pragma to set.
  • value (bool or int or str) – The value to set the pragma to.
transaction(isolation_level=None)[source]

Get a context manager that manages a transaction on the database. The value of the context manager is a Cursor. This means you can do this:

with db.transaction() as cursor:
    cursor.execute(...)
Parameters:isolation_level (Isolation) – The transaction isolation level; note that this sets it for the connection! Can usually be not specified.
Return type:ContextManager(Cursor)

spinn_front_end_common.utilities.system_control_logic module

spinn_front_end_common.utilities.system_control_logic.run_system_application(executable_cores, app_id, transceiver, executable_finder, read_algorithm_iobuf, check_for_success_function, cpu_end_states, needs_sync_barrier, filename_template, binaries_to_track=None, progress_bar=None, logger=None)[source]

Executes the given _system_ application. Used for on-chip expanders, compressors, etc.

Parameters:
  • executable_cores (ExecutableTargets) – the cores to run the executable on
  • app_id (int) – the app-id for the executable
  • transceiver (Transceiver) – the SpiNNMan instance
  • executable_finder (ExecutableFinder) – finder for executable paths
  • read_algorithm_iobuf (bool) – whether to report IOBUFs
  • check_for_success_function (callable) – function used to check success; expects executable_cores, transceiver as inputs
  • cpu_end_states (set(CPUState)) – the states that a successful run is expected to terminate in
  • needs_sync_barrier (bool) – whether a sync barrier is needed
  • filename_template (str) – the IOBUF filename template.
  • binaries_to_track (list(str)) – A list of binary names to check for exit state. Or None for all binaries
  • progress_bar (ProgressBar or None) – Possible progress bar to update. end() will be called after state checked
  • logger (Logger) – If provided and IOBUF is extracted, will be used to log errors and warnings
Raises:

SpinnmanException – If one should arise from the underlying SpiNNMan calls

Module contents

class spinn_front_end_common.utilities.FecTimer(category, algorithm)

Bases: object

error(reason)[source]
classmethod setup(simulator)[source]
skip(reason)[source]
skip_if_cfg_false(section, option)[source]
skip_if_cfgs_false(section, option1, option2)[source]
skip_if_empty(value, name)[source]
skip_if_has_not_run()[source]
skip_if_virtual_board()[source]
class spinn_front_end_common.utilities.IOBufExtractor(transceiver, executable_targets, executable_finder, recovery_mode=False, filename_template='iobuf_for_chip_{}_{}_processor_id_{}.txt', suppress_progress=False)

Bases: object

Extract the logging output buffers from the machine, and separates lines based on their prefix.

Parameters:
extract_iobuf()[source]

Perform the extraction of IOBUF

Returns:error_entries, warn_entries
Return type:tuple(list(str),list(str))