These pages document the python code for the SpiNNMan module which is part of the SpiNNaker Project.
This code depends on SpiNNUtils and SpiNNMachine (Combined_documentation).
SpiNNMan¶
Used to communicate with a SpiNNaker Board. The main part of this package is
the Transceiver
class. This can be used to
send and receive packets in various SpiNNaker formats, depending on what
connections are available.
Functional Requirements¶
Connect to and communicate with a machine using a number of different connections.
Boot a machine with the expected version of the software.
If the machine is already booted but the version is not the version expected, an exception will be thrown.
Check the version of the software which the machine is booted with.
Query the state of the machine to determine:
What the current state of the machine is in terms of the chips and cores available, the SDRAM available on the chips and which links are available between which chips.
What external links to the host exist (and separately add the discovered links to the set of links used to communicate with the machine).
What is running on the machine and where, and what the current status of those processes are.
How many cores are in a given state.
What is in the IOBUF buffers.
What the current routing entries for a given router are.
What the routing status counter values are.
Load application binaries on to the machine, either to individual cores or via a “flood-fill” mechanism to multiple cores simultaneously (which may be a subset of the cores on a subset of the chips).
Write data to SDRAM, either on an individual chip, or via a “flood-fill” mechanism to multiple chips simultaneously.
Send a signal to an application.
Read data from SDRAM on an individual chip.
Send and receive SpiNNaker packets where the connections allow this.
If no connection supports this packet type, an exception is thrown.
The user should be able to select which connection is used. Selection of a connection which does not support the traffic type will also result in an exception.
Send and receive SCP and SDP packets where the connections allow this.
If no connection supports the packet type, an exception is thrown.
The user should be able to select which connection is used. Selection of a connection which does not support the traffic type will also result in an exception.
It should be possible to call any of the functions simultaneously, including the same function more than once.
Where possible, multiple connections should be used to overlap calls.
The functions should not return until they have confirmed that any messages sent have been received, and any responses have been received.
Functions should not respond with the result of a different function.
Functions can further sub-divide the call into a number of separate calls that can be divided across the available connections, so long as the other requirements are met.
More than one machine can be connected to the same host.
Once the subset of connections has been worked out for each machine, the operation of these machines should be independent.
Use Cases¶
Connecting is done by using
create_transceiver_from_hostname()
.boot_board()
andget_scamp_version()
are used to ensure that the board is booted correctly before starting a simulation.get_machine_details()
is used to get a representation of the current state of the machine, which is used to decide where executables are to be run on the board for a particular simulation, where any external peripherals are connected, and how messages between the executables and/or the external peripherals are to be routed.write_memory()
andexecute()
are used to write parameters and execute executables on the boardsend_signal()
is used to send a signal which starts, stops or pauses a simulation.get_core_state_count()
is used to determine if a simulation is complete or has gone into an error state.get_iobuf()
,get_cpu_infos()
andget_router_diagnostics()
are used to diagnose a problem with a simulation.read_memory()
is used to read some statistics recorded in SDRAM after a simulation.
Contents¶
- spinnman
- spinnman package
- Subpackages
- Submodules
- spinnman.board_test_configuration module
- spinnman.config_setup module
- spinnman.constants module
BMP_ADC_MAX
BMP_MISSING_FAN
BMP_MISSING_TEMP
BMP_POST_POWER_ON_SLEEP_TIME
BMP_POWER_ON_TIMEOUT
BMP_TEMP_SCALE
BMP_TIMEOUT
BMP_V_SCALE_12
BMP_V_SCALE_2_5
BMP_V_SCALE_3_3
BOOT_RETRIES
CPU_INFO_BYTES
CPU_INFO_OFFSET
CPU_IOBUF_ADDRESS_OFFSET
CPU_MAX_USER
CPU_USER_OFFSET
CPU_USER_START_ADDRESS
EIEIO_COMMAND_IDS
IPTAG_TIME_OUT_WAIT_TIMES
MAX_TAG_ID
NO_ROUTER_DIAGNOSTIC_FILTERS
N_RETRIES
READ_TYPES
ROUTER_DEFAULT_FILTERS_MAX_POSITION
ROUTER_DIAGNOSTIC_FILTER_SIZE
ROUTER_FILTER_CONTROLS_OFFSET
ROUTER_REGISTER_BASE_ADDRESS
ROUTER_REGISTER_P2P_ADDRESS
ROUTER_REGISTER_REGISTERS
SCP_SCAMP_PORT
SCP_TIMEOUT
SCP_TIMEOUT_COUNT
SYSTEM_VARIABLE_BASE_ADDRESS
SYSTEM_VARIABLE_BYTES
UDP_BOOT_CONNECTION_DEFAULT_PORT
UDP_MESSAGE_MAX_SIZE
address_length_dtype
- spinnman.exceptions module
SpallocException
SpiNNManCoresNotInStateException
SpinnmanEIEIOPacketParsingException
SpinnmanEOFException
SpinnmanException
SpinnmanGenericProcessException
SpinnmanGroupedProcessException
SpinnmanIOException
SpinnmanInvalidPacketException
SpinnmanInvalidParameterException
SpinnmanInvalidParameterTypeException
SpinnmanTimeoutException
SpinnmanUnexpectedResponseCodeException
SpinnmanUnsupportedOperationException
- spinnman.get_cores_in_run_state module
- Module contents
- spinnman package