These pages document the python code for the SpiNNMan module which is part of the SpiNNaker Project.
This code depends on SpiNNUtils, SpiNNMachine and SpiNNStorageHandlers (Combined_documentation).
SpiNNMan¶
Used to communicate with a SpiNNaker Board. The main part of this package is the spinnman.transceiver.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 the 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¶
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 routedwrite_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_status_count()
is used to determine if a simulation is complete or has gone into an error state.get_iobuf()
,get_cpu_information()
andget_router_diagnostics()
are used to diagnose a problem with a simulationread_memory()
is used to read some statistics recorded in SDRAM after a simulation
Contents¶
- spinnman package
- Subpackages
- spinnman.connections package
- spinnman.messages package
- spinnman.model package
- Subpackages
- Submodules
- spinnman.model.adc_info module
- spinnman.model.bmp_connection_data module
- spinnman.model.chip_info module
- spinnman.model.chip_summary_info module
- spinnman.model.cpu_info module
- spinnman.model.cpu_infos module
- spinnman.model.diagnostic_filter module
- spinnman.model.dpri_status module
- spinnman.model.executable_targets module
- spinnman.model.io_buffer module
- spinnman.model.machine_dimensions module
- spinnman.model.p2p_table module
- spinnman.model.router_diagnostics module
- spinnman.model.version_info module
- Module contents
- spinnman.model_binaries package
- spinnman.processes package
- Submodules
- spinnman.processes.abstract_multi_connection_process module
- spinnman.processes.abstract_multi_connection_process_connection_selector module
- spinnman.processes.abstract_process module
- spinnman.processes.abstract_single_connection_process module
- spinnman.processes.application_run_process module
- spinnman.processes.de_alloc_sdram_process module
- spinnman.processes.exit_dpri_process module
- spinnman.processes.get_cpu_info_process module
- spinnman.processes.get_machine_process module
- spinnman.processes.get_routes_process module
- spinnman.processes.get_tags_process module
- spinnman.processes.get_version_process module
- spinnman.processes.load_routes_process module
- spinnman.processes.malloc_sdram_process module
- spinnman.processes.most_direct_connection_selector module
- spinnman.processes.read_dpri_status_process module
- spinnman.processes.read_iobuf_process module
- spinnman.processes.read_memory_process module
- spinnman.processes.read_router_diagnostics_process module
- spinnman.processes.reset_dpri_counters_process module
- spinnman.processes.round_robin_connection_selector module
- spinnman.processes.send_single_command_process module
- spinnman.processes.set_dpri_packet_types_process module
- spinnman.processes.set_dpri_router_emergency_timeout_process module
- spinnman.processes.set_dpri_router_timeout_process module
- spinnman.processes.write_memory_flood_process module
- spinnman.processes.write_memory_process module
- Module contents
- spinnman.utilities package
- Submodules
- spinnman.constants module
- spinnman.exceptions module
- spinnman.transceiver module
- Module contents
- Subpackages