API Reference: grenade¶
-
class
grenade::vx::compute
::
Addition
¶ - #include <addition.h>
Compute an addition of a constant to given data batches of type signal_flow::Int8.
Public Functions
-
Addition
() = default¶
-
Addition (std::vector< signal_flow::Int8 > const &other) SYMBOL_VISIBLE
Create single Addition compute graph wrapper.
- Parameters
other – Value to add to given data.
-
size_t input_size () const SYMBOL_VISIBLE
-
size_t output_size () const SYMBOL_VISIBLE
-
std::vector< std::vector< signal_flow::Int8 > > run (std::vector< std::vector< signal_flow::Int8 > > const &inputs, lola::vx::v3::Chip const &config, execution::JITGraphExecutor &executor) const SYMBOL_VISIBLE
Run given operation.
- Parameters
inputs – Input values to use
config – Static chip configuration to be used
executor – Executor backend to use
- Returns
Resulting values
Private Members
-
signal_flow::Graph
m_graph
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_input_vertex
= {}¶
-
std::vector<signal_flow::Int8>
m_other
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_other_vertex
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_output_vertex
= {}¶
Friends
- friend struct cereal::access
-
-
struct
grenade::vx::signal_flow::vertex
::
Addition
¶ - #include <addition.h>
Addition of multiple inputs of signal_flow::Int8 data type.
Public Functions
-
Addition
() = default¶
-
explicit Addition (size_t size) SYMBOL_VISIBLE
Construct addition with specified size.
- Parameters
size – Number of data values per input
-
std::array< Port, 1 > inputs () const SYMBOL_VISIBLE
-
bool operator!= (Addition const &other) const SYMBOL_VISIBLE
-
bool operator== (Addition const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= true¶
Private Members
-
size_t
m_size
= {}¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, Addition const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::routing::SynapseDriverOnDLSManager
::
Allocation
¶ - #include <synapse_driver_on_dls_manager.h>
Allocation of synapse drivers.
Public Members
-
std::map<halco::hicann_dls::vx::v3::PADIBusOnDLS, SynapseDriverOnPADIBusManager::Allocation>
synapse_drivers
¶ Collection of synapse drivers with their mask.
Friends
-
friend std::ostream & operator<< (std::ostream &os, Allocation const &config) SYMBOL_VISIBLE
-
std::map<halco::hicann_dls::vx::v3::PADIBusOnDLS, SynapseDriverOnPADIBusManager::Allocation>
-
struct
grenade::vx::network::routing::SynapseDriverOnPADIBusManager
::
Allocation
¶ - #include <synapse_driver_on_padi_bus_manager.h>
Allocation of synapse drivers.
Public Members
Friends
-
friend std::ostream & operator<< (std::ostream &os, Allocation const &allocation) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::routing::SynapseDriverOnPADIBusManager
::
AllocationPolicyBacktracking
¶ - #include <synapse_driver_on_padi_bus_manager.h>
Public Functions
-
AllocationPolicyBacktracking (std::optional< std::chrono::milliseconds > const &max_duration=std::nullopt) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::routing::SynapseDriverOnPADIBusManager
::
AllocationPolicyGreedy
¶ - #include <synapse_driver_on_padi_bus_manager.h>
Public Functions
-
AllocationPolicyGreedy (bool enable_exclusive_first=true) SYMBOL_VISIBLE
Public Members
-
bool
enable_exclusive_first
¶
-
-
struct
grenade::vx::network::routing::SynapseDriverOnDLSManager
::
AllocationRequest
¶ - #include <synapse_driver_on_dls_manager.h>
Properties of a potential allocation of synapse drivers.
Public Types
-
typedef SynapseDriverOnPADIBusManager::AllocationRequest::Shape
Shape
¶
Public Functions
-
bool operator!= (AllocationRequest const &other) const SYMBOL_VISIBLE
-
bool operator== (AllocationRequest const &other) const SYMBOL_VISIBLE
-
bool valid () const SYMBOL_VISIBLE
Get whether request is valid by checking for non-empty labels and shapes.
Public Members
-
std::optional<DependentLabelGroup>
dependent_label_group
¶
Friends
-
friend std::ostream & operator<< (std::ostream &os, AllocationRequest const &config) SYMBOL_VISIBLE
-
typedef SynapseDriverOnPADIBusManager::AllocationRequest::Shape
-
struct
grenade::vx::network::routing::SynapseDriverOnPADIBusManager
::
AllocationRequest
¶ - #include <synapse_driver_on_padi_bus_manager.h>
Properties of a requested allocation of synapse drivers.
A request has a single label for incoming events and possibly multiple requested synapse driver collections with specified shape.
Public Functions
-
bool is_sensitive_for_shape_allocation_order () const SYMBOL_VISIBLE
Get whether the request is sensitive to ordering of shapes on the available synapse drivers.
This is the case exactly if any shape shall be contiguous and the allocation does not contain only equal shapes.
-
bool operator!= (AllocationRequest const &other) const SYMBOL_VISIBLE
-
bool operator== (AllocationRequest const &other) const SYMBOL_VISIBLE
-
size_t size () const SYMBOL_VISIBLE
Get accumulated size of all shapes of the request.
Public Members
Friends
-
friend std::ostream & operator<< (std::ostream &os, AllocationRequest const &value) SYMBOL_VISIBLE
-
-
class
grenade::vx::compute
::
ArgMax
¶ - #include <argmax.h>
Compute a argmax operation.
The returned index type is 32bit unsigned integer.
Public Functions
-
ArgMax
() = default¶
-
ArgMax (size_t size) SYMBOL_VISIBLE
Create single ArgMax compute graph wrapper.
- Parameters
size – Size of operation.
-
size_t input_size () const SYMBOL_VISIBLE
-
size_t output_size () const SYMBOL_VISIBLE
-
std::vector< std::vector< signal_flow::UInt32 > > run (std::vector< std::vector< signal_flow::Int8 > > const &inputs, lola::vx::v3::Chip const &config, execution::JITGraphExecutor &executor) const SYMBOL_VISIBLE
Run given operation.
- Parameters
inputs – Input values to use
config – Static chip configuration to be used
executor – Executor backend to use
- Returns
Resulting values
Private Members
-
signal_flow::Graph
m_graph
¶
-
signal_flow::Graph::vertex_descriptor
m_input_vertex
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_output_vertex
= {}¶
Friends
- friend struct cereal::access
-
-
struct
grenade::vx::signal_flow::vertex
::
ArgMax
¶ - #include <argmax.h>
ArgMax of multiple inputs.
Public Functions
-
ArgMax
() = default¶
-
explicit ArgMax (size_t size, ConnectionType type) SYMBOL_VISIBLE
Construct operation with specified size.
- Parameters
size – Number of data values
type – Type of data to compute argmax over
-
std::array< Port, 1 > inputs () const SYMBOL_VISIBLE
-
bool operator!= (ArgMax const &other) const SYMBOL_VISIBLE
-
bool operator== (ArgMax const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, ArgMax const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network
::
AtomicNeuronOnNetwork
¶ - #include <atomic_neuron_on_network.h>
Public Functions
-
AtomicNeuronOnNetwork
() = default¶
-
AtomicNeuronOnNetwork (PopulationDescriptor population, size_t neuron_on_population, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron compartment_on_neuron, size_t atomic_neuron_on_compartment) SYMBOL_VISIBLE
-
bool operator!= (AtomicNeuronOnNetwork const &other) const SYMBOL_VISIBLE
-
bool operator< (AtomicNeuronOnNetwork const &other) const SYMBOL_VISIBLE
-
bool operator<= (AtomicNeuronOnNetwork const &other) const SYMBOL_VISIBLE
-
bool operator== (AtomicNeuronOnNetwork const &other) const SYMBOL_VISIBLE
-
bool operator> (AtomicNeuronOnNetwork const &other) const SYMBOL_VISIBLE
-
bool operator>= (AtomicNeuronOnNetwork const &other) const SYMBOL_VISIBLE
Public Members
-
size_t
atomic_neuron_on_compartment
= {0}¶
-
halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron
compartment_on_neuron
= {}¶
-
size_t
neuron_on_population
= {0}¶
-
PopulationDescriptor
population
= {}¶
Friends
-
friend std::ostream & operator<< (std::ostream &os, AtomicNeuronOnNetwork const &value) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::routing::RoutingConstraints
::
BackgroundConnection
¶ - #include <routing_constraints.h>
Synaptic connection from a background spike source to an on-chip neuron.
Public Functions
-
bool operator!= (BackgroundConnection const &other) const SYMBOL_VISIBLE
-
bool operator== (BackgroundConnection const &other) const SYMBOL_VISIBLE
-
halco::hicann_dls::vx::v3::PADIBusOnDLS toPADIBusOnDLS () const SYMBOL_VISIBLE
Get PADI-bus onto which the synapse is to be placed.
Public Members
-
std::pair<ProjectionDescriptor, size_t>
descriptor
¶ Descriptor of connection in abstract network.
-
halco::hicann_dls::vx::v3::BackgroundSpikeSourceOnDLS
source
¶ Source circuit.
-
halco::hicann_dls::vx::v3::AtomicNeuronOnDLS
target
¶ Target neuron.
-
-
struct
grenade::vx::network::routing::SourceOnPADIBusManager
::
BackgroundSource
¶ - #include <source_on_padi_bus_manager.h>
Properties of a background source.
-
struct
grenade::vx::network
::
BackgroundSourcePopulation
¶ - #include <background_source_population.h>
Background source population.
Public Types
-
typedef std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, halco::hicann_dls::vx::v3::PADIBusOnPADIBusBlock>
Coordinate
¶ Placement of the source.
Public Functions
-
BackgroundSourcePopulation
() = default¶
-
BackgroundSourcePopulation (size_t size, Coordinate const &coordinate, Config const &config) SYMBOL_VISIBLE
-
bool operator!= (BackgroundSourcePopulation const &other) const SYMBOL_VISIBLE
-
bool operator== (BackgroundSourcePopulation const &other) const SYMBOL_VISIBLE
Friends
-
friend std::ostream & operator<< (std::ostream &os, BackgroundSourcePopulation const &population) SYMBOL_VISIBLE
-
typedef std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, halco::hicann_dls::vx::v3::PADIBusOnPADIBusBlock>
-
struct
grenade::vx::signal_flow::vertex
::
BackgroundSpikeSource
¶ - #include <background_spike_source.h>
Background event source to the Crossbar.
Public Types
-
typedef haldls::vx::BackgroundSpikeSource
Config
¶
-
typedef halco::hicann_dls::vx::BackgroundSpikeSourceOnDLS
Coordinate
¶
Public Functions
-
BackgroundSpikeSource
() = default¶
-
BackgroundSpikeSource (Config const &config, Coordinate const &coordinate) SYMBOL_VISIBLE
Construct BackgroundSpikeSource.
- Parameters
config – Config to use
coordinate – Coordinate to use
-
Config const & get_config () const SYMBOL_VISIBLE
-
Coordinate const & get_coordinate () const SYMBOL_VISIBLE
-
bool operator!= (BackgroundSpikeSource const &other) const SYMBOL_VISIBLE
-
bool operator== (BackgroundSpikeSource const &other) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, BackgroundSpikeSource const &config) SYMBOL_VISIBLE
-
typedef haldls::vx::BackgroundSpikeSource
-
struct
grenade::vx::execution::detail::ExecutionInstanceBuilder
::
BatchEntry
¶ Public Types
Public Members
-
ticket_extmem_type
m_extmem_result
¶
-
std::map<signal_flow::Graph::vertex_descriptor, ticket_extmem_type>
m_plasticity_rule_recorded_scratchpad_memory
¶
-
ticket_ppu_type
m_ppu_mailbox
¶
-
ticket_ppu_type
m_ppu_result
¶
-
ticket_ppu_type
m_ppu_scheduler_event_drop_count
¶
-
ticket_ppu_type
m_ppu_scheduler_finished
¶
-
std::vector<ticket_ppu_type>
m_ppu_timer_event_drop_count
¶
-
event_guard_ticket_type
m_ticket_events_begin
¶
-
event_guard_ticket_type
m_ticket_events_end
¶
-
ticket_extmem_type
-
struct
grenade::vx::execution::detail::generator
::
BlockingPPUCommand
¶ - #include <ppu.h>
Generator for a playback program snippet from inserting a PPU command and blocking until completion.
Public Functions
Protected Functions
-
stadls::vx::v3::PlaybackGeneratorReturn< Result > generate () const SYMBOL_VISIBLE
Private Members
-
halco::hicann_dls::vx::v3::PPUMemoryWordOnPPU
m_coord
¶
Friends
-
friend auto
generate
(BlockingPPUCommand const&)¶
-
-
struct
grenade::vx
::
CachingCompiler
: public grenade::vx::Compiler¶ - #include <ppu.h>
Compiler with global cache of compiled programs.
Public Functions
-
Program compile (std::vector< std::string > sources) SYMBOL_VISIBLE
Compile sources into target program or return from cache if already compiled.
Public Members
-
std::vector<std::string>
options_after_source
= {"-Bstatic", get_library_paths(), "-lgcc", "-lnux_vx_v3", "-lhalco_common_ppu_vx", "-lhalco_hicann_dls_ppu_vx", "-lhalco_hicann_dls_ppu_vx_v3", "-lfisch_ppu_vx", "-lhaldls_ppu_vx_v3", "-lnux_vx_v3", "-Wl,--whole-archive", get_libnux_runtime("nux_runtime_vx_v3.o"), "-Wl,--no-whole-archive", "-lc", "-lgcc", "-Bdynamic",}¶
-
std::vector<std::string>
options_before_source
= {"-std=gnu++17", "-fdiagnostics-color=always", "-O2", "-g", "-fno-omit-frame-pointer", "-fno-strict-aliasing", "-Wall", "-Wextra", "-pedantic", "-ffreestanding", "-mcpu=nux", "-fno-exceptions", "-fno-rtti", "-fno-non-call-exceptions", "-fno-common", "-ffunction-sections", "-fdata-sections", "-fno-threadsafe-statics", "-fstack-usage", "-mcpu=s2pp_hx", get_include_paths(), "-DSYSTEM_HICANN_DLS_MINI", "-DLIBNUX_TIME_RESOLUTION_SHIFT=0", "-fuse-ld=bfd", "-Wl,--gc-sections", "-nostdlib", "-T" + get_linker_file("elf32nux.x"), "-Wl,--defsym=mailbox_size=4096",}¶
Public Static Attributes
-
static constexpr auto
name
= "powerpc-ppu-g++"¶
Private Static Functions
-
static ProgramCache &
get_program_cache
()¶
-
-
struct
grenade::vx::signal_flow::vertex
::
CADCMembraneReadoutView
¶ - #include <cadc_membrane_readout_view.h>
Readout of membrane voltages via the CADC.
Public Types
-
typedef std::vector<std::vector<halco::hicann_dls::vx::v3::SynapseOnSynapseRow>>
Columns
¶ Columns to record as collection of collections of columns.
Each inner collection corresponds to one input port of the vertex and thus allows recording neurons from different non-contiguous input vertices.
-
typedef halco::hicann_dls::vx::v3::SynramOnDLS
Synram
¶
Public Functions
-
CADCMembraneReadoutView
() = default¶
-
template<typename
ColumnsT
, typenameSynramT
, typenameSourcesT
>
explicitCADCMembraneReadoutView
(ColumnsT &&columns, SynramT &&synram, Mode const &mode, SourcesT &&sources)¶ Construct CADCMembraneReadoutView with specified size.
- Parameters
columns – Columns to read out
-
Columns const & get_columns () const SYMBOL_VISIBLE
-
Mode const & get_mode () const SYMBOL_VISIBLE
-
Sources const & get_sources () const SYMBOL_VISIBLE
-
Synram const & get_synram () const SYMBOL_VISIBLE
-
std::vector< Port > inputs () const SYMBOL_VISIBLE
-
bool operator!= (CADCMembraneReadoutView const &other) const SYMBOL_VISIBLE
-
bool operator== (CADCMembraneReadoutView const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
-
bool supports_input_from (NeuronView const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Private Functions
-
void check (Columns const &columns, Sources const &sources) SYMBOL_VISIBLE
Private Members
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, CADCMembraneReadoutView const &config) SYMBOL_VISIBLE
-
typedef std::vector<std::vector<halco::hicann_dls::vx::v3::SynapseOnSynapseRow>>
-
struct
grenade::vx::network
::
CADCRecording
¶ - #include <cadc_recording.h>
CADC recording of a collection of neurons.
Public Functions
-
CADCRecording
() = default¶
-
CADCRecording (std::vector< Neuron > const &neurons) SYMBOL_VISIBLE
-
bool operator!= (CADCRecording const &other) const SYMBOL_VISIBLE
-
bool operator== (CADCRecording const &other) const SYMBOL_VISIBLE
-
-
template<typename
VertexVariant
>
structCheckVertexConcept
¶
-
template<typename ...
Vertex
>
structgrenade::vx::signal_flow::detail
::
CheckVertexConcept
<std::variant<Vertex...>> : public grenade::vx::signal_flow::detail::VertexConcept<Vertex>¶ - #include <vertex_concept.h>
-
struct
grenade::vx::network::Population::Neuron
::
Compartment
¶ - #include <population.h>
Compartment properties.
Public Types
Public Functions
-
Compartment (std::optional< SpikeMaster > const &spike_master, Receptors const &receptors) SYMBOL_VISIBLE
-
bool operator!= (Compartment const &other) const SYMBOL_VISIBLE
-
bool operator== (Compartment const &other) const SYMBOL_VISIBLE
Friends
-
friend std::ostream & operator<< (std::ostream &os, Compartment const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx
::
Compiler
¶ - #include <ppu.h>
Compiler for PPU programs.
Subclassed by grenade::vx::CachingCompiler
Public Functions
-
Compiler () SYMBOL_VISIBLE
-
Program compile (std::vector< std::string > sources) SYMBOL_VISIBLE
Compile sources into target program.
Public Members
-
std::vector<std::string>
options_after_source
= {"-Bstatic", get_library_paths(), "-lgcc", "-lnux_vx_v3", "-lhalco_common_ppu_vx", "-lhalco_hicann_dls_ppu_vx", "-lhalco_hicann_dls_ppu_vx_v3", "-lfisch_ppu_vx", "-lhaldls_ppu_vx_v3", "-lnux_vx_v3", "-Wl,--whole-archive", get_libnux_runtime("nux_runtime_vx_v3.o"), "-Wl,--no-whole-archive", "-lc", "-lgcc", "-Bdynamic",}¶
-
std::vector<std::string>
options_before_source
= {"-std=gnu++17", "-fdiagnostics-color=always", "-O2", "-g", "-fno-omit-frame-pointer", "-fno-strict-aliasing", "-Wall", "-Wextra", "-pedantic", "-ffreestanding", "-mcpu=nux", "-fno-exceptions", "-fno-rtti", "-fno-non-call-exceptions", "-fno-common", "-ffunction-sections", "-fdata-sections", "-fno-threadsafe-statics", "-fstack-usage", "-mcpu=s2pp_hx", get_include_paths(), "-DSYSTEM_HICANN_DLS_MINI", "-DLIBNUX_TIME_RESOLUTION_SHIFT=0", "-fuse-ld=bfd", "-Wl,--gc-sections", "-nostdlib", "-T" + get_linker_file("elf32nux.x"), "-Wl,--defsym=mailbox_size=4096",}¶
Public Static Attributes
-
static constexpr auto
name
= "powerpc-ppu-g++"¶
-
-
struct
grenade::vx::signal_flow::vertex::transformation
::
Concatenation
: public grenade::vx::signal_flow::vertex::Transformation::Function¶ - #include <concatenation.h>
Public Types
-
typedef signal_flow::IODataMap::Entry
Value
¶
Public Functions
-
Concatenation
() = default¶
-
Concatenation
(ConnectionType type, std::vector<size_t> const &sizes)¶ Construct concatenation transformation with data type and sizes to concatenate.
- Parameters
type – Data type
sizes – Sizes
-
~Concatenation () SYMBOL_VISIBLE
-
virtual Value
apply
(std::vector<Value> const &value) const¶ Apply function on input value.
- Parameters
value – Input value
- Returns
Transformed output value
-
virtual bool
equal
(Transformation::Function const &other) const¶
Friends
- friend struct cereal::access
-
typedef signal_flow::IODataMap::Entry
-
struct
grenade::vx::network::BackgroundSourcePopulation
::
Config
¶ - #include <background_source_population.h>
Configuration of the source.
Public Functions
-
bool operator!= (Config const &other) const SYMBOL_VISIBLE
-
bool operator== (Config const &other) const SYMBOL_VISIBLE
Public Members
-
bool
enable_random
¶
-
haldls::vx::v3::BackgroundSpikeSource::Period
period
¶
-
haldls::vx::v3::BackgroundSpikeSource::Rate
rate
¶
-
haldls::vx::v3::BackgroundSpikeSource::Seed
seed
¶
Friends
-
friend std::ostream & operator<< (std::ostream &os, Config const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex::NeuronView
::
Config
¶ - #include <neuron_view.h>
Public Types
-
typedef lola::vx::v3::AtomicNeuron::EventRouting::Address
Label
¶
Public Functions
-
bool operator!= (Config const &other) const SYMBOL_VISIBLE
-
bool operator== (Config const &other) const SYMBOL_VISIBLE
Friends
- friend struct cereal::access
-
typedef lola::vx::v3::AtomicNeuron::EventRouting::Address
-
struct
grenade::vx::signal_flow::vertex::SynapseDriver
::
Config
¶ - #include <synapse_driver.h>
Public Types
-
typedef haldls::vx::v3::SynapseDriverConfig::RowAddressCompareMask
RowAddressCompareMask
¶
Public Functions
-
bool operator!= (Config const &other) const SYMBOL_VISIBLE
-
bool operator== (Config const &other) const SYMBOL_VISIBLE
Public Members
-
bool
enable_address_out
= {false}¶
-
RowAddressCompareMask
row_address_compare_mask
= {}¶
Friends
- friend struct cereal::access
-
typedef haldls::vx::v3::SynapseDriverConfig::RowAddressCompareMask
-
struct
grenade::vx::execution::backend
::
Connection
¶ - #include <connection.h>
Connection to hardware/simulation ensuring proper initialization.
In addition to the initialized connection a corresponding reinit stack is being held, which requires an equal lifetime.
Public Types
-
typedef std::variant<stadls::vx::v3::ExperimentInit, stadls::vx::v3::DigitalInit>
Init
¶ Accepted initialization generators.
Public Functions
-
Connection () SYMBOL_VISIBLE
Construct connection from environment and initialize with default constructed ExperimentInit.
-
Connection (hxcomm::vx::ConnectionVariant &&connection) SYMBOL_VISIBLE
Construct connection from hxcomm connection and initialize with default constructed ExperimentInit.
Ownership of the hxcomm connection is transferred to this object.
- Parameters
connection – Connection from hxcomm to use
-
Connection (hxcomm::vx::ConnectionVariant &&connection, Init const &init) SYMBOL_VISIBLE
Construct connection from hxcomm connection and initialization generator.
Ownership of the hxcomm connection is transferred to this object.
- Parameters
connection – Connection from hxcomm to use
init – Initialization to use
-
stadls::vx::v3::ReinitStackEntry create_reinit_stack_entry () SYMBOL_VISIBLE
Create entry on reinit stack.
- Returns
Created reinit stack entry
-
std::string get_bitfile_info () const SYMBOL_VISIBLE
Get bitfile information.
- Returns
Bitfile info
-
std::string get_remote_repo_state () const SYMBOL_VISIBLE
Get server-side remote repository state information.
Only non-empty for hxcomm connection being QuiggeldyConnection.
- Returns
Repository state
-
hxcomm::ConnectionTimeInfo get_time_info () const SYMBOL_VISIBLE
Get time information of execution(s).
- Returns
Time information
-
std::string get_unique_identifier (std::optional< std::string > const &hwdb_path) const SYMBOL_VISIBLE
Get unique identifier from hwdb.
- Parameters
hwdb_path – Optional path to hwdb
- Returns
Unique identifier
-
bool is_quiggeldy () const SYMBOL_VISIBLE
Get whether owned hxcomm connection is QuiggeldyConnection.
- Returns
Boolean value
-
hxcomm::vx::ConnectionVariant && release () SYMBOL_VISIBLE
Release ownership of hxcomm connection.
- Returns
Previously owned hxcomm connection
Public Static Attributes
-
static constexpr char
name
[] = "Connection"¶ Name of connection used in Python wrapping.
Private Members
-
hxcomm::vx::ConnectionVariant
m_connection
¶
-
size_t
m_expected_link_notification_count
¶ Expected highspeed link notification count in run().
During initialization the notification count is expected to match the number of enabled links, afterwards, no (zero) notifications are expected.
-
stadls::vx::v3::ReinitStackEntry
m_init
¶ Reinit stack entry of initialization for reapplication.
Friends
-
friend stadls::vx::RunTimeInfo
run
(Connection&, stadls::vx::v3::PlaybackProgram&&)¶ Execute given playback program using the given connection.
- Parameters
connection – Connection to run on
program – Program to execute
- Returns
Run time information of execution
-
friend stadls::vx::RunTimeInfo
run
(Connection&, stadls::vx::v3::PlaybackProgram&)¶ Execute given playback program using the given connection.
- Parameters
connection – Connection to run on
program – Program to execute
- Returns
Run time information of execution
-
typedef std::variant<stadls::vx::v3::ExperimentInit, stadls::vx::v3::DigitalInit>
-
struct
grenade::vx::network::Projection
::
Connection
¶ - #include <projection.h>
Single neuron connection.
Public Types
Public Functions
-
Connection
() = default¶
-
Connection (Index const &index_pre, Index const &index_post, Weight weight) SYMBOL_VISIBLE
-
bool operator!= (Connection const &other) const SYMBOL_VISIBLE
-
bool operator== (Connection const &other) const SYMBOL_VISIBLE
Public Members
Friends
-
friend std::ostream & operator<< (std::ostream &os, Connection const &connection) SYMBOL_VISIBLE
-
-
struct
grenade::vx::execution::detail
::
ConnectionStateStorage
¶ - #include <connection_state_storage.h>
Public Functions
-
ConnectionStateStorage (bool enable_differential_config, backend::Connection &connection) SYMBOL_VISIBLE
Construct connection state storage with differential mode flag and connection.
The connection is used to construct the reinit stack entries.
- Parameters
enable_differential_config – Whether to enable differential config mode for this connection
connection – Connection to construct reinit stack entries from
Public Members
-
bool
enable_differential_config
¶
-
stadls::vx::v3::ReinitStackEntry
reinit_base
¶
-
stadls::vx::v3::ReinitStackEntry
reinit_capmem_settling_wait
¶
-
stadls::vx::v3::ReinitStackEntry
reinit_differential
¶
-
stadls::vx::v3::ReinitStackEntry
reinit_schedule_out_replacement
¶
-
stadls::vx::v3::ReinitStackEntry
reinit_trigger
¶
-
-
struct
grenade::vx::network
::
ConnectionToHardwareRoutes
¶ - #include <connection_routing_result.h>
Translation of a single connection to a collection of hardware synapse routes to an atomic neuron circuit of the logical neuron’s target compartment.
Public Functions
-
bool operator!= (ConnectionToHardwareRoutes const &other) const SYMBOL_VISIBLE
-
bool operator== (ConnectionToHardwareRoutes const &other) const SYMBOL_VISIBLE
Public Members
Friends
-
friend std::ostream & operator<< (std::ostream &os, ConnectionToHardwareRoutes const &routes) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network
::
ConnectumConnection
¶ - #include <connectum.h>
Public Types
-
typedef std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>
Source
¶
Public Functions
-
bool operator!= (ConnectumConnection const &other) const SYMBOL_VISIBLE
-
bool operator== (ConnectumConnection const &other) const SYMBOL_VISIBLE
Public Members
-
halco::hicann_dls::vx::v3::AtomicNeuronOnDLS
target
¶
-
lola::vx::v3::SynapseMatrix::Weight
weight
¶
Friends
-
friend std::ostream & operator<< (std::ostream &os, ConnectumConnection const &config) SYMBOL_VISIBLE
-
typedef std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>
-
struct
grenade::vx::signal_flow
::
ConstantReferenceIODataMap
¶ - #include <io_data_map.h>
Data map of constant references to data used for external data input in graph execution.
For each type of data a separate member allows access.
Public Functions
-
ConstantReferenceIODataMap () SYMBOL_VISIBLE
-
void clear () SYMBOL_VISIBLE
Clear content of map.
Public Members
-
std::map<signal_flow::detail::vertex_descriptor, Entry const&>
data
¶ Data is connected to specified vertex descriptors.
Batch-support is enabled by storing batch-size many data elements aside each-other.
-
std::vector<std::unordered_map<signal_flow::ExecutionInstance, common::Time>>
runtime
¶ Runtime data.
-
-
class
grenade::vx::compute
::
Conv1d
¶ - #include <conv1d.h>
Compute a multiply-accumulate operation with signed weights.
Neurons and synapse rows are filled monotonously. If more synapses are needed than fit on a single chip sequential unrolling is used.
Public Types
-
typedef std::vector<std::vector<signal_flow::UInt5>>
Activations
¶ Activations with batch as outer dimension and (in_channels, values) in row-major as inner dimension.
Public Functions
-
Conv1d
() = default¶
-
template<typename
WeightsT
>Conv1d
(WeightsT &&weights, size_t input_size, size_t stride, size_t num_sends = 1, common::Time wait_between_events = haldls::vx::v3::Timer::Value(25), bool enable_loopback = false)¶ Create single Conv1d compute graph wrapper.
- Parameters
weights – Weight matrix.
input_size – Size of one input trace
stride – Stride of convolution
num_sends – Number of times a input activation is sent to the specific row
wait_between_events – Wait time between input events in FPGA cycles
enable_loopback – Enable loopback of events with statistic analysis
-
size_t input_size () const SYMBOL_VISIBLE
-
size_t output_size () const SYMBOL_VISIBLE
-
std::vector< std::vector< signal_flow::Int8 > > run (Activations const &inputs, lola::vx::v3::Chip const &config, execution::JITGraphExecutor &executor) const SYMBOL_VISIBLE
Run given set of activations given the weights from construction.
- Parameters
inputs – Input activations to use
config – Static chip configuration to be used
executor – Executor backend to use
- Returns
Resulting accumulated membrane potentials
Private Functions
-
void build_mac (Weights &&weights) SYMBOL_VISIBLE
Private Members
-
bool
m_enable_loopback
= {false}¶
-
signal_flow::Graph
m_graph
= {}¶
-
size_t
m_in_channels
= {}¶
-
size_t
m_input_size
= {}¶
-
size_t
m_kernel_size
= {}¶
-
size_t
m_num_sends
= {}¶
-
size_t
m_out_channels
= {}¶
-
size_t
m_stride
= {}¶
Friends
- friend struct cereal::access
-
typedef std::vector<std::vector<signal_flow::UInt5>>
-
class
grenade::vx::compute
::
ConvertingReLU
¶ - #include <converting_relu.h>
Compute a rectified linear unit operation converting from signal_flow::Int8 to signal_flow::UInt5.
Public Functions
-
ConvertingReLU
() = default¶
-
ConvertingReLU (size_t size, uint32_t shift) SYMBOL_VISIBLE
Create single ConvertingReLU compute graph wrapper.
- Parameters
size – Size of operation
shift – Power-of-two (bitshift) scaling parameter before clamping, i.e. saturation to signal_flow::UInt5 value range
-
size_t input_size () const SYMBOL_VISIBLE
-
size_t output_size () const SYMBOL_VISIBLE
-
std::vector< std::vector< signal_flow::UInt5 > > run (std::vector< std::vector< signal_flow::Int8 > > const &inputs, lola::vx::v3::Chip const &config, execution::JITGraphExecutor &executor) const SYMBOL_VISIBLE
Run given operation.
- Parameters
inputs – Input values to use
config – Static chip configuration to be used
executor – Executor backend to use
- Returns
Resulting values
Private Members
-
signal_flow::Graph
m_graph
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_input_vertex
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_output_vertex
= {}¶
Friends
- friend struct cereal::access
-
-
struct
grenade::vx::signal_flow::vertex
::
ConvertingReLU
¶ - #include <converting_relu.h>
ConvertingReLU of multiple inputs from signal_flow::Int8 to signal_flow::UInt5.
Public Functions
-
ConvertingReLU
() = default¶
-
explicit ConvertingReLU (size_t size, uint32_t shift) SYMBOL_VISIBLE
Construct operation with specified size and configuration.
- Parameters
size – Number of data values per input
shift – Number of bits to shift after relu before clamping
-
uint32_t get_shift () const SYMBOL_VISIBLE
-
std::array< Port, 1 > inputs () const SYMBOL_VISIBLE
-
bool operator!= (ConvertingReLU const &other) const SYMBOL_VISIBLE
-
bool operator== (ConvertingReLU const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, ConvertingReLU const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex
::
CrossbarL2Input
¶ - #include <crossbar_l2_input.h>
Input from the FPGA to the Crossbar.
Since the data to the individual channels is split afterwards, they are presented merged here.
Public Functions
-
CrossbarL2Input
() = default¶ Construct CrossbarL2Input.
-
bool operator!= (CrossbarL2Input const &other) const SYMBOL_VISIBLE
-
bool operator== (CrossbarL2Input const &other) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, CrossbarL2Input const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex
::
CrossbarL2Output
¶ - #include <crossbar_l2_output.h>
Output from the Crossbar to the FPGA.
Since the data from the individual channels are merged, they are also presented merged here.
Public Functions
-
inline
CrossbarL2Output
()¶ Construct CrossbarL2Output.
-
bool operator!= (CrossbarL2Output const &other) const SYMBOL_VISIBLE
-
bool operator== (CrossbarL2Output const &other) const SYMBOL_VISIBLE
-
bool supports_input_from (CrossbarNode const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= true¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, CrossbarL2Output const &config) SYMBOL_VISIBLE
-
inline
-
struct
grenade::vx::signal_flow::vertex
::
CrossbarNode
¶ - #include <crossbar_node.h>
Crossbar node.
Public Types
-
typedef haldls::vx::v3::CrossbarNode
Config
¶
-
typedef haldls::vx::v3::CrossbarNode::coordinate_type
Coordinate
¶
Public Functions
-
CrossbarNode
() = default¶
-
CrossbarNode (Coordinate const &coordinate, Config const &config) SYMBOL_VISIBLE
Construct node at specified location with specified configuration.
- Parameters
coordinate – Location
config – Configuration
-
Config const & get_config () const SYMBOL_VISIBLE
-
Coordinate const & get_coordinate () const SYMBOL_VISIBLE
-
bool operator!= (CrossbarNode const &other) const SYMBOL_VISIBLE
-
bool operator== (CrossbarNode const &other) const SYMBOL_VISIBLE
-
bool supports_input_from (BackgroundSpikeSource const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, CrossbarNode const &config) SYMBOL_VISIBLE
-
typedef haldls::vx::v3::CrossbarNode
-
struct
grenade::vx::signal_flow::vertex
::
DataInput
¶ - #include <data_input.h>
Formatted data input from memory.
Public Functions
-
DataInput
() = default¶
-
explicit DataInput (ConnectionType output_type, size_t size) SYMBOL_VISIBLE
Construct DataInput with specified size and data output type.
- Parameters
output_type – Output data type
size – Number of data values
- Throws
std::runtime_error – On output data type not supported
-
std::array< Port, 1 > inputs () const SYMBOL_VISIBLE
-
bool operator!= (DataInput const &other) const SYMBOL_VISIBLE
-
bool operator== (DataInput const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= true¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, DataInput const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex
::
DataOutput
¶ - #include <data_output.h>
Formatted data output to memory.
Public Functions
-
DataOutput
() = default¶
-
explicit DataOutput (ConnectionType input_type, size_t size) SYMBOL_VISIBLE
Construct DataOutput with specified size and data input type.
- Parameters
input_type – Input data type
size – Number of data values
- Throws
std::runtime_error – On input data type not supported
-
std::array< Port, 1 > inputs () const SYMBOL_VISIBLE
-
bool operator!= (DataOutput const &other) const SYMBOL_VISIBLE
-
bool operator== (DataOutput const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= true¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, DataOutput const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::routing::SynapseDriverOnDLSManager::AllocationRequest
::
DependentLabelGroup
: public halco::common::detail::BaseType<DependentLabelGroup, size_t>¶ - #include <synapse_driver_on_dls_manager.h>
Descriptor to be used to identify a depdendency between the label space of multiple allocation requests.
Their labels are constrained such that their index in AllocationRequest::labels has to be equal.
Public Functions
-
inline explicit constexpr
DependentLabelGroup
(value_type const value = 0)¶
-
inline explicit constexpr
-
struct
grenade::vx::signal_flow
::
ExecutionIndex
: public halco::common::detail::BaseType<ExecutionIndex, size_t>¶ - #include <execution_instance.h>
Unique temporal identifier for a execution instance.
ExecutionIndex separates execution where a memory barrier is needed for data movement completion. No guarantees are made on execution order.
Public Functions
-
inline explicit constexpr
ExecutionIndex
(value_type const value = 0)¶
-
inline explicit constexpr
-
struct
grenade::vx::signal_flow
::
ExecutionInstance
¶ - #include <execution_instance.h>
Execution instance identifier.
An execution instance describes a unique physically placed isolated execution. It is placed physically on a global DLS instance.
Public Functions
-
ExecutionInstance
() = default¶
-
explicit ExecutionInstance (ExecutionIndex execution_index, halco::hicann_dls::vx::v3::DLSGlobal dls) SYMBOL_VISIBLE
-
size_t hash () const SYMBOL_VISIBLE
-
bool operator!= (ExecutionInstance const &other) const SYMBOL_VISIBLE
-
bool operator== (ExecutionInstance const &other) const SYMBOL_VISIBLE
-
halco::hicann_dls::vx::v3::DLSGlobal toDLSGlobal () const SYMBOL_VISIBLE
-
ExecutionIndex toExecutionIndex () const SYMBOL_VISIBLE
Private Members
-
halco::hicann_dls::vx::v3::DLSGlobal
m_dls_global
¶
-
ExecutionIndex
m_execution_index
¶
Friends
- friend struct cereal::access
-
friend size_t hash_value (ExecutionInstance const &e) SYMBOL_VISIBLE
-
friend std::ostream & operator<< (std::ostream &os, ExecutionInstance const &instance) SYMBOL_VISIBLE
-
-
class
grenade::vx::execution::detail
::
ExecutionInstanceBuilder
¶ - #include <execution_instance_builder.h>
Builder for a single ExecutionInstance.
Vertices are processed resulting in a playback sequence and result structure. Once executed, the result structure stores resulting measurements which can be processed to be fed back into a graph executor.
Public Functions
-
ExecutionInstanceBuilder (signal_flow::Graph const &graph, signal_flow::ExecutionInstance const &execution_instance, signal_flow::IODataMap const &input_list, signal_flow::IODataMap const &data_output, std::optional< lola::vx::v3::PPUElfFile::symbols_type > const &ppu_symbols, signal_flow::ExecutionInstancePlaybackHooks &playback_hooks) SYMBOL_VISIBLE
Construct builder.
- Parameters
graph – Graph to use for locality and property lookup
execution_instance – Local execution instance to build for
input_list – Input list to use for input data lookup
data_output – Data output from depended-on executions to use for data lookup
chip_config – Chip configuration to use
playback_hooks – Playback sequences to inject
-
PlaybackPrograms generate () SYMBOL_VISIBLE
Generate playback sequence.
- Returns
PlaybackPrograms generated via local graph traversal
-
signal_flow::IODataMap post_process () SYMBOL_VISIBLE
Postprocess by visit of all local vertices to be post processed after execution.
This resets the internal state of the builder to be ready for the next time step.
- Returns
signal_flow::IODataMap of locally computed results
-
void post_process (signal_flow::Graph::vertex_descriptor const vertex) SYMBOL_VISIBLE
-
void pre_process () SYMBOL_VISIBLE
Preprocess by single visit of all local vertices.
Public Members
-
bool
enable_cadc_baseline
= true¶ Switch to enable CADC baseline read before each sent input vector.
If disabled, the membrane resting potential is assumed to reside at CADC value 128.
Private Types
Private Functions
-
template<typename
T
>
voidfilter_events
(std::vector<std::vector<T>> &filtered_data, std::vector<T> &&data) const¶ Filter events via batch entry runtime and recording interval.
The input data is to be modified because of sorting in-place.
- Parameters
filtered_data – Filtered data per batch
data – Event sequence
- Returns
Event sequences split for the batch entries with relative chip times
-
bool
has_complete_input_list
() const¶ Get whether input list is complete for the local execution instance.
- Returns
Boolean value
-
bool inputs_available (signal_flow::Graph::vertex_descriptor const descriptor) const SYMBOL_VISIBLE
Check if any incoming vertex requires post processing.
- Parameters
descriptor – Vertex descriptor to check for
- Returns
Boolean value
-
template<typename
Vertex
>
voidprocess
(signal_flow::Graph::vertex_descriptor const vertex, Vertex const &data)¶ Process single vertex.
This function is called in both preprocess and postprocess depending on whether the vertex requires post-execution processing.
- Parameters
vertex – Vertex descriptor
data – Data associated with vertex
Private Members
-
std::vector<BatchEntry>
m_batch_entries
¶
-
std::optional<signal_flow::vertex::CADCMembraneReadoutView::Mode>
m_cadc_readout_mode
¶
-
signal_flow::IODataMap const &
m_data_output
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
m_event_input_vertex
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
m_event_output_vertex
¶
-
signal_flow::ExecutionInstance
m_execution_instance
¶
-
signal_flow::Graph const &
m_graph
¶
-
bool
m_has_plasticity_rule
= {false}¶
-
signal_flow::IODataMap const &
m_input_list
¶
-
signal_flow::IODataMap
m_local_data
¶
-
signal_flow::IODataMap
m_local_data_output
¶
-
signal_flow::ConstantReferenceIODataMap
m_local_external_data
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
m_madc_readout_vertex
¶
-
generator::NeuronResetMask
m_neuron_resets
¶
-
signal_flow::ExecutionInstancePlaybackHooks &
m_playback_hooks
¶
-
std::vector<signal_flow::Graph::vertex_descriptor>
m_post_vertices
¶
-
bool
m_postprocessing
¶
-
ticket_request_type
m_ticket_requests
¶
-
-
class
grenade::vx::execution::detail
::
ExecutionInstanceConfigVisitor
¶ - #include <execution_instance_config_visitor.h>
Visitor of graph vertices of a single execution instance for construction of the initial configuration.
The result is applied to a given configuration object.
Public Functions
-
ExecutionInstanceConfigVisitor (signal_flow::Graph const &graph, signal_flow::ExecutionInstance const &execution_instance, lola::vx::v3::Chip &config) SYMBOL_VISIBLE
Construct visitor.
- Parameters
graph – Graph to use for locality and property lookup
execution_instance – Local execution instance to visit
config – Configuration to alter
-
std::tuple< lola::vx::v3::Chip &, std::optional< lola::vx::v3::PPUElfFile::symbols_type > > operator() () SYMBOL_VISIBLE
Perform visit operation and generate initial configuration.
- Returns
Reference to altered chip object and optional PPU program symbols
Private Functions
-
void pre_process () SYMBOL_VISIBLE
Preprocess by single visit of all local vertices.
-
template<typename
Vertex
>
voidprocess
(signal_flow::Graph::vertex_descriptor const vertex, Vertex const &data)¶ Process single vertex.
This function is called in preprocess.
- Parameters
vertex – Vertex descriptor
data – Data associated with vertex
Private Members
-
halco::common::typed_array<bool, halco::hicann_dls::vx::v3::NeuronResetOnDLS>
m_enabled_neuron_resets
¶
-
signal_flow::ExecutionInstance
m_execution_instance
¶
-
signal_flow::Graph const &
m_graph
¶
-
bool
m_has_periodic_cadc_readout
¶
-
std::vector<std::tuple<signal_flow::Graph::vertex_descriptor, signal_flow::vertex::PlasticityRule, std::vector<std::pair<halco::hicann_dls::vx::v3::SynramOnDLS, ppu::SynapseArrayViewHandle>>, std::vector<std::pair<halco::hicann_dls::vx::v3::NeuronRowOnDLS, ppu::NeuronViewHandle>>>>
m_plasticity_rules
¶
-
bool
m_requires_ppu
¶
-
bool
m_used_madc
¶
-
-
struct
grenade::vx::execution::detail
::
ExecutionInstanceNode
¶ - #include <execution_instance_node.h>
Content of a execution node.
On invocation a node preprocesses a local part of the graph, builds a playback program for execution, executes it and postprocesses result data. Execution is triggered by an incoming message.
Public Functions
-
ExecutionInstanceNode (signal_flow::IODataMap &data_map, signal_flow::IODataMap const &input_data_map, signal_flow::Graph const &graph, signal_flow::ExecutionInstance const &execution_instance, lola::vx::v3::Chip const &initial_config, backend::Connection &connection, ConnectionStateStorage &connection_state_storage, signal_flow::ExecutionInstancePlaybackHooks &playback_hooks) SYMBOL_VISIBLE
-
void operator() (tbb::flow::continue_msg) SYMBOL_VISIBLE
Private Members
-
backend::Connection &
connection
¶
-
ConnectionStateStorage &
connection_state_storage
¶
-
signal_flow::IODataMap &
data_map
¶
-
signal_flow::ExecutionInstance
execution_instance
¶
-
signal_flow::Graph const &
graph
¶
-
signal_flow::IODataMap const &
input_data_map
¶
-
signal_flow::ExecutionInstancePlaybackHooks &
playback_hooks
¶
-
-
struct
grenade::vx::signal_flow
::
ExecutionInstancePlaybackHooks
¶ - #include <execution_instance_playback_hooks.h>
Playback program hooks for an execution instance.
Public Functions
-
ExecutionInstancePlaybackHooks
() = default¶
-
ExecutionInstancePlaybackHooks
(ExecutionInstancePlaybackHooks&&) = default¶
-
ExecutionInstancePlaybackHooks
(ExecutionInstancePlaybackHooks const&) = delete¶
-
ExecutionInstancePlaybackHooks (stadls::vx::v3::PlaybackProgramBuilder &pre_static_config, stadls::vx::v3::PlaybackProgramBuilder &pre_realtime, stadls::vx::v3::PlaybackProgramBuilder &inside_realtime_begin, stadls::vx::v3::PlaybackProgramBuilder &inside_realtime_end, stadls::vx::v3::PlaybackProgramBuilder &post_realtime) SYMBOL_VISIBLE
-
ExecutionInstancePlaybackHooks &
operator=
(ExecutionInstancePlaybackHooks&&) = default¶
-
ExecutionInstancePlaybackHooks &
operator=
(ExecutionInstancePlaybackHooks const&) = delete¶
Public Members
-
stadls::vx::v3::PlaybackProgramBuilder
inside_realtime_begin
¶
-
stadls::vx::v3::PlaybackProgramBuilder
inside_realtime_end
¶
-
stadls::vx::v3::PlaybackProgramBuilder
post_realtime
¶
-
stadls::vx::v3::PlaybackProgramBuilder
pre_realtime
¶
-
stadls::vx::v3::PlaybackProgramBuilder
pre_static_config
¶
-
-
struct
grenade::vx::signal_flow
::
ExecutionTimeInfo
¶ - #include <execution_time_info.h>
Public Functions
-
void merge (ExecutionTimeInfo &&other) SYMBOL_VISIBLE
Merge other execution time info.
This merges all map-like structures and accumulates the others as well as already present map entries.
- Parameters
other – Other execution time info to merge
-
void merge (ExecutionTimeInfo &other) SYMBOL_VISIBLE
Merge other execution time info.
This merges all map-like structures and accumulates the others as well as already present map entries.
- Parameters
other – Other execution time info to merge
Public Members
-
std::chrono::nanoseconds
execution_duration
= {0}¶ Total duration of execution.
This includes graph traversal, compilation of playback programs and post-processing of result. data.
-
std::map<halco::hicann_dls::vx::v3::DLSGlobal, std::chrono::nanoseconds>
execution_duration_per_hardware
= {}¶ Time spent in execution on hardware.
This is the accumulated time each connection spends in execution state of executing playback program instruction streams, that is from encoding and sending instructions to receiving all responses and decoding them up to the halt response.
-
std::unordered_map<signal_flow::ExecutionInstance, std::chrono::nanoseconds>
realtime_duration_per_execution_instance
= {}¶ Time spent in realtime section on hardware.
This is the accumulated time for each execution instance of the interval [0, runtime) for each batch entry. It is equivalent to the accumulated duration of the intervals during which event recording is enabled for each batch entry.
Friends
-
friend std::ostream & operator<< (std::ostream &os, ExecutionTimeInfo const &data) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::routing::RoutingConstraints
::
ExternalConnection
¶ - #include <routing_constraints.h>
Synaptic connection from an external source to an on-chip neuron.
Public Functions
-
bool operator!= (ExternalConnection const &other) const SYMBOL_VISIBLE
-
bool operator== (ExternalConnection const &other) const SYMBOL_VISIBLE
-
halco::hicann_dls::vx::v3::PADIBusBlockOnDLS toPADIBusBlockOnDLS () const SYMBOL_VISIBLE
Get PADI-bus block onto which the synapse is to be placed.
-
-
struct
grenade::vx::signal_flow::vertex
::
ExternalInput
¶ - #include <external_input.h>
External input data source.
Public Functions
-
ExternalInput
() = default¶
-
explicit ExternalInput (ConnectionType output_type, size_t size) SYMBOL_VISIBLE
Construct external input data source with specified coordinate list.
- Parameters
output_type – Number of external input entries
size – Number of external input entries
-
bool operator!= (ExternalInput const &other) const SYMBOL_VISIBLE
-
bool operator== (ExternalInput const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, ExternalInput const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::routing::SourceOnPADIBusManager
::
ExternalSource
¶ - #include <source_on_padi_bus_manager.h>
Properties of an external source.
-
struct
grenade::vx::network
::
ExternalSourcePopulation
¶ - #include <external_source_population.h>
External source population.
Public Functions
-
ExternalSourcePopulation
() = default¶
-
ExternalSourcePopulation (size_t size) SYMBOL_VISIBLE
-
bool operator!= (ExternalSourcePopulation const &other) const SYMBOL_VISIBLE
-
bool operator== (ExternalSourcePopulation const &other) const SYMBOL_VISIBLE
Public Members
-
size_t
size
= {0}¶ Number of individual sources.
Friends
-
friend std::ostream & operator<< (std::ostream &os, ExternalSourcePopulation const &population) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex::Transformation
::
Function
¶ - #include <transformation.h>
Function base for transforming a single input value to a single output value.
Subclassed by grenade::vx::signal_flow::vertex::transformation::Concatenation, grenade::vx::signal_flow::vertex::transformation::MACSpikeTrainGenerator
Public Types
-
typedef signal_flow::IODataMap::Entry
Value
¶
-
typedef signal_flow::IODataMap::Entry
-
class
grenade::vx::signal_flow
::
Graph
¶ - #include <graph.h>
Placed computation graph.
A vertex represents a unit which processes data. An edge represents the data flow.
Vertices are physically and temporally placed on a specific ExecutionInstance. Data flow between different execution instances is restricted to off-chip data. Access to execution instance subgraphs and mapping between execution instance dependency graph and the complete data-flow graph is provided.
The dependence graph of execution instances has to be acyclic in order to be executable, while a subgraph tied to a execution instance can partly be cyclic, e.g. via recurrent routing of on-chip events. This is enforced by checks on addition of vertices/edges.
Public Types
-
typedef detail::edge_descriptor
edge_descriptor
¶
-
typedef std::unordered_map<edge_descriptor, std::optional<PortRestriction>>
edge_property_map_type
¶ Edge properties indexed by edge descriptor.
-
typedef boost::bimap<vertex_descriptor, boost::bimaps::unordered_set_of<ExecutionInstance>>
execution_instance_map_type
¶ Map between execution instance graph vertex descriptor and execution instance.
-
typedef detail::vertex_descriptor
vertex_descriptor
¶
-
typedef boost::bimap<boost::bimaps::set_of<vertex_descriptor>, boost::bimaps::multiset_of<vertex_descriptor>>
vertex_descriptor_map_type
¶ Map between descriptors of vertices and descriptor of execution instance graph vertex.
An execution instance graph vertex might relate to multiple vertices.
Public Functions
-
Graph (bool enable_acyclicity_check=true) SYMBOL_VISIBLE
Construct graph.
- Parameters
enable_acyclicity_check – Enable check for acyclicity in execution instance graph on every add call where a connection between previously unconnected execution instances is made.
-
Graph (Graph &&) SYMBOL_VISIBLE
-
Graph (Graph const &) SYMBOL_VISIBLE
-
vertex_descriptor add (vertex_descriptor vertex_reference, ExecutionInstance execution_instance, std::vector< Input > inputs) SYMBOL_VISIBLE
Add vertex by reference on specified execution instance with specified inputs.
This is to be used to update input relations. TODO: We might want to have a more fancy vertex descriptor return type Perform checks for:
connection between vertex types is allowed
vertex inputs match provided input descriptors output
connection does not lead to acyclicity
connection goes forward in time
- Parameters
vertex_reference – Vertex reference configuration
execution_instance – Execution instance to place on
inputs – Positional list input vertex descriptors (with optional port restriction)
- Returns
Vertex descriptor of added vertex
-
template<typename
VertexT
>
vertex_descriptoradd
(VertexT &&vertex, ExecutionInstance execution_instance, std::vector<Input> inputs)¶ Add vertex on specified execution instance with specified inputs.
No checks are performed against whether the section of specified chip instance is already used. TODO: We might want to have a more fancy vertex descriptor return type Perform checks for:
connection between vertex types is allowed
vertex inputs match provided input descriptors output
connection does not lead to acyclicity
connection goes forward in time
- Parameters
vertex – Vertex configuration
execution_instance – Execution instance to place on
inputs – Positional list input vertex descriptors (with optional port restriction)
- Returns
Vertex descriptor of added vertex
-
edge_property_map_type const & get_edge_property_map () const SYMBOL_VISIBLE
Get constant reference to edge property map.
- Returns
Constant reference to edge property map
-
graph_type const & get_execution_instance_graph () const SYMBOL_VISIBLE
Get constant reference to underlying graph of execution instances.
- Returns
Constant reference to underlying graph of execution instances
-
execution_instance_map_type const & get_execution_instance_map () const SYMBOL_VISIBLE
Get constant reference to vertex property map.
- Returns
Constant reference to vertex property map
-
graph_type const & get_graph () const SYMBOL_VISIBLE
Get constant reference to underlying graph.
- Returns
Constant reference to underlying graph
-
vertex_descriptor_map_type const & get_vertex_descriptor_map () const SYMBOL_VISIBLE
Get constant reference to vertex descriptor map.
- Returns
Constant reference to vertex descriptor map
-
Vertex const & get_vertex_property (vertex_descriptor descriptor) const SYMBOL_VISIBLE
Get constant reference to a vertex property.
- Parameters
descriptor – Vertex descriptor to get property for
- Returns
Constant reference to a vertex property
-
bool
is_acyclic_execution_instance_graph
() const¶ Get whether the underlying execution instance graph is acyclic.
This is a necessary requirement for executability.
- Returns
Boolean value
-
bool operator!= (Graph const &other) const SYMBOL_VISIBLE
-
Graph & operator= (Graph &&) SYMBOL_VISIBLE
-
Graph & operator= (Graph const &) SYMBOL_VISIBLE
-
bool operator== (Graph const &other) const SYMBOL_VISIBLE
-
template<typename
VertexT
>
voidupdate
(vertex_descriptor vertex_reference, VertexT &&vertex)¶ Update value of vertex.
Ensures, that no value is updated, which would make graph illegal, i.e. the new vertex property has to be compatible with its inputs and all outgoing vertices have to be compatible with the new property.
- Parameters
vertex_reference – Reference to vertex to update value for
vertex – Value to set
-
template<typename
VertexT
>
voidupdate_and_relocate
(vertex_descriptor vertex_reference, VertexT &&vertex, std::vector<Input> inputs)¶ Update value of vertex and relocate vertex with new inputs.
Ensures, that no value is updated, which would make graph illegal, i.e. the new vertex property has to be compatible with its new inputs and all outgoing vertices have to be compatible with the new property.
- Parameters
vertex_reference – Vertex to relocate
inputs – New inputs to use
Private Functions
-
void add_edges (vertex_descriptor descriptor, ExecutionInstance const &execution_instance, std::vector< Input > const &inputs) SYMBOL_VISIBLE
-
void add_log (vertex_descriptor descriptor, ExecutionInstance const &execution_instance, hate::Timer const &timer) SYMBOL_VISIBLE
-
template<typename
Vertex
, typenameInputVertex
>
voidcheck_execution_instances
(Vertex const &vertex, InputVertex const &input_vertex, ExecutionInstance const &vertex_execution_instance, ExecutionInstance const &input_vertex_execution_instance)¶
-
void check_inputs (Vertex const &vertex, ExecutionInstance const &execution_instance, std::vector< Input > const &inputs) SYMBOL_VISIBLE
-
void update (vertex_descriptor vertex_reference, Vertex &&vertex) SYMBOL_VISIBLE
-
void update_and_relocate (vertex_descriptor vertex_reference, Vertex &&vertex, std::vector< Input > inputs) SYMBOL_VISIBLE
Private Members
-
edge_property_map_type
m_edge_property_map
¶
-
bool
m_enable_acyclicity_check
¶
-
std::unique_ptr<graph_type>
m_execution_instance_graph
¶
-
execution_instance_map_type
m_execution_instance_map
¶
-
std::unique_ptr<graph_type>
m_graph
¶
-
vertex_descriptor_map_type
m_vertex_descriptor_map
¶
-
vertex_property_map_type
m_vertex_property_map
¶
Private Static Functions
-
template<typename
VertexPort
, typenameInputVertexPort
>
static voidcheck_input_port
(VertexPort const &vertex_port, InputVertexPort const &input_vertex_port, std::optional<PortRestriction> const &input_vertex_port_restriction)¶
-
template<bool
VariadicInput
>
static voidcheck_inputs_size
(size_t vertex_inputs_size, size_t inputs_size)¶
-
template<typename
Vertex
, typenameInputVertex
>
static voidcheck_supports_input_from
(Vertex const &vertex, InputVertex const &input_vertex, std::optional<PortRestriction> const &input_port_restriction)¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, Graph const &graph) SYMBOL_VISIBLE
Ostream operator of graph.
Prints graph topology in graphviz’ dot format. Vertices are in the format
Type(descriptor)
, which allows identification of referenced vertices.
-
typedef detail::edge_descriptor
-
struct
grenade::vx::network::NetworkGraph
::
GraphTranslation
¶ - #include <network_graph.h>
Translation between unrouted and routed graph representation.
Public Types
-
typedef std::map<PopulationDescriptor, std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<std::pair<signal_flow::Graph::vertex_descriptor, size_t>>>>>
Populations
¶ Translation of Population neurons to (multiple) atomic neurons in signal-flow graph.
For each population (descriptor) a vector with equal ordering to the neurons of the population contains for each compartment on the logical neuron and for each atomic neuron on the logical neuron compartment a pair of signal-flow graph vertex descriptor and index of the corresponding atomic neuron on the signal-flow graph vertex property.
-
typedef std::map<ProjectionDescriptor, std::vector<std::vector<std::pair<signal_flow::Graph::vertex_descriptor, size_t>>>>
Projections
¶ Translation of Projection::Connection to synapses in signal-flow graph.
For each projection (descriptor) a vector with equal ordering to the connections of the projection contains possibly multiple signal-flow graph vertex descriptors and indices on synapses on the signal-flow graph vertex property.
-
typedef std::map<PopulationDescriptor, std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<std::pair<signal_flow::Graph::vertex_descriptor, size_t>>>>>
-
struct
grenade::vx::network::routing::SourceOnPADIBusManager::Partition
::
Group
¶ - #include <source_on_padi_bus_manager.h>
Group of sources projecting onto a single allocation request for synapse drivers.
Public Functions
-
bool valid () const SYMBOL_VISIBLE
Check validity of group.
A group is valid exactly if the sources are unique and their number allows unique addressing in the synapse matrix.
Public Members
-
SynapseDriverOnDLSManager::AllocationRequest
allocation_request
¶ Synapse driver allocation request.
Friends
-
friend std::ostream & operator<< (std::ostream &os, Group const &config) SYMBOL_VISIBLE
-
-
template<typename
V
, typename = void>
structhas_can_connect_different_execution_instances
: public std::false_type¶ - #include <vertex_concept.h>
-
template<typename
V
>
structgrenade::vx::signal_flow::detail::VertexConcept
::
has_can_connect_different_execution_instances
<V, std::void_t<decltype(&V::can_connect_different_execution_instances)>>¶ - #include <vertex_concept.h>
-
template<typename
V
, typename = void>
structhas_inputs
: public std::false_type¶ - #include <vertex_concept.h>
-
template<typename
V
>
structgrenade::vx::signal_flow::detail::VertexConcept
::
has_inputs
<V, std::void_t<decltype(&V::inputs)>>¶ - #include <vertex_concept.h>
Public Static Attributes
-
static constexpr bool
value
= IsInputsReturn<decltype(std::declval<V const>().inputs())>::value¶
-
static constexpr bool
-
template<typename
V
, typename = void>
structhas_output
: public std::false_type¶ - #include <vertex_concept.h>
-
template<typename
V
>
structgrenade::vx::signal_flow::detail::VertexConcept
::
has_output
<V, std::void_t<decltype(&V::output)>>¶ - #include <vertex_concept.h>
-
template<typename
V
, typename = void>
structhas_variadic_input
: public std::false_type¶ - #include <vertex_concept.h>
-
template<typename
V
>
structgrenade::vx::signal_flow::detail::VertexConcept
::
has_variadic_input
<V, std::void_t<decltype(&V::variadic_input)>>¶ - #include <vertex_concept.h>
-
template<>
structstd
::
hash
<grenade::vx::signal_flow::detail::Graph::edge_descriptor>¶ - #include <graph.h>
-
template<>
structstd
::
hash
<grenade::vx::signal_flow::ExecutionInstance>¶ - #include <execution_instance.h>
Public Functions
-
size_t operator() (grenade::vx::signal_flow::ExecutionInstance const &t) const SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::Receptor
::
ID
: public halco::common::detail::BaseType<ID, size_t>¶ - #include <receptor.h>
ID of receptor.
Public Functions
-
inline explicit constexpr
ID
(value_type const value = 0)¶
-
inline explicit constexpr
-
struct
grenade::vx::signal_flow
::
Input
¶ - #include <input.h>
Input to a vertex in the data-flow graph comprised of a descriptor and an optional port restriction.
Public Types
-
typedef Graph::vertex_descriptor
descriptor_type
¶
Public Functions
-
inline
Input
(descriptor_type const &descriptor)¶
-
inline
Input
(descriptor_type const &descriptor, PortRestriction const &port_restriction)¶
-
bool operator!= (Input const &other) const SYMBOL_VISIBLE
-
bool operator== (Input const &other) const SYMBOL_VISIBLE
Friends
-
friend std::ostream & operator<< (std::ostream &os, Input const &data) SYMBOL_VISIBLE
-
typedef Graph::vertex_descriptor
-
class
grenade::vx::network
::
InputGenerator
¶ - #include <generate_input.h>
Public Functions
-
InputGenerator (NetworkGraph const &network_graph, size_t batch_size=1) SYMBOL_VISIBLE
-
void add (std::vector< common::Time > const ×, PopulationDescriptor population) SYMBOL_VISIBLE
-
void add (std::vector< std::vector< common::Time > > const ×, PopulationDescriptor population) SYMBOL_VISIBLE
-
void add (std::vector< std::vector< std::vector< common::Time > > > const ×, PopulationDescriptor population) SYMBOL_VISIBLE
-
parent def ("add", [convert_ms](GENPYBIND_PARENT_TYPE &self, std::vector< float > const ×, grenade::vx::network::PopulationDescriptor const population) { std::vector< grenade::vx::common::Time > gtimes;gtimes.reserve(times.size());std::transform(times.begin(), times.end(), std::back_inserter(gtimes), convert_ms);self.add(gtimes, population);}, parent->py::arg("times"), parent->py::arg("population"))
-
parent def ("add", [convert_ms](GENPYBIND_PARENT_TYPE &self, std::vector< std::vector< float > > const ×, grenade::vx::network::PopulationDescriptor const population) { std::vector< std::vector< grenade::vx::common::Time > > gtimes;gtimes.resize(times.size());for(size_t i=0;auto > :gtimes) { gt.reserve(times.at(i).size());i++;} for(size_t i=0;auto &t :times) { std::transform(t.begin(), t.end(), std::back_inserter(gtimes.at(i)), convert_ms);i++;} self.add(gtimes, population);}, parent->py::arg("times"), parent->py::arg("population"))
-
parent def ("add", [convert_ms](GENPYBIND_PARENT_TYPE &self, std::vector< std::vector< std::vector< float > > > const ×, grenade::vx::network::PopulationDescriptor const population) { std::vector< std::vector< std::vector< grenade::vx::common::Time > > > gtimes;gtimes.resize(times.size());for(size_t b=0;auto >_b :gtimes) { gt_b.resize(times.at(b).size());for(size_t i=0;auto > :gt_b) { gt.reserve(times.at(b).at(i).size());i++;} for(size_t i=0;auto &t :times.at(b)) { std::transform(t.begin(), t.end(), std::back_inserter(gtimes.at(b).at(i)), convert_ms);i++;} b++;} self.add(gtimes, population);}, parent->py::arg("times"), parent->py::arg("population"))
-
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservableArray::Type
::
Int16
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<int16_t, Int16>¶ - #include <plasticity_rule.h>
Public Types
-
typedef int16_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "int16_t"¶
-
typedef int16_t
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerNeuron::Type
::
Int16
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<int16_t, Int16>¶ - #include <plasticity_rule.h>
Public Types
-
typedef int16_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "libnux::vx::VectorRowFracSat16"¶
-
typedef int16_t
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerSynapse::Type
::
Int16
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<int16_t, Int16>¶ - #include <plasticity_rule.h>
Public Types
-
typedef int16_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "libnux::vx::VectorRowFracSat16"¶
-
typedef int16_t
-
struct
grenade::vx::signal_flow
::
Int8
: public halco::common::detail::BaseType<Int8, int8_t>¶ - #include <types.h>
8 bit wide signed integer value of e.g.
CADC membrane readouts.
In haldls we use unsigned values for the CADC readouts, this shall be a typesafe wrapper around int8_t, which we don’t currently have, since it relies on the interpretation of having the CADC baseline in the middle of the value range.
Public Functions
-
inline explicit constexpr
Int8
(value_type const value = 0)¶
-
inline explicit constexpr
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservableArray::Type
::
Int8
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<int8_t, Int8>¶ - #include <plasticity_rule.h>
Public Types
-
typedef int8_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "int8_t"¶
-
typedef int8_t
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerNeuron::Type
::
Int8
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<int8_t, Int8>¶ - #include <plasticity_rule.h>
Public Types
-
typedef int8_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "libnux::vx::VectorRowFracSat8"¶
-
typedef int8_t
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerSynapse::Type
::
Int8
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<int8_t, Int8>¶ - #include <plasticity_rule.h>
Public Types
-
typedef int8_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "libnux::vx::VectorRowFracSat8"¶
-
typedef int8_t
-
struct
grenade::vx::network::routing::RoutingConstraints
::
InternalConnection
¶ - #include <routing_constraints.h>
Synaptic connection between a pair of on-chip neurons.
Public Functions
-
bool operator!= (InternalConnection const &other) const SYMBOL_VISIBLE
-
bool operator== (InternalConnection const &other) const SYMBOL_VISIBLE
-
halco::hicann_dls::vx::v3::PADIBusOnDLS toPADIBusOnDLS () const SYMBOL_VISIBLE
Get PADI-bus onto which the synapse is to be placed.
Public Members
-
std::pair<ProjectionDescriptor, size_t>
descriptor
¶ Descriptor of connection in abstract network.
-
halco::hicann_dls::vx::v3::AtomicNeuronOnDLS
source
¶ Source neuron.
-
halco::hicann_dls::vx::v3::AtomicNeuronOnDLS
target
¶ Target neuron.
-
-
struct
grenade::vx::network::routing::SourceOnPADIBusManager
::
InternalSource
¶ - #include <source_on_padi_bus_manager.h>
Properties of an internal source.
Public Functions
-
halco::hicann_dls::vx::v3::PADIBusOnPADIBusBlock toPADIBusOnPADIBusBlock () const SYMBOL_VISIBLE
Get PADI-bus on block which carries outgoing events of source.
- Returns
PADI-bus on block
-
-
class
grenade::vx::network
::
InvalidNetworkGraph
: public virtual std::exception¶ - #include <exception.h>
Exception describing an invalid network graph.
-
struct
grenade::vx::signal_flow
::
IODataList
¶ - #include <io_data_list.h>
Flat data list used for external data exchange in graph execution.
Entries are assumed to be in order with the occurence of ExternalInput vertices in the corresponding graph (via boost::vertices()).
Public Functions
-
IODataList
() = default¶
-
void from_input_map (IODataMap const &map, signal_flow::Graph const &graph) SYMBOL_VISIBLE
Convert to data list from data map with regard to the input vertices of the graph.
- Parameters
map – Map to convert
graph – Graph to use as reference for vertices
-
void from_output_map (IODataMap const &map, signal_flow::Graph const &graph, bool only_unconnected=true) SYMBOL_VISIBLE
Convert to data list from data map with regard to the output vertices of the graph.
- Parameters
map – Map to convert
graph – Graph to use as reference for vertices
only_unconnected – Whether to convert only output vertices without out edges
-
IODataMap to_input_map (signal_flow::Graph const &graph) const SYMBOL_VISIBLE
Convert from data list to data map with regard to the input vertices of the graph.
- Parameters
graph – Graph to use as reference for vertices
- Returns
Converted Map
-
IODataMap to_output_map (signal_flow::Graph const &graph, bool only_unconnected=true) const SYMBOL_VISIBLE
Convert from data list to data map with regard to the output vertices of the graph.
- Parameters
graph – Graph to use as reference for vertices
only_unconnected – Whether to convert only output vertices without out edges
- Returns
Converted Map
-
-
struct
grenade::vx::signal_flow
::
IODataMap
¶ - #include <io_data_map.h>
Data map used for external data exchange in graph execution.
For each type of data a separate member allows access.
Public Types
-
typedef std::variant<std::vector<common::TimedDataSequence<std::vector<UInt32>>>, std::vector<common::TimedDataSequence<std::vector<UInt5>>>, std::vector<common::TimedDataSequence<std::vector<Int8>>>, std::vector<TimedSpikeToChipSequence>, std::vector<TimedSpikeFromChipSequence>, std::vector<TimedMADCSampleFromChipSequence>>
Entry
¶
Public Functions
-
IODataMap () SYMBOL_VISIBLE
-
IODataMap (IODataMap &&other) SYMBOL_VISIBLE
-
size_t batch_size () const SYMBOL_VISIBLE
Get number of elements in each batch of data.
- Returns
Number of elements in batch
-
void clear () SYMBOL_VISIBLE
Clear content of map.
-
bool empty () const SYMBOL_VISIBLE
Get whether the map does not contain any elements.
- Returns
Boolean value
-
void merge (IODataMap &&other) SYMBOL_VISIBLE
Merge other map content into this one’s.
- Parameters
other – Other map to merge into this instance
-
void merge (IODataMap &other) SYMBOL_VISIBLE
Merge other map content into this one’s.
- Parameters
other – Other map to merge into this instance
-
IODataMap & operator= (IODataMap &&other) SYMBOL_VISIBLE
-
bool valid () const SYMBOL_VISIBLE
Check that all map entries feature the same batch_size value.
- Returns
Boolean value
Public Members
-
std::map<signal_flow::detail::vertex_descriptor, Entry>
data
¶ Data is connected to specified vertex descriptors.
Batch-support is enabled by storing batch-size many data elements aside each-other.
-
std::optional<ExecutionTimeInfo>
execution_time_info
¶ Optional time information of performed execution to be filled by executor.
-
std::vector<std::unordered_map<signal_flow::ExecutionInstance, common::Time>>
runtime
¶ Runtime time-interval data.
The runtime start time coincides with the spike events’ and MADC recording start time. Event data is only recorded during the runtime. If the runtime data is empty it is ignored.
Public Static Functions
-
static bool is_match (Entry const &entry, signal_flow::Port const &port) SYMBOL_VISIBLE
Get whether the data held in the entry match the port shape and type information.
- Parameters
entry – Entry to check
port – Port to check
- Returns
Boolean value
-
typedef std::variant<std::vector<common::TimedDataSequence<std::vector<UInt32>>>, std::vector<common::TimedDataSequence<std::vector<UInt5>>>, std::vector<common::TimedDataSequence<std::vector<Int8>>>, std::vector<TimedSpikeToChipSequence>, std::vector<TimedSpikeFromChipSequence>, std::vector<TimedMADCSampleFromChipSequence>>
-
template<typename
Inputs
>
structIsInputsReturn
: public std::false_type¶ - #include <vertex_concept.h>
-
template<size_t
N
>
structIsInputsReturn
<std::array<Port, N>> : public std::true_type¶ - #include <vertex_concept.h>
-
template<>
structIsInputsReturn
<std::vector<Port>> : public std::true_type¶ - #include <vertex_concept.h>
-
class
grenade::vx::execution
::
JITGraphExecutor
¶ - #include <jit_graph_executor.h>
Just-in-time graph executor.
No partial playback stream is pre-generated and nothing is reused for another run with e.g. different input. This especially allows implementation without promise support, since before processing each new chip instance, all necessary results are already available by value.
Public Types
-
typedef std::unordered_map<signal_flow::ExecutionInstance, lola::vx::v3::Chip>
ChipConfigs
¶
-
typedef std::unordered_map<signal_flow::ExecutionInstance, signal_flow::ExecutionInstancePlaybackHooks>
PlaybackHooks
¶
Public Functions
-
JITGraphExecutor (bool enable_differential_config=true) SYMBOL_VISIBLE
Construct executor with active connections from environment.
- Parameters
enable_differential_config – Whether to enable differential configuration writes instead of full ones
-
JITGraphExecutor (std::map< halco::hicann_dls::vx::v3::DLSGlobal, backend::Connection > &&connections, bool enable_differential_config=true) SYMBOL_VISIBLE
Construct executor with given active connections.
- Parameters
connections – Connections to acquire and provide
enable_differential_config – Whether to enable differential configuration writes instead of full ones
-
std::set< halco::hicann_dls::vx::v3::DLSGlobal > contained_connections () const SYMBOL_VISIBLE
Get identifiers of connections contained in executor.
- Returns
Set of connection identifiers
-
std::map< halco::hicann_dls::vx::v3::DLSGlobal, std::string > get_bitfile_info () const SYMBOL_VISIBLE
-
std::map< halco::hicann_dls::vx::v3::DLSGlobal, std::string > get_remote_repo_state () const SYMBOL_VISIBLE
-
std::map< halco::hicann_dls::vx::v3::DLSGlobal, hxcomm::ConnectionTimeInfo > get_time_info () const SYMBOL_VISIBLE
-
std::map< halco::hicann_dls::vx::v3::DLSGlobal, std::string > get_unique_identifier (std::optional< std::string > const &hwdb_path) const SYMBOL_VISIBLE
-
std::map< halco::hicann_dls::vx::v3::DLSGlobal, backend::Connection > && release_connections () SYMBOL_VISIBLE
Release contained connections.
- Returns
Connections to the associated hardware
Public Static Attributes
-
static constexpr char
name
[] = "JITGraphExecutor"¶
Private Functions
-
void
check
(signal_flow::Graph const &graph)¶ Check that graph can be executed.
This function combines
is_executable_on
andhas_dangling_inputs
.- Parameters
graph – Graph to check
-
bool
is_executable_on
(signal_flow::Graph const &graph)¶ Check whether the given graph can be executed.
- Parameters
graph – Graph instance
Private Members
-
std::map<halco::hicann_dls::vx::v3::DLSGlobal, detail::ConnectionStateStorage>
m_connection_state_storages
¶
-
std::map<halco::hicann_dls::vx::v3::DLSGlobal, backend::Connection>
m_connections
¶
-
bool
m_enable_differential_config
¶
Friends
-
friend signal_flow::IODataMap
run
(JITGraphExecutor &executor, signal_flow::Graph const &graph, signal_flow::IODataMap const &input, ChipConfigs const &initial_config, PlaybackHooks &playback_hooks)¶ Run the specified graph with specified inputs on the supplied executor.
- Parameters
executor – Executor to use
graph – Graph to execute
input – List of input values to use
initial_config – Map of initial configuration
playback_hooks – Map of playback sequence collections to be inserted at specified execution instances
-
typedef std::unordered_map<signal_flow::ExecutionInstance, lola::vx::v3::Chip>
-
class
grenade::vx::compute
::
MAC
¶ - #include <mac.h>
Compute a multiply-accumulate operation with signed weights.
Neurons and synapse rows are filled monotonously. If more synapses are needed than fit on a single chip sequential unrolling is used.
Public Types
-
typedef std::vector<std::vector<signal_flow::UInt5>>
Activations
¶ Activations with batch as outer dimension and weight row size as inner dimension.
Public Functions
-
MAC
() = default¶
-
template<typename
WeightsT
>MAC
(WeightsT &&weights, size_t num_sends = 1, common::Time wait_between_events = common::Time(25), bool enable_loopback = false, halco::hicann_dls::vx::v3::AtomicNeuronOnDLS const &madc_recording_neuron = halco::hicann_dls::vx::v3::AtomicNeuronOnDLS(), std::string madc_recording_path = "")¶ Create single MAC compute graph wrapper.
- Parameters
weights – Weight matrix.
num_sends – Number of times a input activation is sent to the specific row
wait_between_events – Wait time between input events in FPGA cycles
enable_loopback – Enable loopback of events with statistic analysis
madc_recording_neuron – Neuron ID to record via MADC
madc_recording_path – Path to which to store MADC neuron membrane recordings in CSV format. If file exists new data is appended. By default recording is disabled.
-
size_t input_size () const SYMBOL_VISIBLE
-
size_t output_size () const SYMBOL_VISIBLE
-
std::vector< std::vector< signal_flow::Int8 > > run (Activations const &inputs, lola::vx::v3::Chip const &config, execution::JITGraphExecutor &executor) const SYMBOL_VISIBLE
Run given set of activations weights given on construction.
- Parameters
inputs – Input activations to use
config – Static chip configuration to be used
executor – Executor backend to use
- Returns
Resulting accumulated membrane potentials
Private Functions
-
void build_graph () SYMBOL_VISIBLE
Private Members
-
bool
m_enable_loopback
= {false}¶
-
signal_flow::Graph
m_graph
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_input_vertex
= {}¶
-
halco::hicann_dls::vx::v3::AtomicNeuronOnDLS
m_madc_recording_neuron
¶
-
std::unordered_map<signal_flow::ExecutionInstance, signal_flow::Graph::vertex_descriptor>
m_madc_recording_vertices
¶
-
size_t
m_num_sends
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_output_vertex
= {}¶
Private Static Functions
-
static std::pair< signal_flow::Graph::vertex_descriptor, std::optional< signal_flow::Graph::vertex_descriptor > > insert_synram (signal_flow::Graph &graph, Weights &&weights, signal_flow::ExecutionInstance const &instance, halco::hicann_dls::vx::v3::HemisphereOnDLS const &hemisphere, std::optional< halco::hicann_dls::vx::v3::AtomicNeuronOnDLS > const &madc_recording_neuron, signal_flow::Graph::vertex_descriptor crossbar_input_vertex) SYMBOL_VISIBLE
Insert a matrix multiplication operation on a synram.
- Parameters
graph – Graph to insert into
weights – Weights to use
instance – Execution instance to place onto
hemisphere – Hemisphere to place onto
madc_recording_neuron – Optional location of neuron to record via MADC
crossbar_input_vertex – Incoming crossbar input vertex to use
- Returns
Data output vertex to measured membrane potential values
Friends
- friend struct cereal::access
-
typedef std::vector<std::vector<signal_flow::UInt5>>
-
struct
grenade::vx::signal_flow::vertex::transformation
::
MACSpikeTrainGenerator
: public grenade::vx::signal_flow::vertex::Transformation::Function¶ - #include <mac_spiketrain_generator.h>
Public Types
-
typedef signal_flow::IODataMap::Entry
Value
¶
Public Functions
-
MACSpikeTrainGenerator
() = default¶
-
MACSpikeTrainGenerator (halco::common::typed_array< size_t, halco::hicann_dls::vx::v3::HemisphereOnDLS > const &hemisphere_sizes, size_t num_sends, common::Time wait_between_events) SYMBOL_VISIBLE
Construct spiketrain generator transformation.
- Parameters
hemisphere_sizes – Hemisphere sizes for which to generate spikeTrain for. This setting corresponds to the number of inputs expected from the transformation, where for each hemisphere size > 0 an input is expected.
num_sends – Number of times a input activation is sent to the specific row
wait_between_events – Wait time between input events in FPGA cycles
-
~MACSpikeTrainGenerator () SYMBOL_VISIBLE
-
virtual Value apply (std::vector< Value > const &value) const SYMBOL_VISIBLE
Apply function on input value.
- Parameters
value – Input value
- Returns
Transformed output value
-
virtual bool equal (Transformation::Function const &other) const SYMBOL_VISIBLE
-
virtual std::vector< Port > inputs () const SYMBOL_VISIBLE
Provided input ports provided.
- Returns
-
virtual Port output () const SYMBOL_VISIBLE
Single output port provided.
- Returns
Private Functions
-
FRIEND_TEST
(::MACSpikeTrainGenerator, get_spike_label)¶
Private Members
-
size_t
m_num_sends
= {}¶
Private Static Functions
-
static std::optional< halco::hicann_dls::vx::v3::SpikeLabel > get_spike_label (halco::hicann_dls::vx::v3::SynapseDriverOnDLS const &driver, signal_flow::UInt5 const value) SYMBOL_VISIBLE
Get spike label value from location and activation value.
- Parameters
row – Synapse driver to send to
value – Activation value to send
- Returns
SpikeLabel value if activation value is larger than zero
Friends
- friend struct cereal::access
-
typedef signal_flow::IODataMap::Entry
-
struct
grenade::vx::execution::detail::generator
::
MADCArm
¶ - #include <madc.h>
Generator for a playback program snippet from arming the MADC.
Protected Functions
-
stadls::vx::v3::PlaybackGeneratorReturn< Result > generate () const SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex
::
MADCReadoutView
¶ - #include <madc_readout.h>
Readout of neuron voltages via the MADC.
Public Functions
-
MADCReadoutView
() = default¶
-
explicit MADCReadoutView (Source const &first_source, std::optional< Source > const &second_source, SourceSelection const &source_selection) SYMBOL_VISIBLE
Construct MADCReadoutView.
- Parameters
first_source – Neuron source and location to read out
second_source – Optional second neuron source and location to read out
source_selection – Source selection config
-
Source const & get_first_source () const SYMBOL_VISIBLE
-
std::optional< Source > const & get_second_source () const SYMBOL_VISIBLE
-
SourceSelection const & get_source_selection () const SYMBOL_VISIBLE
-
std::vector< Port > inputs () const SYMBOL_VISIBLE
-
bool operator!= (MADCReadoutView const &other) const SYMBOL_VISIBLE
-
bool operator== (MADCReadoutView const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
-
bool supports_input_from (NeuronView const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Private Members
-
SourceSelection
m_source_selection
= {}¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, MADCReadoutView const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network
::
MADCRecording
¶ - #include <madc_recording.h>
MADC recording of a single neuron.
Public Functions
-
MADCRecording
() = default¶
-
MADCRecording (std::vector< Neuron > const &neurons) SYMBOL_VISIBLE
-
bool operator!= (MADCRecording const &other) const SYMBOL_VISIBLE
-
bool operator== (MADCRecording const &other) const SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow
::
MADCSampleFromChip
¶ - #include <event.h>
From-chip MADC sample.
Public Types
-
typedef haldls::vx::v3::MADCSampleFromChip::Channel
Channel
¶
-
typedef haldls::vx::v3::MADCSampleFromChip::Value
Value
¶
Public Functions
-
MADCSampleFromChip
() = default¶
-
bool operator!= (MADCSampleFromChip const &other) const SYMBOL_VISIBLE
-
bool operator== (MADCSampleFromChip const &other) const SYMBOL_VISIBLE
Friends
-
friend std::ostream & operator<< (std::ostream &os, MADCSampleFromChip const &sample) SYMBOL_VISIBLE
-
typedef haldls::vx::v3::MADCSampleFromChip::Channel
-
struct
grenade::vx::execution::detail::generator
::
MADCStart
¶ - #include <madc.h>
Generator for a playback program snippet from starting the MADC.
Protected Functions
-
stadls::vx::v3::PlaybackGeneratorReturn< Result > generate () const SYMBOL_VISIBLE
-
-
struct
grenade::vx::execution::detail::generator
::
MADCStop
¶ - #include <madc.h>
Generator for a playback program snippet from stopping the MADC.
Public Members
-
bool
enable_power_down_after_sampling
= {false}¶
Protected Functions
-
stadls::vx::v3::PlaybackGeneratorReturn< Result > generate () const SYMBOL_VISIBLE
-
bool
-
struct
grenade::vx::network
::
Network
¶ - #include <network.h>
Placed but not routed network consisting of populations and projections.
Public Functions
-
bool operator!= (Network const &other) const SYMBOL_VISIBLE
-
bool operator== (Network const &other) const SYMBOL_VISIBLE
Public Members
-
std::optional<CADCRecording> const
cadc_recording
¶
-
std::chrono::microseconds const
construction_duration
¶ Duration spent during construction of network.
This value is not compared in operator{==,!=}.
-
std::optional<MADCRecording> const
madc_recording
¶
-
std::map<PlasticityRuleDescriptor, PlasticityRule> const
plasticity_rules
¶
-
std::map<PopulationDescriptor, std::variant<Population, ExternalSourcePopulation, BackgroundSourcePopulation>> const
populations
¶
-
std::map<ProjectionDescriptor, Projection> const
projections
¶
Friends
-
friend std::ostream & operator<< (std::ostream &os, Network const &network) SYMBOL_VISIBLE
-
-
class
grenade::vx::network
::
NetworkBuilder
¶ - #include <network_builder.h>
Public Functions
-
NetworkBuilder () SYMBOL_VISIBLE
-
PopulationDescriptor add (BackgroundSourcePopulation const &population) SYMBOL_VISIBLE
Add on-chip background spike source population.
- Parameters
population – Population to add
-
void add (CADCRecording const &cadc_recording) SYMBOL_VISIBLE
Add CADC recording of a collection of neurons.
Only one CADC recording per network is allowed. If another recording is present at a recorded neuron, their source specification is required to match.
- Parameters
cadc_recording – CADC recording to add
-
PopulationDescriptor add (ExternalSourcePopulation const &population) SYMBOL_VISIBLE
Add off-chip population.
- Parameters
population – Population to add
-
void add (MADCRecording const &madc_recording) SYMBOL_VISIBLE
Add MADC recording of a single neuron.
Only one MADC recording per network is allowed. If another recording is present at the recorded neuron, their source specification is required to match.
- Parameters
madc_recording – MADC recording to add
-
PlasticityRuleDescriptor add (PlasticityRule const &plasticity_rule) SYMBOL_VISIBLE
-
PopulationDescriptor add (Population const &population) SYMBOL_VISIBLE
Add on-chip population.
The population is expected to feature unique and unused neuron locations.
- Parameters
population – Population to add
-
ProjectionDescriptor add (Projection const &projection) SYMBOL_VISIBLE
Add projection between already added populations.
The projection is expected to be free of single connections present in already added projections. A single connection is considered equal, if it connects the same pre- and post-synaptic neurons and features the same receptor type.
- Parameters
projection – Projection to add
-
std::shared_ptr< Network > done () SYMBOL_VISIBLE
Private Members
-
std::optional<CADCRecording>
m_cadc_recording
= {std::nullopt}¶
-
std::optional<MADCRecording>
m_madc_recording
= {std::nullopt}¶
-
std::map<PlasticityRuleDescriptor, PlasticityRule>
m_plasticity_rules
= {}¶
-
std::map<PopulationDescriptor, std::variant<Population, ExternalSourcePopulation, BackgroundSourcePopulation>>
m_populations
= {}¶
-
std::map<ProjectionDescriptor, Projection>
m_projections
= {}¶
-
-
struct
grenade::vx::network
::
NetworkGraph
¶ - #include <network_graph.h>
Logical network representation.
Public Types
-
typedef std::vector<std::vector<PlacedConnection>>
PlacedConnections
¶
-
typedef std::map<PopulationDescriptor, std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<std::optional<halco::hicann_dls::vx::v3::SpikeLabel>>>>>
SpikeLabels
¶ Spike labels corresponding to each neuron in a population.
For external populations these are the input spike labels, for internal population this is only given for populations with enabled recording.
Public Functions
-
NetworkGraph
() = default¶
-
std::vector< signal_flow::Graph::vertex_descriptor > const & get_cadc_sample_output_vertex () const SYMBOL_VISIBLE
Vertex descriptor from which to extract recorded cadc sample data.
-
std::optional< signal_flow::Graph::vertex_descriptor > const & get_event_input_vertex () const SYMBOL_VISIBLE
Vertex descriptor at which to insert external spike data.
-
std::optional< signal_flow::Graph::vertex_descriptor > const & get_event_output_vertex () const SYMBOL_VISIBLE
Vertex descriptor from which to extract recorded spike data.
-
signal_flow::Graph const & get_graph () const SYMBOL_VISIBLE
Graph representing the network.
-
GraphTranslation const & get_graph_translation () const SYMBOL_VISIBLE
Translation between unrouted and routed graph representation.
-
std::optional< signal_flow::Graph::vertex_descriptor > const & get_madc_sample_output_vertex () const SYMBOL_VISIBLE
Vertex descriptor from which to extract recorded madc sample data.
-
std::shared_ptr< Network > const & get_network () const SYMBOL_VISIBLE
Underlying network.
-
std::map< PopulationDescriptor, std::map< halco::hicann_dls::vx::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor > > const & get_neuron_vertices () const SYMBOL_VISIBLE
Vertex descriptors of neuron views.
-
std::vector< PlacedConnection > get_placed_connection (ProjectionDescriptor descriptor, size_t index) const SYMBOL_VISIBLE
-
PlacedConnections get_placed_connections (ProjectionDescriptor descriptor) const SYMBOL_VISIBLE
-
std::map< PlasticityRuleDescriptor, signal_flow::Graph::vertex_descriptor > const & get_plasticity_rule_output_vertices () const SYMBOL_VISIBLE
Vertex descriptor from which to extract recorded plasticity rule scratchpad memory.
-
std::map< PlasticityRuleDescriptor, signal_flow::Graph::vertex_descriptor > const & get_plasticity_rule_vertices () const SYMBOL_VISIBLE
Vertex descriptor of plasticity rules.
-
SpikeLabels const & get_spike_labels () const SYMBOL_VISIBLE
-
std::map< ProjectionDescriptor, std::map< halco::hicann_dls::vx::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor > > const & get_synapse_vertices () const SYMBOL_VISIBLE
Vertex descriptors of synapse views.
-
bool valid () const SYMBOL_VISIBLE
Checks validity of hardware graph representation in relation to the abstract network.
This ensures all required elements and information being present as well as a functionally correct mapping and routing.
Private Members
-
std::map<PopulationDescriptor, std::map<halco::hicann_dls::vx::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor>>
m_background_spike_source_vertices
¶
-
std::vector<signal_flow::Graph::vertex_descriptor>
m_cadc_sample_output_vertex
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
m_event_input_vertex
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
m_event_output_vertex
¶
-
signal_flow::Graph
m_graph
¶
-
GraphTranslation
m_graph_translation
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
m_madc_sample_output_vertex
¶
-
std::map<PopulationDescriptor, std::map<halco::hicann_dls::vx::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor>>
m_neuron_vertices
¶
-
std::map<PlasticityRuleDescriptor, signal_flow::Graph::vertex_descriptor>
m_plasticity_rule_output_vertices
¶
-
std::map<PlasticityRuleDescriptor, signal_flow::Graph::vertex_descriptor>
m_plasticity_rule_vertices
¶
-
SpikeLabels
m_spike_labels
¶
-
std::map<ProjectionDescriptor, std::map<halco::hicann_dls::vx::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor>>
m_synapse_vertices
¶
Friends
Build a hardware network representation for a given network.
- Parameters
network – Network for which to build hardware network representation
routing_result – Routing result to use to build hardware network representation
execution_instance – Execution instance to build the hardware graph into
-
friend NetworkGraphStatistics
extract_statistics
(NetworkGraph const &network_graph)¶ Extract statistics from network graph.
Update an exisiting hardware graph representation.
For this to work, no new routing has to have been required.
- Parameters
network_graph – Existing hardware graph representation to update or fill with newly built instance
network – New network for which to update or build
-
typedef std::vector<std::vector<PlacedConnection>>
-
class
grenade::vx::network
::
NetworkGraphBuilder
¶ - #include <network_graph_builder.h>
Network graph builder wrapper for network.
Public Functions
-
NetworkGraphBuilder (Network const &network) SYMBOL_VISIBLE
-
void
add_background_spike_sources
(signal_flow::Graph &graph, Resources &resources, signal_flow::ExecutionInstance const &instance, RoutingResult const &routing_result) const¶
-
void
add_cadc_recording
(signal_flow::Graph &graph, Resources &resources, CADCRecording const &cadc_recording, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_crossbar_node
(signal_flow::Graph &graph, Resources &resources, halco::hicann_dls::vx::CrossbarNodeOnDLS const &coordinate, RoutingResult const &connection_result, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_external_input
(signal_flow::Graph &graph, Resources &resources, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_external_output
(signal_flow::Graph &graph, Resources &resources, RoutingResult const &connection_result, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_madc_recording
(signal_flow::Graph &graph, Resources &resources, MADCRecording const &madc_recording, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_neuron_event_output
(signal_flow::Graph &graph, Resources &resources, halco::hicann_dls::vx::NeuronEventOutputOnDLS const &coordinate, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_neuron_event_outputs
(signal_flow::Graph &graph, Resources &resources, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_padi_bus
(signal_flow::Graph &graph, Resources &resources, halco::hicann_dls::vx::PADIBusOnDLS const &coordinate, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_plasticity_rules
(signal_flow::Graph &graph, Resources &resources, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_population
(signal_flow::Graph &graph, Resources &resources, std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, std::vector<signal_flow::Input>> const &input, PopulationDescriptor const &descriptor, RoutingResult const &connection_result, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_populations
(signal_flow::Graph &graph, Resources &resources, RoutingResult const &connection_result, signal_flow::ExecutionInstance const &instance) const¶
-
std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, signal_flow::Input>
add_projection_from_background_spike_source
(signal_flow::Graph &graph, Resources &resources, ProjectionDescriptor const &descriptor, RoutingResult const &connection_result, signal_flow::ExecutionInstance const &instance) const¶
-
std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, signal_flow::Input>
add_projection_from_external_input
(signal_flow::Graph &graph, Resources &resources, ProjectionDescriptor const &descriptor, RoutingResult const &connection_result, signal_flow::ExecutionInstance const &instance) const¶
-
std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, signal_flow::Input>
add_projection_from_internal_input
(signal_flow::Graph &graph, Resources &resources, ProjectionDescriptor const &descriptor, RoutingResult const &connection_result, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_synapse_array_view_sparse
(signal_flow::Graph &graph, Resources &resources, ProjectionDescriptor descriptor, RoutingResult const &connection_result, signal_flow::ExecutionInstance const &instance) const¶
-
void
add_synapse_driver
(signal_flow::Graph &graph, Resources &resources, halco::hicann_dls::vx::SynapseDriverOnDLS const &coordinate, RoutingResult const &connection_result, signal_flow::ExecutionInstance const &instance) const¶
-
NetworkGraph::SpikeLabels
get_spike_labels
(RoutingResult const &connection_result)¶
Public Static Functions
-
static std::vector<signal_flow::Input>
get_inputs
(signal_flow::Graph const &graph, signal_flow::Graph::vertex_descriptor descriptor)¶
-
-
struct
grenade::vx::network
::
NetworkGraphStatistics
¶ - #include <network_graph_statistics.h>
Statistics of network graph.
Public Functions
-
NetworkGraphStatistics
() = default¶
-
std::chrono::microseconds get_abstract_network_construction_duration () const SYMBOL_VISIBLE
Get duration spent constructing abstract network (Network).
-
std::chrono::microseconds get_hardware_network_construction_duration () const SYMBOL_VISIBLE
Get duration spent constructing hardware network (NetworkGraph) given a routing result and abstract network.
-
double get_neuron_usage () const SYMBOL_VISIBLE
Get used fraction of neurons vs.
all hardware circuits.
-
size_t get_num_neurons () const SYMBOL_VISIBLE
Get number of neurons in network graph.
This is the same amount as hardware circuits.
-
size_t get_num_populations () const SYMBOL_VISIBLE
Get number of populations in network graph.
-
size_t get_num_projections () const SYMBOL_VISIBLE
Get number of projections in network graph.
-
size_t get_num_synapse_drivers () const SYMBOL_VISIBLE
Get number of synapse drivers in network graph.
This is the same amount as hardware circuits.
-
size_t get_num_synapses () const SYMBOL_VISIBLE
Get number of synapses in network graph.
This is the same amount as hardware circuits.
-
std::chrono::microseconds get_routing_duration () const SYMBOL_VISIBLE
Get duration spent routing the abstract network (Network).
-
double get_synapse_driver_usage () const SYMBOL_VISIBLE
Get used fraction of synapse drivers vs.
all hardware circuits.
-
double get_synapse_usage () const SYMBOL_VISIBLE
Get used fraction of synapses vs.
all hardware circuits.
-
std::chrono::microseconds get_verification_duration () const SYMBOL_VISIBLE
Get duration spent verifying hardware network (NetworkGraph) for correct routing.
Private Members
-
double
m_neuron_usage
= {0.}¶
-
size_t
m_num_neurons
= {0}¶
-
size_t
m_num_populations
= {0}¶
-
size_t
m_num_projections
= {0}¶
-
size_t
m_num_synapse_drivers
= {0}¶
-
size_t
m_num_synapses
= {0}¶
-
double
m_synapse_driver_usage
= {0.}¶
-
double
m_synapse_usage
= {0.}¶
Friends
-
friend NetworkGraphStatistics
extract_statistics
(NetworkGraph const &network_graph)¶ Extract statistics from network graph.
-
friend std::ostream & operator<< (std::ostream &os, NetworkGraphStatistics const &value) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::CADCRecording
::
Neuron
¶ - #include <cadc_recording.h>
Public Functions
-
Neuron
() = default¶
-
Neuron (PopulationDescriptor population, size_t neuron_on_population, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron compartment_on_neuron, size_t atomic_neuron_on_compartment, Source source) SYMBOL_VISIBLE
-
bool operator!= (Neuron const &other) const SYMBOL_VISIBLE
-
bool operator== (Neuron const &other) const SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::MADCRecording
::
Neuron
¶ - #include <madc_recording.h>
Public Functions
-
Neuron
() = default¶
-
Neuron (AtomicNeuronOnNetwork const &coordinate, Source source) SYMBOL_VISIBLE
-
bool operator!= (Neuron const &other) const SYMBOL_VISIBLE
-
bool operator== (Neuron const &other) const SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::Population
::
Neuron
¶ - #include <population.h>
On-chip neuron.
Public Types
-
typedef std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, Compartment>
Compartments
¶
-
typedef halco::hicann_dls::vx::v3::LogicalNeuronOnDLS
Coordinate
¶ Location and shape.
Public Functions
-
Neuron (Coordinate const &coordinate, Compartments const &compartments) SYMBOL_VISIBLE
-
bool operator!= (Neuron const &other) const SYMBOL_VISIBLE
-
bool operator== (Neuron const &other) const SYMBOL_VISIBLE
-
bool valid () const SYMBOL_VISIBLE
Check validity of neuron config.
Friends
-
friend std::ostream & operator<< (std::ostream &os, Neuron const &config) SYMBOL_VISIBLE
-
typedef std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, Compartment>
-
struct
grenade::vx::signal_flow::vertex
::
NeuronEventOutputView
¶ - #include <neuron_event_output_view.h>
A view of neuron event outputs into the routing crossbar.
Public Types
-
typedef halco::hicann_dls::vx::v3::NeuronRowOnDLS
Row
¶
Public Functions
-
NeuronEventOutputView
() = default¶
-
NeuronEventOutputView (Neurons const &neurons) SYMBOL_VISIBLE
Construct NeuronEventOutputView with specified neurons.
- Parameters
neurons – Incoming neurons
-
Neurons const & get_neurons () const SYMBOL_VISIBLE
-
std::vector< Port > inputs () const SYMBOL_VISIBLE
Input ports are organized in the same order as the specified neuron views.
-
bool operator!= (NeuronEventOutputView const &other) const SYMBOL_VISIBLE
-
bool operator== (NeuronEventOutputView const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Output ports are sorted neuron event output channels.
-
bool supports_input_from (NeuronView const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, NeuronEventOutputView const &config) SYMBOL_VISIBLE
-
typedef halco::hicann_dls::vx::v3::NeuronRowOnDLS
-
class
grenade::vx::execution::detail::generator
::
NeuronResetMask
¶ - #include <neuron_reset_mask.h>
Generator for neuron resets.
If all resets in a quad are to be resetted, more efficient packing is used.
Public Types
-
typedef stadls::vx::v3::PlaybackProgramBuilder
Builder
¶
Public Functions
-
NeuronResetMask () SYMBOL_VISIBLE
Public Members
Protected Functions
-
stadls::vx::v3::PlaybackGeneratorReturn< Result > generate () const SYMBOL_VISIBLE
Friends
-
friend auto
generate
(NeuronResetMask const&)¶
-
typedef stadls::vx::v3::PlaybackProgramBuilder
-
struct
grenade::vx::signal_flow::vertex
::
NeuronView
¶ - #include <neuron_view.h>
A view of neuron circuits.
Public Types
-
typedef halco::hicann_dls::vx::v3::NeuronRowOnDLS
Row
¶
Public Functions
-
NeuronView
() = default¶
-
template<typename
ColumnsT
, typenameConfigsT
, typenameRowT
>
explicitNeuronView
(ColumnsT &&columns, ConfigsT &&enable_resets, RowT &&row)¶ Construct NeuronView with specified neurons.
- Parameters
columns – Neuron columns
enable_resets – Enable values for initial reset of the neurons
row – Neuron row
-
Columns const & get_columns () const SYMBOL_VISIBLE
-
Configs const & get_configs () const SYMBOL_VISIBLE
-
Row const & get_row () const SYMBOL_VISIBLE
-
std::array< Port, 1 > inputs () const SYMBOL_VISIBLE
-
bool operator!= (NeuronView const &other) const SYMBOL_VISIBLE
-
bool operator== (NeuronView const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
-
bool supports_input_from (SynapseArrayView const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
-
ppu::NeuronViewHandle toNeuronViewHandle () const SYMBOL_VISIBLE
Convert to neuron view handle for PPU programs.
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= true¶
Private Functions
-
void check (Columns const &columns, Configs const &configs) SYMBOL_VISIBLE
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, NeuronView const &config) SYMBOL_VISIBLE
-
typedef halco::hicann_dls::vx::v3::NeuronRowOnDLS
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule
::
NeuronViewShape
¶ - #include <plasticity_rule.h>
Shape of a single neuron view to be altered.
Public Functions
-
bool operator!= (NeuronViewShape const &other) const SYMBOL_VISIBLE
-
bool operator== (NeuronViewShape const &other) const SYMBOL_VISIBLE
Public Members
-
NeuronView::Columns
columns
¶ Location of columns.
This information is needed for extraction of timed recording observables and measurement settings.
-
std::vector<std::optional<NeuronReadoutSource>>
neuron_readout_sources
¶ Readout source specification per neuron used for static configuration such that the plasticity rule can read the specified signal.
-
NeuronView::Row
row
¶ Row of neurons.
This information is required for extraction of timed recording observables and measurement settings.
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, NeuronViewShape const &recording) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording
::
ObservableArray
¶ - #include <plasticity_rule.h>
Observable with array of values of configurable size.
Used for e.g. neuron firing rates.
Public Functions
-
ObservableArray
() = default¶
-
ObservableArray (TypeVariant const &type, size_t size) SYMBOL_VISIBLE
-
bool operator!= (ObservableArray const &other) const SYMBOL_VISIBLE
-
bool operator== (ObservableArray const &other) const SYMBOL_VISIBLE
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, ObservableArray const &observable) SYMBOL_VISIBLE
-
-
template<typename
ElementT
, typenameDerived
>
structgrenade::vx::signal_flow::vertex::plasticity_rule
::
ObservableDataType
¶ - #include <observable_data_type.h>
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording
::
ObservablePerNeuron
¶ - #include <plasticity_rule.h>
Observable with a single data entry per neuron.
Used for e.g. membrane potential measurements
Public Types
-
enum
Layout
¶ Values:
-
enumerator
complete_row
¶
-
enumerator
packed_active_columns
¶ Record complete row of values.
This is fast, but inefficient memory-wise, since independent of the number of active columns in the neuron view the complete row is stored. The memory provided per row is of type libnux::vx::VectorRow{Mod,FracSat}{8,16} for type {u,}{int_}{8,16}. Record only active columns of neuron view. This is efficient memory-wise, but slow, since the values are stored sequentially per neuron. The memory provided per row is of type std::array<{u,}{int_}{8,16}_t, num_columns> for type {u,}{int_}{8,16}.
-
enumerator
Public Functions
-
ObservablePerNeuron
() = default¶
-
ObservablePerNeuron (TypeVariant const &type, Layout const &layout_per_row) SYMBOL_VISIBLE
-
bool operator!= (ObservablePerNeuron const &other) const SYMBOL_VISIBLE
-
bool operator== (ObservablePerNeuron const &other) const SYMBOL_VISIBLE
Public Members
-
enum grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerNeuron::Layout
layout
= Layout::complete_row¶
-
TypeVariant
type
= Type::int8¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, ObservablePerNeuron const &observable) SYMBOL_VISIBLE
-
enum
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording
::
ObservablePerSynapse
¶ - #include <plasticity_rule.h>
Observable with a single data entry per synapse.
Used for e.g. weights and correlation measurements
Public Types
-
enum
LayoutPerRow
¶ Values:
-
enumerator
complete_rows
¶
-
enumerator
packed_active_columns
¶ Record complete rows of values.
This is fast, but inefficient memory-wise, since independent of the number of active columns in the synapse view the complete row is stored. The memory provided per row is of type libnux::vx::VectorRow{Mod,FracSat}{8,16} for type {u,}{int_}{8,16}. Record only active columns of synapse view. This is efficient memory-wise, but slow, since the values are stored sequentially per synapse. The memory provided per row is of type std::array<{u,}{int_}{8,16}_t, num_columns> for type {u,}{int_}{8,16}.
-
enumerator
Public Functions
-
ObservablePerSynapse
() = default¶
-
ObservablePerSynapse (TypeVariant const &type, LayoutPerRow const &layout_per_row) SYMBOL_VISIBLE
-
bool operator!= (ObservablePerSynapse const &other) const SYMBOL_VISIBLE
-
bool operator== (ObservablePerSynapse const &other) const SYMBOL_VISIBLE
Public Members
-
enum grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerSynapse::LayoutPerRow
layout_per_row
= LayoutPerRow::complete_rows¶
-
TypeVariant
type
= Type::int8¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, ObservablePerSynapse const &observable) SYMBOL_VISIBLE
-
enum
-
struct
grenade::vx::network
::
OnlyRecordingPlasticityRuleGenerator
¶ - #include <plasticity_rule_generator.h>
Public Types
Public Functions
-
OnlyRecordingPlasticityRuleGenerator (std::set< Observable > const &observables) SYMBOL_VISIBLE
-
PlasticityRule generate () const SYMBOL_VISIBLE
Generate plasticity rule which only executes given recording.
Timing and projection information is left default/empty.
Private Members
-
std::set<Observable>
m_observables
¶
-
-
struct
grenade::vx::signal_flow::vertex
::
PADIBus
¶ - #include <padi_bus.h>
PADI bus connecting a set of crossbar nodes to a set of synapse drivers.
Public Types
-
typedef halco::hicann_dls::vx::v3::PADIBusOnDLS
Coordinate
¶
Public Functions
-
PADIBus
() = default¶
-
PADIBus (Coordinate const &coordinate) SYMBOL_VISIBLE
Construct PADI bus at specified location.
- Parameters
coordinate – Location
-
Coordinate const & get_coordinate () const SYMBOL_VISIBLE
-
bool operator!= (PADIBus const &other) const SYMBOL_VISIBLE
-
bool operator== (PADIBus const &other) const SYMBOL_VISIBLE
-
bool supports_input_from (CrossbarNode const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= true¶
Private Members
-
Coordinate
m_coordinate
= {}¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, PADIBus const &config) SYMBOL_VISIBLE
-
typedef halco::hicann_dls::vx::v3::PADIBusOnDLS
-
struct
grenade::vx::network::routing::RoutingConstraints
::
PADIBusConstraints
¶ - #include <routing_constraints.h>
Collection of constraints for a single PADI-bus.
Public Members
-
std::vector<BackgroundConnection>
background_connections
¶ Background connections.
-
std::vector<InternalConnection>
internal_connections
¶ Internal connections.
-
size_t
num_background_spike_sources
¶ Background spike source number.
-
std::vector<BackgroundConnection>
-
struct
grenade::vx::network::routing::SourceOnPADIBusManager
::
Partition
¶ - #include <source_on_padi_bus_manager.h>
Partitioning of sources in label space and onto PADI-busses.
Public Functions
-
bool valid () const SYMBOL_VISIBLE
Check validity of partition.
A partition is valid exactly if its groups are valid.
Public Members
-
std::vector<Group>
background
¶ Groups of background sources with their synapse driver allocation requests.
Friends
-
friend std::ostream & operator<< (std::ostream &os, Partition const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::NetworkGraph
::
PlacedConnection
¶ - #include <network_graph.h>
Public Members
-
halco::hicann_dls::vx::v3::SynapseOnSynapseRow
synapse_on_row
¶ Horizontal location.
-
halco::hicann_dls::vx::v3::SynapseRowOnDLS
synapse_row
¶ Vertical location.
-
lola::vx::v3::SynapseMatrix::Weight
weight
¶ Weight of connection.
Friends
-
friend std::ostream & operator<< (std::ostream &, PlacedConnection const &) SYMBOL_VISIBLE
-
halco::hicann_dls::vx::v3::SynapseOnSynapseRow
-
struct
grenade::vx::network::routing::RoutingBuilder
::
PlacedConnection
¶ Public Members
-
halco::hicann_dls::vx::v3::SynapseOnSynapseRow
synapse_on_row
¶
-
halco::hicann_dls::vx::v3::SynapseRowOnDLS
synapse_row
¶
-
halco::hicann_dls::vx::v3::SynapseOnSynapseRow
-
struct
grenade::vx::network::RoutingResult
::
PlacedConnection
¶ - #include <routing_result.h>
Placed single synapse connections with a N-to-one correspondence to an unplaced
Projection::Connection
with equal indexing.Public Members
-
lola::vx::v3::SynapseMatrix::Label
label
¶
-
halco::hicann_dls::vx::v3::SynapseOnSynapseRow
synapse_on_row
¶
-
halco::hicann_dls::vx::v3::SynapseRowOnDLS
synapse_row
¶
-
lola::vx::v3::SynapseMatrix::Weight
weight
¶
Friends
-
friend std::ostream & operator<< (std::ostream &, PlacedConnection const &) SYMBOL_VISIBLE
-
lola::vx::v3::SynapseMatrix::Label
-
struct
grenade::vx::network::NetworkGraphBuilder::Resources
::
PlacedPopulation
¶ - #include <network_graph_builder.h>
Public Members
-
std::map<halco::hicann_dls::vx::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor>
neurons
¶
-
std::map<halco::hicann_dls::vx::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor>
-
struct
grenade::vx::network::NetworkGraphBuilder::Resources
::
PlacedProjection
¶ - #include <network_graph_builder.h>
Public Members
-
std::map<halco::hicann_dls::vx::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor>
synapses
¶
-
std::map<halco::hicann_dls::vx::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor>
-
struct
grenade::vx::network
::
PlasticityRule
¶ - #include <plasticity_rule.h>
Plasticity rule.
Public Types
-
typedef signal_flow::vertex::PlasticityRule::RawRecording
RawRecording
¶
-
typedef signal_flow::vertex::PlasticityRule::RawRecordingData
RawRecordingData
¶ Recording data corresponding to a raw recording.
-
typedef signal_flow::vertex::PlasticityRule::Recording
Recording
¶ Recording memory provided to plasticity rule kernel and recorded after execution.
-
typedef std::variant<RawRecordingData, TimedRecordingData>
RecordingData
¶ Recorded data.
-
typedef signal_flow::vertex::PlasticityRule::TimedRecording
TimedRecording
¶ Recording information for execution of the rule.
Recording of exclusive scratchpad memory per rule invocation with time recording and returned data as time-annotated events.
Public Functions
-
PlasticityRule
() = default¶
-
bool operator!= (PlasticityRule const &other) const SYMBOL_VISIBLE
-
bool operator== (PlasticityRule const &other) const SYMBOL_VISIBLE
Public Members
-
bool
enable_requires_one_source_per_row_in_order
= {false}¶ Enable whether this plasticity rule requires all projections to have one source per row and them being in order.
-
std::vector<PopulationHandle>
populations
¶
-
std::vector<ProjectionDescriptor>
projections
= {}¶ Descriptor to projections this rule has access to.
All projections are required to be dense and in order.
Friends
-
friend std::ostream & operator<< (std::ostream &os, PlasticityRule const &plasticity_rule) SYMBOL_VISIBLE
-
typedef signal_flow::vertex::PlasticityRule::RawRecording
-
struct
grenade::vx::signal_flow::vertex
::
PlasticityRule
¶ - #include <plasticity_rule.h>
A plasticity rule to operate on synapse array views.
Public Types
-
typedef std::variant<RawRecording, TimedRecording>
Recording
¶ Recording information for execution of the rule.
-
typedef std::variant<RawRecordingData, TimedRecordingData>
RecordingData
¶
Public Functions
-
PlasticityRule
() = default¶
-
PlasticityRule (std::string kernel, Timer const &timer, std::vector< SynapseViewShape > const &synapse_view_shapes, std::vector< NeuronViewShape > const &neuron_view_shapes, std::optional< Recording > const &recording) SYMBOL_VISIBLE
Construct PlasticityRule with specified kernel, timer and synapse information.
- Parameters
kernel – Kernel to apply
timer – Timer to use
synapse_view_shapes – Shapes of synapse views to alter
neuron_view_shapes – Shapes of neuron views to alter
recording – Optional recording providing memory for the plasticity rule to store information during execution.
-
RecordingData extract_recording_data (std::vector< common::TimedDataSequence< std::vector< signal_flow::Int8 > > > const &data) const SYMBOL_VISIBLE
Extract data corresponding to performed recording.
For RawRecording return the raw data, for TimedRecording extract observables of timed recording from raw data. This method is to be used after successful execution of aa graph incorporating this vertex instance.
- Throws
std::runtime_error – On data not matching expectation
- Parameters
data – Raw data to extract recording from
-
std::string const & get_kernel () const SYMBOL_VISIBLE
-
std::vector< NeuronViewShape > const & get_neuron_view_shapes () const SYMBOL_VISIBLE
-
std::pair< size_t, size_t > get_recorded_memory_data_interval () const SYMBOL_VISIBLE
Get interval in memory layout of data within recording.
-
std::string get_recorded_memory_definition () const SYMBOL_VISIBLE
Get C++ definition of recorded memory structure.
This structure is instantiated and made available to the plasticity rule kernel.
-
std::map< std::string, std::pair< size_t, size_t > > get_recorded_memory_timed_data_intervals () const SYMBOL_VISIBLE
Get interval in memory layout of data within recorded events.
Data intervals are given per observable.
- Throws
std::runtime_error – On no or raw recording type
-
size_t get_recorded_scratchpad_memory_alignment () const SYMBOL_VISIBLE
Alignment (in bytes) of recorded scratchpad memory.
-
size_t get_recorded_scratchpad_memory_size () const SYMBOL_VISIBLE
Size (in bytes) of recorded scratchpad memory, which is stored after execution and provided as output of this vertex.
When the recording is TimedRecording, the shapes of the synapse views are used to calculate the space requirement for the observables per synapse.
-
std::optional< Recording > get_recording () const SYMBOL_VISIBLE
-
std::vector< SynapseViewShape > const & get_synapse_view_shapes () const SYMBOL_VISIBLE
-
Timer const & get_timer () const SYMBOL_VISIBLE
-
std::vector< Port > inputs () const SYMBOL_VISIBLE
-
bool operator!= (PlasticityRule const &other) const SYMBOL_VISIBLE
-
bool operator== (PlasticityRule const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
-
bool supports_input_from (NeuronView const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
-
bool supports_input_from (SynapseArrayView const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Private Members
-
std::vector<NeuronViewShape>
m_neuron_view_shapes
¶
-
std::vector<SynapseViewShape>
m_synapse_view_shapes
¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, PlasticityRule const &config) SYMBOL_VISIBLE
-
typedef std::variant<RawRecording, TimedRecording>
-
struct
grenade::vx::network
::
PlasticityRuleDescriptor
: public halco::common::detail::BaseType<PlasticityRuleDescriptor, size_t>¶ - #include <plasticity_rule.h>
Descriptor to be used to identify a plasticity rule.
Public Functions
-
inline explicit constexpr
PlasticityRuleDescriptor
(value_type const value = 0)¶
-
inline explicit constexpr
-
struct
grenade::vx::execution::detail::ExecutionInstanceBuilder
::
PlaybackPrograms
¶ - #include <execution_instance_builder.h>
-
struct
grenade::vx::network
::
Population
¶ - #include <population.h>
Population of on-chip neurons.
Public Functions
-
Population
() = default¶
-
Population (Neurons const &neurons) SYMBOL_VISIBLE
-
std::set< halco::hicann_dls::vx::v3::AtomicNeuronOnDLS > get_atomic_neurons () const SYMBOL_VISIBLE
-
size_t get_atomic_neurons_size () const SYMBOL_VISIBLE
-
bool operator!= (Population const &other) const SYMBOL_VISIBLE
-
bool operator== (Population const &other) const SYMBOL_VISIBLE
-
bool valid () const SYMBOL_VISIBLE
Check validity of projection config.
Friends
-
friend std::ostream & operator<< (std::ostream &os, Population const &population) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network
::
PopulationDescriptor
: public halco::common::detail::BaseType<PopulationDescriptor, size_t>¶ - #include <population_descriptor.h>
Descriptor to be used to identify a population.
Public Functions
-
inline explicit constexpr
PopulationDescriptor
(value_type const value = 0)¶
-
inline explicit constexpr
-
struct
grenade::vx::network::PlasticityRule
::
PopulationHandle
¶ - #include <plasticity_rule.h>
Population handle parameters.
Public Functions
-
bool operator!= (PopulationHandle const &other) const SYMBOL_VISIBLE
-
bool operator== (PopulationHandle const &other) const SYMBOL_VISIBLE
Public Members
-
PopulationDescriptor
descriptor
¶ Descriptor of population.
-
std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<std::optional<NeuronReadoutSource>>>>
neuron_readout_sources
¶ Readout source specification per neuron circuit used for static configuration such that the plasticity rule can read the specified signal.
Friends
-
friend std::ostream & operator<< (std::ostream &os, PopulationHandle const &population) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow
::
Port
¶ - #include <port.h>
Description of a single data port of a vertex.
A port is described by the type of data to be transfered and a size of parallel transfered elements.
Public Functions
-
inline explicit constexpr
Port
(size_t const size, ConnectionType const type)¶
Friends
-
friend std::ostream & operator<< (std::ostream &os, Port const &port) SYMBOL_VISIBLE
-
inline explicit constexpr
-
struct
grenade::vx::signal_flow
::
PortRestriction
¶ - #include <port_restriction.h>
Interval restriction of a port.
This allows connecting a subset of a vertex’s output to another vertex’s input.
Public Functions
-
PortRestriction
() = default¶
-
PortRestriction (size_t min, size_t max) SYMBOL_VISIBLE
-
bool is_restriction_of (Port const &port) const SYMBOL_VISIBLE
Get whether this port restriction is a valid restriction of the given port.
This is the case exactly if the range [min, max] is within the port’s range [0, size).
- Parameters
port – Port to check
- Returns
Boolean validity value
-
size_t max () const SYMBOL_VISIBLE
Get maximal inclusive index.
- Returns
Maximum of range
-
size_t min () const SYMBOL_VISIBLE
Get minimal inclusive index.
- Returns
Minimum of range
-
bool operator!= (PortRestriction const &other) const SYMBOL_VISIBLE
-
bool operator== (PortRestriction const &other) const SYMBOL_VISIBLE
-
size_t size () const SYMBOL_VISIBLE
Get size of port restriction range [min, max].
- Returns
Size value
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, PortRestriction const &data) SYMBOL_VISIBLE
-
-
class
grenade::vx::execution::detail
::
PPUProgramGenerator
¶ - #include <ppu_program_generator.h>
Public Functions
-
PPUProgramGenerator
() = default¶
-
void add (signal_flow::Graph::vertex_descriptor descriptor, signal_flow::vertex::PlasticityRule const &rule, std::vector< std::pair< halco::hicann_dls::vx::v3::SynramOnDLS, ppu::SynapseArrayViewHandle > > const &synapses, std::vector< std::pair< halco::hicann_dls::vx::v3::NeuronRowOnDLS, ppu::NeuronViewHandle > > const &neurons) SYMBOL_VISIBLE
-
std::vector< std::string > done () SYMBOL_VISIBLE
Public Members
-
bool
has_periodic_cadc_readout
= false¶
Private Members
-
std::vector<std::tuple<signal_flow::Graph::vertex_descriptor, signal_flow::vertex::PlasticityRule, std::vector<std::pair<halco::hicann_dls::vx::v3::SynramOnDLS, ppu::SynapseArrayViewHandle>>, std::vector<std::pair<halco::hicann_dls::vx::v3::NeuronRowOnDLS, ppu::NeuronViewHandle>>>>
m_plasticity_rules
¶
-
-
struct
grenade::vx::Compiler
::
Program
¶ - #include <ppu.h>
PPU program result of compilation.
Public Members
-
std::optional<std::string>
objdump
¶ Optional objdump -d output of program.
Generation is performed for loglevel trace.
-
std::optional<std::string>
readelf
¶ Optional readelf -a output of program.
Generation is performed for loglevel debug.
-
std::optional<std::string>
-
struct
grenade::vx::CachingCompiler
::
ProgramCache
¶ - #include <ppu.h>
Cache for compiled PPU programs.
The program information is indexed by hashed compilation options and the source code supplied on top of the base program. It assumes, that the base source and included headers are not modified concurrently.
-
struct
grenade::vx::network
::
Projection
¶ - #include <projection.h>
Projection between populations.
Public Types
-
typedef std::vector<Connection>
Connections
¶ Point-to-point neuron connections type.
Public Functions
-
Projection
() = default¶
-
Projection (Receptor const &receptor, Connections &&connections, PopulationDescriptor population_pre, PopulationDescriptor population_post) SYMBOL_VISIBLE
-
Projection (Receptor const &receptor, Connections const &connections, PopulationDescriptor population_pre, PopulationDescriptor population_post) SYMBOL_VISIBLE
-
parent def ("from_numpy", from_numpy)
-
inline for (size_t i=0;i< self.connections.size();++i)
-
inline if (shape.at(1) !=5)
-
self connections resize (shape.at(0))
Public Members
-
Connections
connections
= {}¶ Point-to-point neuron connections.
-
auto const
data
= pyconnections.unchecked<2>()¶
-
PopulationDescriptor
population_post
= {}¶ Descriptor to post-synaptic population.
-
self
population_post
= population_post
-
PopulationDescriptor
population_pre
= {}¶ Descriptor to pre-synaptic population.
-
self
population_pre
= population_pre
-
self
receptor
= receptor
-
typedef std::vector<Connection>
-
struct
ProjectionDescriptor
: public halco::common::detail::BaseType<ProjectionDescriptor, size_t>¶ - #include <projection.h>
Descriptor to be used to identify a projection.
Public Functions
-
inline explicit constexpr
ProjectionDescriptor
(value_type const value = 0)¶
-
inline explicit constexpr
-
class
grenade::vx::compute::detail
::
RangeSplit
¶ - #include <range_split.h>
Split one-dimensional range into ranges of maximal given size.
Public Functions
-
explicit RangeSplit (size_t split_size) SYMBOL_VISIBLE
Construct range split with maximal size of ranges to split into.
- Parameters
split_size – Maximal size of ranges to split into
-
std::vector< SubRange > operator() (size_t size) const SYMBOL_VISIBLE
Split given range [0, size) into ranges.
- Parameters
size – Size of range to split
- Returns
Sub-ranges adhering to maximal size
Private Members
-
size_t
m_split_size
¶
-
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule
::
RawRecording
¶ - #include <plasticity_rule.h>
Recording information for execution of the rule.
Raw recording of one scratchpad memory region for all timed invocations of the rule. No automated recording of time is performed.
Public Functions
-
bool operator!= (RawRecording const &other) const SYMBOL_VISIBLE
-
bool operator== (RawRecording const &other) const SYMBOL_VISIBLE
Public Members
-
size_t
scratchpad_memory_size
¶ Size (in bytes) of recorded scratchpad memory, which is stored after execution and provided as output of this vertex.
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, RawRecording const &recording) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule
::
RawRecordingData
¶ - #include <plasticity_rule.h>
Recording data corresponding to a raw recording.
Public Members
-
std::vector<std::vector<signal_flow::Int8>>
data
¶ Data with outer dimension being batch entries and inner dimension being the data per batch entry.
Friends
-
friend std::ostream & operator<< (std::ostream &os, RawRecordingData const &data) SYMBOL_VISIBLE
-
std::vector<std::vector<signal_flow::Int8>>
-
struct
grenade::vx::network
::
Receptor
¶ - #include <receptor.h>
Receptor description of a neuron (compartment).
Public Functions
-
Receptor
() = default¶
-
Receptor (ID id, Type type) SYMBOL_VISIBLE
-
size_t hash () const SYMBOL_VISIBLE
-
bool operator!= (Receptor const &other) const SYMBOL_VISIBLE
-
bool operator== (Receptor const &other) const SYMBOL_VISIBLE
Friends
-
friend size_t hash_value (Receptor const &receptor) SYMBOL_VISIBLE
-
friend std::ostream & operator<< (std::ostream &os, Receptor const &receptor) SYMBOL_VISIBLE
-
-
class
grenade::vx::compute
::
ReLU
¶ - #include <relu.h>
Compute a rectified linear unit operation.
Public Functions
-
ReLU
() = default¶
-
ReLU (size_t size) SYMBOL_VISIBLE
Create single ReLU compute graph wrapper.
- Parameters
size – Size of operation.
-
size_t input_size () const SYMBOL_VISIBLE
-
size_t output_size () const SYMBOL_VISIBLE
-
std::vector< std::vector< signal_flow::Int8 > > run (std::vector< std::vector< signal_flow::Int8 > > const &inputs, lola::vx::v3::Chip const &config, execution::JITGraphExecutor &executor) const SYMBOL_VISIBLE
Run given operation.
- Parameters
inputs – Input values to use
config – Static chip configuration to be used
executor – Executor backend to use
- Returns
Resulting values
Private Members
-
signal_flow::Graph
m_graph
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_input_vertex
= {}¶
-
signal_flow::Graph::vertex_descriptor
m_output_vertex
= {}¶
Friends
- friend struct cereal::access
-
-
struct
grenade::vx::signal_flow::vertex
::
ReLU
¶ - #include <relu.h>
ReLU of multiple inputs of signal_flow::Int8 data type.
Public Functions
-
ReLU
() = default¶
-
explicit ReLU (size_t size) SYMBOL_VISIBLE
Construct operation with specified size.
- Parameters
size – Number of data values per input
-
std::array< Port, 1 > inputs () const SYMBOL_VISIBLE
-
bool operator!= (ReLU const &other) const SYMBOL_VISIBLE
-
bool operator== (ReLU const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Private Members
-
size_t
m_size
= {}¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, ReLU const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::NetworkGraphBuilder
::
Resources
¶ - #include <network_graph_builder.h>
Public Members
-
std::map<PopulationDescriptor, std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor>>
background_spike_sources
¶
-
std::vector<signal_flow::Graph::vertex_descriptor>
cadc_output
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
crossbar_l2_input
¶
-
std::map<halco::hicann_dls::vx::v3::CrossbarNodeOnDLS, signal_flow::Graph::vertex_descriptor>
crossbar_nodes
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
external_input
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
external_output
¶
-
NetworkGraph::GraphTranslation
graph_translation
¶
-
std::optional<signal_flow::Graph::vertex_descriptor>
madc_output
¶
-
std::map<halco::hicann_dls::vx::v3::NeuronEventOutputOnDLS, signal_flow::Graph::vertex_descriptor>
neuron_event_outputs
¶
-
std::map<halco::hicann_dls::vx::v3::PADIBusOnDLS, signal_flow::Graph::vertex_descriptor>
padi_busses
¶
-
std::map<PlasticityRuleDescriptor, signal_flow::Graph::vertex_descriptor>
plasticity_rules
¶
-
std::map<PlasticityRuleDescriptor, signal_flow::Graph::vertex_descriptor>
plasticity_rules_output
¶
-
std::map<PopulationDescriptor, PlacedPopulation>
populations
¶
-
std::map<ProjectionDescriptor, PlacedProjection>
projections
¶
-
std::map<halco::hicann_dls::vx::v3::SynapseDriverOnDLS, signal_flow::Graph::vertex_descriptor>
synapse_drivers
¶
-
std::map<PopulationDescriptor, std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, signal_flow::Graph::vertex_descriptor>>
-
struct
grenade::vx::network::routing::RoutingBuilder
::
RoutedConnection
¶ Public Members
-
std::pair<ProjectionDescriptor, size_t>
descriptor
¶
-
halco::hicann_dls::vx::v3::AtomicNeuronOnDLS
target
¶
-
std::pair<ProjectionDescriptor, size_t>
-
struct
grenade::vx::network::routing
::
RoutingBuilder
¶ - #include <routing_builder.h>
Public Types
-
typedef RoutingResult
Result
¶
Public Functions
-
RoutingBuilder () SYMBOL_VISIBLE
-
Result route (Network const &network, ConnectionRoutingResult const &connection_routing_result, std::optional< RoutingOptions > const &options=std::nullopt) const SYMBOL_VISIBLE
Private Functions
-
void
apply_routed_connections
(std::map<std::pair<ProjectionDescriptor, size_t>, std::vector<PlacedConnection>> const &placed_connections, std::map<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>, halco::hicann_dls::vx::v3::SpikeLabel> const &internal_labels, std::map<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>, std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, halco::hicann_dls::vx::v3::SpikeLabel>> const &background_labels, std::map<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>, std::map<halco::hicann_dls::vx::v3::PADIBusOnDLS, halco::hicann_dls::vx::v3::SpikeLabel>> const &external_labels, Network const &network, Result &result) const¶
-
void
apply_source_labels
(RoutingConstraints const &constraints, std::map<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>, halco::hicann_dls::vx::v3::SpikeLabel> const &internal, std::map<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>, std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, halco::hicann_dls::vx::v3::SpikeLabel>> const &background, std::map<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>, std::map<halco::hicann_dls::vx::v3::PADIBusOnDLS, halco::hicann_dls::vx::v3::SpikeLabel>> const &external, Network const &network, Result &result) const¶
-
std::map<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>, std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, halco::hicann_dls::vx::v3::SpikeLabel>>
get_background_labels
(std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>> const &descriptors, std::vector<SourceOnPADIBusManager::BackgroundSource> const &background_sources, SourceOnPADIBusManager::Partition const &partition, std::vector<SynapseDriverOnDLSManager::Allocation> const &allocations) const¶
-
std::pair<std::vector<SourceOnPADIBusManager::BackgroundSource>, std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>>>
get_background_sources
(RoutingConstraints const &constraints, halco::common::typed_array<RoutingConstraints::PADIBusConstraints, halco::hicann_dls::vx::v3::PADIBusOnDLS> const &padi_bus_constraints, Network const &network) const¶
-
std::map<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>, std::map<halco::hicann_dls::vx::v3::PADIBusOnDLS, halco::hicann_dls::vx::v3::SpikeLabel>>
get_external_labels
(std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>> const &descriptors, SourceOnPADIBusManager::Partition const &partition, std::vector<SynapseDriverOnDLSManager::Allocation> const &allocations) const¶
-
std::pair<std::vector<SourceOnPADIBusManager::ExternalSource>, std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>>>
get_external_sources
(RoutingConstraints const &constraints, halco::common::typed_array<RoutingConstraints::PADIBusConstraints, halco::hicann_dls::vx::v3::PADIBusOnDLS> const &padi_bus_constraints, Network const &network) const¶
-
std::map<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>, halco::hicann_dls::vx::v3::SpikeLabel>
get_internal_labels
(std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>> const &descriptors, SourceOnPADIBusManager::Partition const &partition, std::vector<SynapseDriverOnDLSManager::Allocation> const &allocations) const¶
-
std::pair<std::vector<SourceOnPADIBusManager::InternalSource>, std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>>>
get_internal_sources
(RoutingConstraints const &constraints, halco::common::typed_array<RoutingConstraints::PADIBusConstraints, halco::hicann_dls::vx::v3::PADIBusOnDLS> const &padi_bus_constraints, Network const &network) const¶
-
std::map<std::pair<ProjectionDescriptor, size_t>, std::vector<PlacedConnection>>
place_routed_connections
(SourceOnPADIBusManager::Partition const &partition, std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>> const &internal_descriptors, std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>> const &background_descriptors, std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>> const &external_descriptors, std::vector<SourceOnPADIBusManager::InternalSource> const &internal_sources, std::vector<SourceOnPADIBusManager::BackgroundSource> const &background_sources, std::vector<SourceOnPADIBusManager::ExternalSource> const &external_sources, std::vector<SynapseDriverOnDLSManager::Allocation> const &padi_bus_allocations, RoutingConstraints const &constraints, Network const &network, Result &result) const¶
-
template<typename
Connection
>
std::map<std::pair<ProjectionDescriptor, size_t>, std::vector<PlacedConnection>>place_routed_connections
(std::vector<Connection> const &connections, std::map<Receptor::Type, std::vector<halco::hicann_dls::vx::v3::SynapseRowOnDLS>> const &synapse_rows) const¶
-
std::map<std::pair<ProjectionDescriptor, size_t>, std::vector<PlacedConnection>>
place_routed_connections
(std::vector<RoutedConnection> const &connections, std::vector<halco::hicann_dls::vx::v3::SynapseRowOnDLS> const &synapse_rows) const¶
-
template<typename
Sources
>
std::map<std::pair<ProjectionDescriptor, size_t>, std::vector<PlacedConnection>>place_routed_connections
(std::vector<SourceOnPADIBusManager::Partition::Group> const &partition, std::vector<std::tuple<PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron>> const &descriptors, Sources const &sources, std::vector<SynapseDriverOnDLSManager::Allocation> const &padi_bus_allocations, size_t offset, RoutingConstraints const &constraints, Network const &network, Result &result) const¶
-
void
route_internal_crossbar
(SourceOnPADIBusManager::DisabledInternalRoutes &disabled_internal_routes, RoutingConstraints const &constraints, halco::common::typed_array<RoutingConstraints::PADIBusConstraints, halco::hicann_dls::vx::v3::PADIBusOnDLS> &padi_bus_constraints, Result &result) const¶
-
typedef RoutingResult
-
struct
grenade::vx::network::routing
::
RoutingConstraints
¶ - #include <routing_constraints.h>
Accessors for routing constraints for a given abstract network.
Public Functions
-
RoutingConstraints (Network const &network, ConnectionRoutingResult const &connection_routing_result) SYMBOL_VISIBLE
Construct constraints from and for an abstract network.
- Parameters
network – Abstract network
connection_routing_result – Result of connection routing
-
void check () const SYMBOL_VISIBLE
Check if routing in possible in principle given the hardware limitations.
The supported in-degree per neuron is checked as well as the required number of synapse rows per PADI-bus.
- Throws
std::runtime_error – On unsatisfiable constraints
-
std::vector< BackgroundConnection > get_background_connections () const SYMBOL_VISIBLE
Get background connections of network.
- Returns
Background connections
-
std::vector< ExternalConnection > get_external_connections () const SYMBOL_VISIBLE
Get external connections of network.
- Returns
External connections
-
halco::common::typed_array< std::map< Receptor::Type, std::vector< std::pair< ProjectionDescriptor, size_t > > >, halco::hicann_dls::vx::v3::HemisphereOnDLS > get_external_connections_per_hemisphere () const SYMBOL_VISIBLE
Get number of external connections placed onto each chip hemisphere per receptor type.
-
halco::common::typed_array< std::map< Receptor::Type, std::set< std::pair< PopulationDescriptor, size_t > > >, halco::hicann_dls::vx::v3::HemisphereOnDLS > get_external_sources_to_hemisphere () const SYMBOL_VISIBLE
Get number of external sources projecting onto each chip hemisphere per receptor type.
-
std::vector< InternalConnection > get_internal_connections () const SYMBOL_VISIBLE
Get internal connections of network.
- Returns
Internal connections
-
std::set< halco::hicann_dls::vx::v3::AtomicNeuronOnDLS > get_neither_recorded_nor_source_neurons () const SYMBOL_VISIBLE
Get neurons which are neither recorded nor serve as source of (a) connection(s).
-
std::map< halco::hicann_dls::vx::v3::PADIBusOnDLS, std::set< halco::hicann_dls::vx::v3::NeuronEventOutputOnDLS > > get_neuron_event_outputs_on_padi_bus () const SYMBOL_VISIBLE
Get neuron event outputs projecting onto each PADI-bus.
This function assumes the crossbar to forward all events at every node.
-
halco::common::typed_array< size_t, halco::hicann_dls::vx::v3::AtomicNeuronOnDLS > get_neuron_in_degree () const SYMBOL_VISIBLE
Get in-degree per on-chip neuron.
-
halco::common::typed_array< halco::common::typed_array< size_t, halco::hicann_dls::vx::v3::PADIBusOnPADIBusBlock >, halco::hicann_dls::vx::v3::AtomicNeuronOnDLS > get_neuron_in_degree_per_padi_bus () const SYMBOL_VISIBLE
Get in-degree per on-chip neuron for each incoming PADI-bus.
-
halco::common::typed_array< std::map< Receptor::Type, size_t >, halco::hicann_dls::vx::v3::AtomicNeuronOnDLS > get_neuron_in_degree_per_receptor_type () const SYMBOL_VISIBLE
Get in-degree per on-chip neuron for each receptor type.
-
halco::common::typed_array< halco::common::typed_array< std::map< Receptor::Type, size_t >, halco::hicann_dls::vx::v3::PADIBusOnPADIBusBlock >, halco::hicann_dls::vx::v3::AtomicNeuronOnDLS > get_neuron_in_degree_per_receptor_type_per_padi_bus () const SYMBOL_VISIBLE
Get in-degree per on-chip neuron for each incoming PADI-bus and receptor type.
-
std::map< halco::hicann_dls::vx::v3::NeuronEventOutputOnDLS, std::vector< halco::hicann_dls::vx::v3::AtomicNeuronOnDLS > > get_neurons_on_event_output () const SYMBOL_VISIBLE
Get on-chip neurons forwarding their events per neuron event output.
-
std::map< halco::hicann_dls::vx::v3::PADIBusOnDLS, std::set< halco::hicann_dls::vx::v3::AtomicNeuronOnDLS > > get_neurons_on_padi_bus () const SYMBOL_VISIBLE
Get on-chip neurons forwarding their events onto each PADI-bus.
This function assumes the crossbar to forward all events at every node.
-
halco::common::typed_array< size_t, halco::hicann_dls::vx::v3::PADIBusOnDLS > get_num_background_sources_on_padi_bus () const SYMBOL_VISIBLE
Get number of background spike sources projecting onto each PADI-bus.
-
halco::common::typed_array< size_t, halco::hicann_dls::vx::v3::PADIBusOnDLS > get_num_synapse_rows_per_padi_bus () const SYMBOL_VISIBLE
Get required number of synapse rows for each PADI-bus.
This is the accumulation of all numbers of synapse rows required for different receptor types on each PADI-bus.
-
halco::common::typed_array< std::map< Receptor::Type, size_t >, halco::hicann_dls::vx::v3::PADIBusOnDLS > get_num_synapse_rows_per_padi_bus_per_receptor_type () const SYMBOL_VISIBLE
Get required number of synapse rows for each PADI-bus and receptor type combination.
-
halco::common::typed_array< PADIBusConstraints, halco::hicann_dls::vx::v3::PADIBusOnDLS > get_padi_bus_constraints () const SYMBOL_VISIBLE
Get constraints for each PADI-bus.
Private Members
-
ConnectionRoutingResult const &
m_connection_routing_result
¶
-
-
struct
grenade::vx::network
::
RoutingOptions
¶ - #include <routing_options.h>
Options to be passed to routing algorithm.
Public Types
-
typedef routing::SynapseDriverOnDLSManager::AllocationPolicy
AllocationPolicy
¶ Policy to be used in synapse driver allocation.
-
typedef routing::SynapseDriverOnDLSManager::AllocationPolicyBacktracking
AllocationPolicyBacktracking
¶
-
typedef routing::SynapseDriverOnDLSManager::AllocationPolicyGreedy
AllocationPolicyGreedy
¶
Public Functions
-
RoutingOptions () SYMBOL_VISIBLE
Public Members
-
AllocationPolicy
synapse_driver_allocation_policy
¶
Friends
-
friend std::ostream & operator<< (std::ostream &os, RoutingOptions const &options) SYMBOL_VISIBLE
-
typedef routing::SynapseDriverOnDLSManager::AllocationPolicy
-
struct
grenade::vx::network
::
RoutingResult
¶ - #include <routing_result.h>
Result of connection routing.
Public Types
-
typedef std::map<PopulationDescriptor, std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, halco::hicann_dls::vx::v3::NeuronLabel>>
BackgroundSpikeSourceLabels
¶ Background spike source configuration for each population.
-
typedef std::map<ProjectionDescriptor, std::vector<std::vector<PlacedConnection>>>
Connections
¶
-
typedef std::map<halco::hicann_dls::vx::v3::CrossbarNodeOnDLS, haldls::vx::v3::CrossbarNode>
CrossbarNodes
¶ Crossbar node configuration resulting from routing to be applied.
This map is only required to feature used crossbar nodes, all other will be considered disabled.
-
typedef std::map<PopulationDescriptor, std::vector<std::vector<halco::hicann_dls::vx::v3::SpikeLabel>>>
ExternalSpikeLabels
¶ Spike label corresponding to each neuron in a external population.
-
typedef std::map<PopulationDescriptor, std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<std::optional<haldls::vx::v3::NeuronBackendConfig::AddressOut>>>>>
InternalNeuronLabels
¶ Neuron event output address corresponding to each neuron in a on-chip population.
-
typedef std::map<halco::hicann_dls::vx::v3::SynapseDriverOnDLS, haldls::vx::v3::SynapseDriverConfig::RowAddressCompareMask>
SynapseDriverRowAddressCompareMasks
¶ Synapse driver row address compare mask resulting from routing to be applied.
This map is only required to feature used synapse drivers, all other will be considered disabled.
-
typedef std::map<halco::hicann_dls::vx::v3::SynapseRowOnDLS, haldls::vx::v3::SynapseDriverConfig::RowMode>
SynapseRowModes
¶ Synapse row mode resulting from routing to be applied.
This map is only required to feature used synapse rows, all other will be considered disabled.
Public Functions
-
RoutingResult
() = default¶
Public Members
-
BackgroundSpikeSourceLabels
background_spike_source_labels
¶
-
ConnectionRoutingResult
connection_routing_result
¶
-
Connections
connections
¶
-
CrossbarNodes
crossbar_nodes
¶
-
ExternalSpikeLabels
external_spike_labels
¶
-
InternalNeuronLabels
internal_neuron_labels
¶
-
SynapseDriverRowAddressCompareMasks
synapse_driver_compare_masks
¶
-
SynapseRowModes
synapse_row_modes
¶
-
struct grenade::vx::network::RoutingResult::TimingStatistics
timing_statistics
¶
Friends
-
friend std::ostream & operator<< (std::ostream &, RoutingResult const &) SYMBOL_VISIBLE
-
typedef std::map<PopulationDescriptor, std::map<halco::hicann_dls::vx::v3::HemisphereOnDLS, halco::hicann_dls::vx::v3::NeuronLabel>>
-
struct
grenade::vx::compute
::
Sequence
¶ - #include <sequence.h>
Public Types
-
typedef std::variant<std::vector<std::vector<signal_flow::UInt5>>, std::vector<std::vector<signal_flow::Int8>>, std::vector<std::vector<signal_flow::UInt32>>>
IOData
¶ Vectorized number data for input and output without timing information.
Outer dimension: batch-entries Inner dimension: values per batch entry
Public Functions
-
Sequence
() = default¶
-
IOData run (IOData const &input, lola::vx::v3::Chip const &config, execution::JITGraphExecutor &executor) SYMBOL_VISIBLE
Friends
- friend struct cereal::access
-
typedef std::variant<std::vector<std::vector<signal_flow::UInt5>>, std::vector<std::vector<signal_flow::Int8>>, std::vector<std::vector<signal_flow::UInt32>>>
-
struct
grenade::vx::network::routing::SynapseDriverOnPADIBusManager::AllocationRequest
::
Shape
¶ - #include <synapse_driver_on_padi_bus_manager.h>
Single synapse driver collection.
Public Functions
-
bool operator!= (Shape const &other) const SYMBOL_VISIBLE
-
bool operator== (Shape const &other) const SYMBOL_VISIBLE
Public Members
-
bool
contiguous
¶ Whether the synapse drivers shall be contiguous, i.e.
without holes.
-
size_t
size
¶ Number of synapse drivers.
Friends
-
friend std::ostream & operator<< (std::ostream &os, Shape const &value) SYMBOL_VISIBLE
-
-
class
grenade::vx::compute::detail
::
SingleChipExecutionInstanceManager
¶ - #include <single_chip_execution_instance_manager.h>
Manager for execution instances of a single chip.
Execution indices are allocated linearly and hemispheres are used alternatingly.
Public Functions
-
SingleChipExecutionInstanceManager
() = default¶
-
halco::hicann_dls::vx::v3::HemisphereOnDLS get_current_hemisphere () const SYMBOL_VISIBLE
Get current hemisphere.
-
signal_flow::ExecutionInstance next () SYMBOL_VISIBLE
Get next execution instance.
-
signal_flow::ExecutionInstance next_index () SYMBOL_VISIBLE
Get next execution instance forcing a change of the execution index.
Private Members
-
halco::hicann_dls::vx::v3::HemisphereOnDLS
m_current_hemisphere
¶
-
signal_flow::ExecutionIndex
m_current_index
¶
-
-
struct
grenade::vx::CachingCompiler::ProgramCache
::
Source
¶ - #include <ppu.h>
Sources used for compilation of program serving as hash source into the cache.
Public Functions
-
std::string sha1 () const SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex::MADCReadoutView
::
Source
¶ - #include <madc_readout.h>
Public Types
-
typedef halco::hicann_dls::vx::v3::AtomicNeuronOnDLS
Coord
¶
Public Functions
-
bool operator!= (Source const &other) const SYMBOL_VISIBLE
-
bool operator== (Source const &other) const SYMBOL_VISIBLE
-
typedef halco::hicann_dls::vx::v3::AtomicNeuronOnDLS
-
struct
grenade::vx::network::routing::detail
::
SourceOnPADIBusManager
¶ - #include <source_on_padi_bus_manager.h>
Public Types
-
typedef grenade::vx::network::routing::SourceOnPADIBusManager::BackgroundSource
BackgroundSource
¶
-
typedef grenade::vx::network::routing::SourceOnPADIBusManager::ExternalSource
ExternalSource
¶
-
typedef grenade::vx::network::routing::SourceOnPADIBusManager::InternalSource
InternalSource
¶
-
typedef grenade::vx::network::routing::SourceOnPADIBusManager::SynapseDriver
SynapseDriver
¶
Public Static Functions
-
static std::optional< halco::common::typed_array< std::vector< std::vector< size_t > >, halco::hicann_dls::vx::v3::PADIBusOnDLS > > distribute_external_sources_linear (std::vector< ExternalSource > const &sources, halco::common::typed_array< size_t, halco::hicann_dls::vx::v3::PADIBusOnDLS > const &used_num_synapse_drivers) SYMBOL_VISIBLE
Distribute external sources onto PADI-busses given the distribution of internal and background sources.
The algorithm fills synapse drivers on PADI-busses in Enum-order.
- Parameters
sources – All external sources containing their out-degree to neurons
used_synapse_drivers – Number of used synapse drivers per PADI-bus
- Returns
Indices into external source collection distributed onto PADI-busses. If no distribution is found, returns none.
-
static std::vector< SynapseDriverOnDLSManager::AllocationRequest > get_allocation_requests_background (std::vector< std::vector< size_t > > const &filter, halco::hicann_dls::vx::v3::PADIBusOnDLS const &padi_bus, std::vector< size_t > const &num_synapse_drivers) SYMBOL_VISIBLE
Get allocation requests for filtered background sources.
- Parameters
filter – List of indices into sources, split into chunks
padi_bus – PADI-bus location
num_synapse_drivers – Number of synapse driver required for each chunk of sources
- Returns
Allocation requests for synapse driver allocation algorithm
-
static SynapseDriverOnDLSManager::AllocationRequest get_allocation_requests_external (halco::hicann_dls::vx::v3::PADIBusOnDLS const &padi_bus, size_t num_synapse_drivers) SYMBOL_VISIBLE
Get allocation requests for external sources.
- Parameters
padi_bus – PADI-bus location
num_synapse_drivers – Number of synapse driver required for each chunk of sources
- Returns
Allocation requests for synapse driver allocation algorithm
-
static std::vector< SynapseDriverOnDLSManager::AllocationRequest > get_allocation_requests_internal (std::vector< std::vector< size_t > > const &filter, halco::hicann_dls::vx::v3::PADIBusOnPADIBusBlock const &padi_bus, halco::hicann_dls::vx::v3::NeuronBackendConfigBlockOnDLS const &backend_block, halco::common::typed_array< std::vector< size_t >, halco::hicann_dls::vx::v3::PADIBusOnDLS > const &num_synapse_drivers) SYMBOL_VISIBLE
Get allocation requests for filtered internal sources.
- Parameters
filter – List of indices into sources, split into chunks
padi_bus – PADI-bus location
num_synapse_drivers – Number of synapse driver required for each chunk of sources
- Returns
Allocation requests
-
template<typename
S
>
static halco::common::typed_array<size_t, halco::hicann_dls::vx::v3::PADIBusBlockOnDLS>get_num_synapse_drivers
(std::vector<S> const &sources, std::vector<size_t> const &filter)¶ Get number of synapse drivers required to place the synapses for the filtered sources.
- Parameters
sources – All sources containing their out-degree to neurons
filter – List of indices in sources to filter for calculation
- Returns
Number of required synapse drivers per PADI-bus
-
static std::vector< std::vector< size_t > > split_linear (std::vector< size_t > const &filter) SYMBOL_VISIBLE
Split list of indices into source vector into chunks of synapse label size.
Split is performed as [0, Label::size), [Label::size, …), … .
- Parameters
filter – List of indices to split
- Returns
Chunks of lists of indices
-
typedef grenade::vx::network::routing::SourceOnPADIBusManager::BackgroundSource
-
struct
grenade::vx::network::routing
::
SourceOnPADIBusManager
¶ - #include <source_on_padi_bus_manager.h>
Partitioning manager for sources projecting onto internal neurons via events propagated by PADI-busses.
Given all sources and their destination(s), distribute their event paths over PADI-busses. Depending on the type of source, the constraints for possible PADI-busses vary. Internal sources project at one fixed PADI-bus per hemisphere and background sources project at one fixed PADI-bus per chip while external sources are freely distributable over all PADI-busses of a chip.
Public Types
-
typedef std::map<halco::hicann_dls::vx::v3::NeuronEventOutputOnDLS, std::set<halco::hicann_dls::vx::v3::HemisphereOnDLS>>
DisabledInternalRoutes
¶
-
typedef SynapseDriverOnDLSManager::Label
Label
¶ Label to identify events at synapse driver(s).
-
typedef SynapseDriverOnDLSManager::SynapseDriver
SynapseDriver
¶ Synapse driver location.
Public Functions
-
SourceOnPADIBusManager (DisabledInternalRoutes const &disabled_internal_routes={}) SYMBOL_VISIBLE
Construct manager.
- Parameters
disabled_internal_routes – Disabled routes between internal sources and targets, which should never be used and required
-
std::optional< Partition > solve (std::vector< InternalSource > const &internal_sources, std::vector< BackgroundSource > const &background_sources, std::vector< ExternalSource > const &external_sources) const SYMBOL_VISIBLE
Partition sources into allocation requests for projected-on synapse drivers.
- Parameters
internal_sources – Collection of internal sources
background_sources – Collection of background sources
external_sources – Collection of external sources
- Returns
Partitioning of sources into synapse driver allocation requests. If unsuccessful, returns none.
-
typedef std::map<halco::hicann_dls::vx::v3::NeuronEventOutputOnDLS, std::set<halco::hicann_dls::vx::v3::HemisphereOnDLS>>
-
struct
grenade::vx::signal_flow::vertex::MADCReadoutView
::
SourceSelection
¶ - #include <madc_readout.h>
Configuration of (timed) selection between the two MADC channels.
Public Types
-
typedef halco::hicann_dls::vx::SourceMultiplexerOnReadoutSourceSelection
Initial
¶ Initially selected channel.
-
typedef haldls::vx::v3::MADCConfig::ActiveMuxInputSelectLength
Period
¶ Period with which to switch between channels.
Public Functions
-
bool operator!= (SourceSelection const &other) const SYMBOL_VISIBLE
-
bool operator== (SourceSelection const &other) const SYMBOL_VISIBLE
-
typedef halco::hicann_dls::vx::SourceMultiplexerOnReadoutSourceSelection
-
struct
grenade::vx::network::Population::Neuron::Compartment
::
SpikeMaster
¶ - #include <population.h>
The spike master is used for outgoing connections and recording of spikes.
Not every compartment is required to feature a spike master, e.g. if it is passive.
Public Functions
-
SpikeMaster (size_t neuron_on_compartment, bool enable_record_spikes) SYMBOL_VISIBLE
-
bool operator!= (SpikeMaster const &other) const SYMBOL_VISIBLE
-
bool operator== (SpikeMaster const &other) const SYMBOL_VISIBLE
Public Members
-
bool
enable_record_spikes
¶ Enable spike recording.
-
size_t
neuron_on_compartment
¶ Index of neuron on compartment.
Friends
-
friend std::ostream & operator<< (std::ostream &os, SpikeMaster const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::compute::detail::RangeSplit
::
SubRange
¶ - #include <range_split.h>
Sub-range consisting of local size and offset.
-
struct
grenade::vx::signal_flow::vertex
::
Subtraction
¶ - #include <subtraction.h>
Subtraction of multiple inputs of signal_flow::Int8 data type.
Public Functions
-
Subtraction
() = default¶
-
explicit Subtraction (size_t size) SYMBOL_VISIBLE
Construct subtraction with specified size.
- Parameters
size – Number of data values per input
-
std::array< Port, 1 > inputs () const SYMBOL_VISIBLE
-
bool operator!= (Subtraction const &other) const SYMBOL_VISIBLE
-
bool operator== (Subtraction const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= true¶
Private Members
-
size_t
m_size
= {}¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, Subtraction const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex::SynapseArrayViewSparse
::
Synapse
¶ - #include <synapse_array_view_sparse.h>
Public Functions
-
bool operator!= (Synapse const &other) const SYMBOL_VISIBLE
-
bool operator== (Synapse const &other) const SYMBOL_VISIBLE
Public Members
-
size_t
index_column
¶
-
size_t
index_row
¶
-
lola::vx::v3::SynapseMatrix::Label
label
¶
-
lola::vx::v3::SynapseMatrix::Weight
weight
¶
Friends
- friend struct cereal::access
-
-
struct
grenade::vx::signal_flow::vertex
::
SynapseArrayView
¶ - #include <synapse_array_view.h>
A rectangular view of synapses connected to a set of synapse drivers.
Public Types
-
typedef halco::hicann_dls::vx::v3::SynramOnDLS
Synram
¶
Public Functions
-
SynapseArrayView
() = default¶
-
template<typename
SynramT
, typenameRowsT
, typenameColumnsT
, typenameWeightsT
, typenameLabelsT
>
explicitSynapseArrayView
(SynramT &&synram, RowsT &&rows, ColumnsT &&columns, WeightsT &&weights, LabelsT &&labels)¶ Construct synapse array view.
- Parameters
synram – Synram location of synapses
rows – Coordinates of rows
columns – Coordinates of columns
weights – Weight values
labels – Label values
-
boost::iterator_range< Columns::const_iterator > get_columns () const SYMBOL_VISIBLE
Accessor to synapse column coordinates via a range.
- Returns
Range of synapse column coordinates
-
boost::iterator_range< Labels::const_iterator > get_labels () const SYMBOL_VISIBLE
Accessor to label configuration via a range.
- Returns
Range of label configuration
-
boost::iterator_range< Rows::const_iterator > get_rows () const SYMBOL_VISIBLE
Accessor to synapse row coordinates via a range.
- Returns
Range of synapse row coordinates
-
Synram const & get_synram () const SYMBOL_VISIBLE
-
boost::iterator_range< Weights::const_iterator > get_weights () const SYMBOL_VISIBLE
Accessor to weight configuration via a range.
- Returns
Range of weight configuration
-
std::vector< Port > inputs () const SYMBOL_VISIBLE
-
bool operator!= (SynapseArrayView const &other) const SYMBOL_VISIBLE
-
bool operator== (SynapseArrayView const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Private Functions
-
void check (Rows const &rows, Columns const &columns, Weights const &weights, Labels const &labels) SYMBOL_VISIBLE
Private Members
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, SynapseArrayView const &config) SYMBOL_VISIBLE
-
typedef halco::hicann_dls::vx::v3::SynramOnDLS
-
struct
grenade::vx::signal_flow::vertex
::
SynapseArrayViewSparse
¶ - #include <synapse_array_view_sparse.h>
A sparse view of synapses connected to a set of synapse drivers.
Public Types
-
typedef halco::hicann_dls::vx::v3::SynramOnDLS
Synram
¶
Public Functions
-
SynapseArrayViewSparse
() = default¶
-
template<typename
SynramT
, typenameRowsT
, typenameColumnsT
, typenameSynapsesT
>
explicitSynapseArrayViewSparse
(SynramT &&synram, RowsT &&rows, ColumnsT &&columns, SynapsesT &&synapses)¶ Construct synapse array view.
- Parameters
synram – Synram location of synapses
rows – Coordinates of rows
columns – Coordinates of columns
synapses – Synapse values
-
boost::iterator_range< Columns::const_iterator > get_columns () const SYMBOL_VISIBLE
Accessor to synapse column coordinates via a range.
- Returns
Range of synapse column coordinates
-
boost::iterator_range< Rows::const_iterator > get_rows () const SYMBOL_VISIBLE
Accessor to synapse row coordinates via a range.
- Returns
Range of synapse row coordinates
-
boost::iterator_range< Synapses::const_iterator > get_synapses () const SYMBOL_VISIBLE
Accessor to synapse configuration via a range.
- Returns
Range of synapse configuration
-
Synram const & get_synram () const SYMBOL_VISIBLE
-
std::vector< Port > inputs () const SYMBOL_VISIBLE
-
bool operator!= (SynapseArrayViewSparse const &other) const SYMBOL_VISIBLE
-
bool operator== (SynapseArrayViewSparse const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
-
ppu::SynapseArrayViewHandle toSynapseArrayViewHandle () const SYMBOL_VISIBLE
Convert to synapse array view handle for PPU programs.
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Private Functions
-
void check (Rows const &rows, Columns const &columns, Synapses const &synapses) SYMBOL_VISIBLE
Private Members
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, SynapseArrayViewSparse const &config) SYMBOL_VISIBLE
-
typedef halco::hicann_dls::vx::v3::SynramOnDLS
-
struct
grenade::vx::signal_flow::vertex
::
SynapseDriver
¶ - #include <synapse_driver.h>
Synapse driver.
Public Types
-
typedef halco::hicann_dls::vx::v3::SynapseDriverOnDLS
Coordinate
¶
Public Functions
-
SynapseDriver
() = default¶
-
SynapseDriver (Coordinate const &coordinate, Config const &config) SYMBOL_VISIBLE
Construct synapse driver at specified location with specified configuration.
- Parameters
coordinate – Location
config – Configuration
-
Config get_config () const SYMBOL_VISIBLE
-
Coordinate get_coordinate () const SYMBOL_VISIBLE
-
bool operator!= (SynapseDriver const &other) const SYMBOL_VISIBLE
-
bool operator== (SynapseDriver const &other) const SYMBOL_VISIBLE
-
bool supports_input_from (PADIBus const &input, std::optional< PortRestriction > const &restriction) const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= false¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, SynapseDriver const &config) SYMBOL_VISIBLE
-
typedef halco::hicann_dls::vx::v3::SynapseDriverOnDLS
-
struct
grenade::vx::network::routing::detail
::
SynapseDriverOnDLSManager
¶ - #include <synapse_driver_on_dls_manager.h>
Implementation details of the allocation manager for all PADI-busses.
Public Types
-
typedef grenade::vx::network::routing::SynapseDriverOnDLSManager::Allocation
Allocation
¶
-
typedef grenade::vx::network::routing::SynapseDriverOnDLSManager::AllocationPolicy
AllocationPolicy
¶
-
typedef grenade::vx::network::routing::SynapseDriverOnDLSManager::AllocationRequest
AllocationRequest
¶
-
typedef std::map<halco::hicann_dls::vx::v3::PADIBusOnDLS, std::pair<std::vector<SynapseDriverOnPADIBusManager::AllocationRequest>, std::vector<size_t>>>
AllocationRequestPerPADIBus
¶ Allocation requests ordered by PADI-bus.
- Template Parameters
Key – PADI-bus location
Value – Vector of single allocation requests and indices in the complete list of requested allocations
-
typedef grenade::vx::network::routing::SynapseDriverOnDLSManager::SynapseDriver
SynapseDriver
¶
Public Static Functions
-
static std::vector< size_t > get_independent_allocation_requests (std::vector< AllocationRequest > const &requested_allocations, std::set< halco::hicann_dls::vx::v3::PADIBusOnDLS > const &padi_busses) SYMBOL_VISIBLE
Get allocation requests on the specified PADI-busses, which are not part of a dependent label group.
- Parameters
requested_allocations – Requested allocations
padi_busses – PADI-bus collection to filter requests for
- Returns
List of indices in requested_allocations
-
static std::set< std::set< halco::hicann_dls::vx::v3::PADIBusOnDLS > > get_interdependent_padi_busses (std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Get PADI-bus collections for which overarching allocation requests exist.
For example the allocation requests A{PADIBusOnDLS(1), PADIBusOnDLS(3)} and B{PADIBusOnDLS(3), PADIBusOnDLS(4)} lead to the PADI-bus collection {PADIBusOnDLS(1), PADIBusOnDLS(3), PADIBusOnDLS(4)}.
- Parameters
requested_allocations – Requested allocations from which to extract interdependent collections
-
static std::vector< int64_t > get_label_space (std::vector< size_t > const &independent_allocation_requests, std::vector< AllocationRequest::DependentLabelGroup > const &unique_dependent_label_groups, std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Get label space.
The independent allocation requests are placed first in the label space, the dependent label groups are placed afterwards.
- Parameters
independent_allocation_requests – Independent allocation request indices
unique_dependent_label_groups – Unique dependent label groups
requested_allocations – Requested allocations
- Returns
Label space
-
static size_t get_label_space_index (std::vector< size_t > const &independent_allocation_requests, std::vector< AllocationRequest::DependentLabelGroup > const &unique_dependent_label_groups, std::vector< AllocationRequest > const &requested_allocations, size_t index) SYMBOL_VISIBLE
Get index in label space for specified requested allocation.
- Parameters
independent_allocation_requests – Independent allocation request indices
unique_dependent_label_groups – Unique dependent label groups
requested_allocations – Requested allocations
index – Index into requested allocations
- Returns
Index into label space
-
static AllocationRequestPerPADIBus get_requested_allocations_per_padi_bus (std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Get allocation requests per PADI-bus.
The label value is not filled and will be set according to label indices for each allocation trial.
- Parameters
requested_allocations – Requested allocations
- Returns
Requested allocations ordered by PADI-busses
-
static std::vector< AllocationRequest::DependentLabelGroup > get_unique_dependent_label_groups (std::vector< AllocationRequest > const &requested_allocations, std::set< halco::hicann_dls::vx::v3::PADIBusOnDLS > const &padi_busses) SYMBOL_VISIBLE
Get unique dependent label groups on specified PADI-busses.
- Parameters
requested_allocations – Requested allocations
padi_busses – PADI-bus collections to filter request for
-
static void update_labels (AllocationRequestPerPADIBus::mapped_type &requested_allocation, std::vector< AllocationRequest > const &requested_allocations, std::vector< int64_t > const &label_indices, std::vector< size_t > const &independent_allocation_requests, std::vector< AllocationRequest::DependentLabelGroup > const &unique_dependent_label_groups) SYMBOL_VISIBLE
Update label values of PADI-bus-local requested allocations according to indices in label space.
Updating instead of generation is chosen because this operation is performed many times.
- Parameters
requested_allocation – PADI-bus-local requested allocations
requested_allocations – All requested allocations
label_indices – Indices in label space for lookup of label values
independent_allocation_requests – Independent allocation requests required for translation of a value in label_indices to requested allocations
unique_dependent_label_groups – Unique dependent label groups required for translation of a value in label_indices to requested allocations
-
static void update_solution (std::vector< Allocation > &allocation, std::vector< SynapseDriverOnPADIBusManager::Allocation > const &local_allocations, AllocationRequestPerPADIBus::mapped_type const &requested_allocation, halco::hicann_dls::vx::v3::PADIBusOnDLS const &padi_bus, std::vector< AllocationRequest > const &requested_allocations, std::vector< int64_t > const &label_indices, std::vector< size_t > const &independent_allocation_requests, std::vector< AllocationRequest::DependentLabelGroup > const &unique_dependent_label_groups) SYMBOL_VISIBLE
Update allocation solution for a single PADI-bus.
Updating instead of generation is chosen because this operation is performed many times.
- Parameters
allocation – All allocation solutions
local_allocation – PADI-bus-local allocation solution
requested_allocation – PADI-bus-local requested allocations
padi_bus – PADI-bus for which solution is given
requested_allocations – All requested allocations
label_indices – Indices in label space for lookup of label values
independent_allocation_requests – Independent allocation requests required for translation of a value in label_indices to requested allocations
unique_dependent_label_groups – Unique dependent label groups required for translation of a value in label_indices to requested allocations
-
static bool valid_solution (std::vector< Allocation > const &allocations, std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Check whether the solution is valid with regard to the request.
- Parameters
allocations – All allocation solutions
requested_allocations – All requested allocations
- Returns
Boolean value
-
typedef grenade::vx::network::routing::SynapseDriverOnDLSManager::Allocation
-
struct
grenade::vx::network::routing
::
SynapseDriverOnDLSManager
¶ - #include <synapse_driver_on_dls_manager.h>
Allocation manager for synapse drivers on all PADI-busses of one chip.
Given requested allocations and a policy to use, places these requests onto the available synapse drivers.
Public Types
-
typedef SynapseDriverOnPADIBusManager::AllocationPolicy
AllocationPolicy
¶ Allocation policy to use per PADI-bus.
-
typedef SynapseDriverOnPADIBusManager::AllocationPolicyBacktracking
AllocationPolicyBacktracking
¶
-
typedef SynapseDriverOnPADIBusManager::AllocationPolicyGreedy
AllocationPolicyGreedy
¶
-
typedef SynapseDriverOnPADIBusManager::Label
Label
¶ Label to identify events at synapse driver(s).
-
typedef SynapseDriverOnPADIBusManager::SynapseDriver
SynapseDriver
¶ Synapse driver location.
Public Functions
-
SynapseDriverOnDLSManager (std::set< halco::hicann_dls::vx::v3::SynapseDriverOnDLS > const &unavailable_synapse_drivers={}) SYMBOL_VISIBLE
Construct manager with unavailable synapse driver locations, which will be excluded for placing allocation(s).
- Parameters
unavailable_synapse_drivers – Synapse drivers excluded from allocation(s).
-
std::optional< std::vector< Allocation > > solve (std::vector< AllocationRequest > const &requested_allocations, AllocationPolicy const &allocation_policy=AllocationPolicyBacktracking(), std::optional< std::chrono::milliseconds > const &timeout=std::nullopt) SYMBOL_VISIBLE
Find placement of requested allocations.
- Parameters
requested_allocations – Collection of requested allocations
allocation_policy – Policy to use for partitioning of available synapse drivers
timeout – Optional timeout for brute-forcing label combinations per dependent PADI-busses
- Returns
Actual allocations on success, std::nullopt on failure of placement
-
typedef SynapseDriverOnPADIBusManager::AllocationPolicy
-
struct
grenade::vx::network::routing::detail
::
SynapseDriverOnPADIBusManager
¶ - #include <synapse_driver_on_padi_bus_manager.h>
Implementation details of the allocation manager for a single PADI-bus.
Public Types
-
typedef grenade::vx::network::routing::SynapseDriverOnPADIBusManager::Allocation
Allocation
¶
-
typedef grenade::vx::network::routing::SynapseDriverOnPADIBusManager::AllocationPolicy
AllocationPolicy
¶
-
typedef grenade::vx::network::routing::SynapseDriverOnPADIBusManager::AllocationRequest
AllocationRequest
¶
-
typedef std::map<SynapseDriver, std::vector<std::pair<size_t, Mask>>>
IsolatedSynapseDrivers
¶ Synapse drivers which allow isolation of requested allocation from all others given the mask value.
Isolation means no other requested allocation’s events are forwarded to the synapses of that driver.
- Template Parameters
Key – Synapse driver location
Value – Pair of requested allocation index and mask value which isolated the request
-
typedef std::map<size_t, std::vector<Mask>>
IsolatingMasks
¶ Mask values which isolate a given requested allocation.
Isolation means the label of no other requested allocation has the same value after masking.
- Template Parameters
Key – Index in the requested allocations
Value – Collection of masks
-
typedef grenade::vx::network::routing::SynapseDriverOnPADIBusManager::SynapseDriver
SynapseDriver
¶
Public Static Functions
-
static std::vector< Allocation > allocate_backtracking (std::vector< AllocationRequest > const &requested_allocations, IsolatedSynapseDrivers const &isolated_synapse_drivers, std::optional< std::chrono::milliseconds > const &max_duration=std::nullopt) SYMBOL_VISIBLE
Place requested allocations using backtracking.
If a solution is possible, it is found (possibly at the cost of larger time consumption). If any requested allocation is sensitive to shape allocation order, the algorithm does not explore different order permutations. This means that for a requested allocation {Shape{2, not contiguous}, Shape{3, contiguous}} and a possible allocation {SynapseDriver(0), SynapseDriver(1), SynapseDriver(2), SynapseDriver(10), SynapseDriver(17)}, the algorithm does not flip the order of the requested shapes to allocate Shape{2, not contiguous} to {SynapseDriver(10), SynapseDriver(17)}, but tries {SynapseDriver(0), SynapseDriver(1)} and then fails to place the second contiguous shape. However, the occurrence of requests which are sensitive to shape allocation order is assumed to be rare, since contiguous shapes are only of use in the context of PPU algorithms and then additionally, the shapes in a request need to be inhomogeneous, which is only the case if different synapse driver configuration groups are requested. In these complex corner cases, if additionally the algorithm fails to find any solution, the user can permute the shapes himself outside of this manager.
- Parameters
requested_allocations – Requested allocations
isolated_synapse_drivers – Isolated synapse drivers
max_duration – Optional specification of maximal wall-clock time to perform backtracking
- Returns
Allocations
-
static std::vector< Allocation > allocate_greedy (std::vector< AllocationRequest > const &requested_allocations, IsolatedSynapseDrivers const &isolated_synapse_drivers, bool exclusive_first) SYMBOL_VISIBLE
Place requested allocations in a greedy manner.
First the first requested allocation is placed, then the second and so on. Additionally to iterating the synapse drivers linearly, synapse driver locations which only allow isolation of a single request can be used first.
- Parameters
requested_allocations – Requested allocations
isolated_synapse_drivers – Isolated synapse drivers
exclusive_first – First use exclusive synapse drivers
- Returns
Allocations
-
static bool allocations_can_be_isolated (IsolatingMasks const &isolating_masks, std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Get whether all requested allocations can in principle be isolated by at least one mask value.
- Parameters
isolating_masks – Isolating masks to given requested allocations
requested_allocations – Requested allocations
- Returns
Boolean value
-
static bool allocations_can_be_placed_individually (IsolatedSynapseDrivers const &isolated_synapse_drivers, std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Get whether all requested allocations can in principle be placed individually when disregarding the placement of all other requested allocations.
- Parameters
isolated_synapse_drivers – Isolated synapse drivers
requested_allocations – Requested allocations
- Returns
Boolean value
-
static bool allocations_fit_available_size (std::set< SynapseDriver > const &unavailable_synapse_drivers, std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Check whether the accumulated size of all requested allocations is less than or equal to the number of available synapse drivers.
- Parameters
unavailable_synapse_drivers – Unavailable synapse drivers
requested_allocations – Requested allocations to check
- Returns
Boolean value
-
static bool forwards (Label const &label, Mask const &mask, SynapseDriver const &synapse_driver) SYMBOL_VISIBLE
Check whether given label is forwarded to synapses at specified synapse driver with mask.
- Parameters
label – Event label
mask – Mask at synapse driver
synapse_driver – Synapse driver location
- Returns
Boolean value
-
static IsolatedSynapseDrivers generate_isolated_synapse_drivers (std::set< SynapseDriver > const &unavailable_synapse_drivers, IsolatingMasks const &isolating_masks, std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Generate isolated synapse driver locations.
- Parameters
unavailable_synapse_drivers – Synapse drivers to exclude from selection
isolating_masks – Isolating masks to given requested allocations
requested_allocations – Requested allocations
- Returns
Generated isolated synapse drivers
-
static IsolatingMasks generate_isolating_masks (std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Generate isolating mask values.
- Parameters
requested_allocations – Requested allocations to generate isolating masks for
- Returns
Generated isolating masks
-
static bool has_unique_labels (std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Check whether the requested allocations feature unique labels.
- Parameters
requested_allocations – Requested allocations to check
- Returns
Boolean value
-
static bool is_contiguous (std::set< SynapseDriver > const &synapse_drivers) SYMBOL_VISIBLE
Get whether set of synapse drivers is contiguous.
An empty collection is defined to be contiguous.
- Parameters
synapse_drivers – Synapse driver set to test
- Returns
Boolean value
-
static bool valid (std::vector< Allocation > const &allocations, std::vector< AllocationRequest > const &requested_allocations) SYMBOL_VISIBLE
Check whether allocations adhere to the requested allocations’ requirements.
- Parameters
allocations – Allocations to given requested allocations
requested_allocations – Requested allocations
- Returns
Boolean value
-
typedef grenade::vx::network::routing::SynapseDriverOnPADIBusManager::Allocation
-
struct
grenade::vx::network::routing
::
SynapseDriverOnPADIBusManager
¶ - #include <synapse_driver_on_padi_bus_manager.h>
Allocation manager for synapse drivers on a single PADI-bus.
Given requested allocations and a policy to use, places these requests onto the available synapse drivers.
Public Types
-
typedef std::variant<AllocationPolicyGreedy, AllocationPolicyBacktracking>
AllocationPolicy
¶
-
typedef haldls::vx::v3::PADIEvent::RowSelectAddress
Label
¶ Label to identify events at synapse driver(s).
-
typedef haldls::vx::v3::SynapseDriverConfig::RowAddressCompareMask
Mask
¶ Mask to filter events at synapse driver(s) depending on their label.
-
typedef halco::hicann_dls::vx::v3::SynapseDriverOnPADIBus
SynapseDriver
¶ Synapse driver location.
Public Functions
-
SynapseDriverOnPADIBusManager (std::set< SynapseDriver > const &unavailable_synapse_drivers={}) SYMBOL_VISIBLE
Construct manager with unavailable synapse driver locations, which will be excluded for placing allocation(s).
- Parameters
unavailable_synapse_drivers – Synapse drivers excluded from allocation(s).
-
std::optional< std::vector< Allocation > > solve (std::vector< AllocationRequest > const &requested_allocations, AllocationPolicy const &allocation_policy=AllocationPolicyBacktracking()) SYMBOL_VISIBLE
Find placement of requested allocations.
- Parameters
requested_allocations – Collection of requested allocations
allocation_policy – Policy to use for partitioning of available synapse drivers
- Returns
Actual allocations on success, std::nullopt on failure of placement
Private Members
-
typedef std::variant<AllocationPolicyGreedy, AllocationPolicyBacktracking>
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule
::
SynapseViewShape
¶ - #include <plasticity_rule.h>
Shape of a single synapse view to be altered.
Public Functions
-
bool operator!= (SynapseViewShape const &other) const SYMBOL_VISIBLE
-
bool operator== (SynapseViewShape const &other) const SYMBOL_VISIBLE
Public Members
-
std::vector<halco::hicann_dls::vx::v3::SynapseOnSynapseRow>
columns
¶ Location of columns.
This information is needed for extraction of timed recording observables.
-
halco::hicann_dls::vx::v3::HemisphereOnDLS
hemisphere
¶ Hemisphere of synapses.
This information is required for extraction of timed recording observables.
-
size_t
num_rows
¶ Number of rows.
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, SynapseViewShape const &recording) SYMBOL_VISIBLE
-
-
struct
grenade::vx
::
TemporaryDirectory
¶ - #include <ppu.h>
Create (and automatically delete) temporary directory.
Public Functions
-
TemporaryDirectory (std::string directory_template) SYMBOL_VISIBLE
-
~TemporaryDirectory () SYMBOL_VISIBLE
-
std::filesystem::path get_path () const SYMBOL_VISIBLE
-
-
struct
grenade::vx::common
::
Time
: public halco::common::detail::BaseType<Time, uint64_t>¶ - #include <time.h>
Arithmetic type used for time measurements both to and from the hardware.
Representation is implemented as 64 bit wide unsigned integer of units [FPGA clock cycles]. TODO: Think about using std::chrono instead of our wrapper type.
Public Functions
-
inline explicit constexpr
Time
(value_type const value = 0)¶
-
haldls::vx::v3::ChipTime toChipTime () const SYMBOL_VISIBLE
-
haldls::vx::v3::FPGATime toFPGATime () const SYMBOL_VISIBLE
-
haldls::vx::v3::Timer::Value toTimerOnFPGAValue () const SYMBOL_VISIBLE
Public Static Attributes
-
static const Time fpga_clock_cycles_per_us SYMBOL_VISIBLE
-
inline explicit constexpr
-
template<typename
T
>
structgrenade::vx::common
::
TimedData
¶ - #include <timed_data.h>
Public Functions
-
TimedData
() = default¶
-
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule
::
TimedRecording
¶ - #include <plasticity_rule.h>
Recording information for execution of the rule.
Recording of exclusive scratchpad memory per rule invocation with time recording and returned data as time-annotated events.
Public Types
-
typedef std::variant<ObservablePerSynapse, ObservablePerNeuron, ObservableArray>
Observable
¶ Observable type specification.
Public Functions
-
bool operator!= (TimedRecording const &other) const SYMBOL_VISIBLE
-
bool operator== (TimedRecording const &other) const SYMBOL_VISIBLE
Public Members
-
std::map<std::string, Observable>
observables
¶ Map of named observables with type information.
The plasticity rule kernel is given memory to record the observables generated with the same names as used in this map.
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, TimedRecording const &recording) SYMBOL_VISIBLE
-
typedef std::variant<ObservablePerSynapse, ObservablePerNeuron, ObservableArray>
-
struct
grenade::vx::network::PlasticityRule
::
TimedRecordingData
¶ - #include <plasticity_rule.h>
Extracted recorded data of observables corresponding to timed recording.
Public Types
-
typedef signal_flow::vertex::PlasticityRule::TimedRecordingData::Entry
EntryArray
¶
-
typedef std::variant<std::vector<common::TimedDataSequence<std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<int8_t>>>>>, std::vector<common::TimedDataSequence<std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<uint8_t>>>>>, std::vector<common::TimedDataSequence<std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<int16_t>>>>>, std::vector<common::TimedDataSequence<std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<uint16_t>>>>>>
EntryPerNeuron
¶ Recording per logical neuron, where for each sample the outer dimension of the data are the logical neurons of the population and the inner dimensions are the performed recordings of the corresponding hardware neuron(s) per compartment.
-
typedef std::variant<std::vector<common::TimedDataSequence<std::vector<std::vector<int8_t>>>>, std::vector<common::TimedDataSequence<std::vector<std::vector<uint8_t>>>>, std::vector<common::TimedDataSequence<std::vector<std::vector<int16_t>>>>, std::vector<common::TimedDataSequence<std::vector<std::vector<uint16_t>>>>>
EntryPerSynapse
¶ Recording per logical synapse, where for each sample the outer dimension of the data are the logical synapses of the projection and the inner dimension are the performed recordings of the corresponding hardware synapse(s).
Public Members
-
std::map<std::string, EntryArray>
data_array
¶
-
std::map<std::string, std::map<PopulationDescriptor, EntryPerNeuron>>
data_per_neuron
¶
-
std::map<std::string, std::map<ProjectionDescriptor, EntryPerSynapse>>
data_per_synapse
¶
-
typedef signal_flow::vertex::PlasticityRule::TimedRecordingData::Entry
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule
::
TimedRecordingData
¶ - #include <plasticity_rule.h>
Extracted recorded data of observables corresponding to timed recording.
Public Types
-
typedef std::variant<std::vector<common::TimedDataSequence<std::vector<int8_t>>>, std::vector<common::TimedDataSequence<std::vector<uint8_t>>>, std::vector<common::TimedDataSequence<std::vector<int16_t>>>, std::vector<common::TimedDataSequence<std::vector<uint16_t>>>>
Entry
¶
Public Members
Friends
-
friend std::ostream & operator<< (std::ostream &os, TimedRecordingData const &data) SYMBOL_VISIBLE
-
typedef std::variant<std::vector<common::TimedDataSequence<std::vector<int8_t>>>, std::vector<common::TimedDataSequence<std::vector<uint8_t>>>, std::vector<common::TimedDataSequence<std::vector<int16_t>>>, std::vector<common::TimedDataSequence<std::vector<uint16_t>>>>
-
class
grenade::vx::execution::detail::generator
::
TimedSpikeToChipSequence
¶ - #include <timed_spike_to_chip_sequence.h>
Generator for a playback program snippet from a timed spike sequence.
Public Functions
-
inline
TimedSpikeToChipSequence
(signal_flow::TimedSpikeToChipSequence const &values)¶
Protected Functions
-
stadls::vx::v3::PlaybackGeneratorReturn< Result > generate () const SYMBOL_VISIBLE
Private Members
-
signal_flow::TimedSpikeToChipSequence const &
m_values
¶
Friends
-
friend auto
generate
(TimedSpikeToChipSequence const&)¶
-
inline
-
struct
grenade::vx::network::PlasticityRule
::
Timer
¶ - #include <plasticity_rule.h>
Timing information for execution of the rule.
Public Functions
-
bool operator!= (Timer const &other) const SYMBOL_VISIBLE
-
bool operator== (Timer const &other) const SYMBOL_VISIBLE
Friends
-
friend std::ostream & operator<< (std::ostream &os, Timer const &timer) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule
::
Timer
¶ - #include <plasticity_rule.h>
Timing information for execution of the rule.
Public Functions
-
bool operator!= (Timer const &other) const SYMBOL_VISIBLE
-
bool operator== (Timer const &other) const SYMBOL_VISIBLE
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, Timer const &timer) SYMBOL_VISIBLE
-
-
struct
grenade::vx::network::RoutingResult
::
TimingStatistics
¶ - #include <routing_result.h>
-
struct
grenade::vx::signal_flow::vertex
::
Transformation
¶ - #include <transformation.h>
Formatted data input from memory.
Public Functions
-
Transformation
() = default¶
-
explicit Transformation (std::unique_ptr< Function > function) SYMBOL_VISIBLE
Construct Transformation with specified function.
- Parameters
function – Function to apply on transformation
-
Function::Value apply (std::vector< Function::Value > const &value) const SYMBOL_VISIBLE
Apply transformation.
- Parameters
value – Input value
- Returns
Output value
-
std::vector< Port > inputs () const SYMBOL_VISIBLE
-
bool operator!= (Transformation const &other) const SYMBOL_VISIBLE
-
bool operator== (Transformation const &other) const SYMBOL_VISIBLE
-
Port output () const SYMBOL_VISIBLE
Public Static Attributes
-
static constexpr bool
can_connect_different_execution_instances
= true¶
-
static constexpr bool
variadic_input
= false¶
Friends
- friend struct cereal::access
-
friend std::ostream & operator<< (std::ostream &os, Transformation const &config) SYMBOL_VISIBLE
-
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservableArray
::
Type
¶ - #include <plasticity_rule.h>
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerNeuron
::
Type
¶ - #include <plasticity_rule.h>
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerSynapse
::
Type
¶ - #include <plasticity_rule.h>
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservableArray::Type
::
UInt16
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<uint16_t, UInt16>¶ - #include <plasticity_rule.h>
Public Types
-
typedef uint16_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "uint16_t"¶
-
typedef uint16_t
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerNeuron::Type
::
UInt16
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<uint16_t, UInt16>¶ - #include <plasticity_rule.h>
Public Types
-
typedef uint16_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "libnux::vx::VectorRowMod16"¶
-
typedef uint16_t
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerSynapse::Type
::
UInt16
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<uint16_t, UInt16>¶ - #include <plasticity_rule.h>
Public Types
-
typedef uint16_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "libnux::vx::VectorRowMod16"¶
-
typedef uint16_t
-
struct
grenade::vx::signal_flow
::
UInt32
: public halco::common::detail::BaseType<UInt32, uint32_t>¶ - #include <types.h>
32 bit wide unsigned integer value of e.g.
indices.
Public Functions
-
inline explicit constexpr
UInt32
(value_type const value = 0)¶
-
inline explicit constexpr
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservableArray::Type
::
UInt8
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<uint8_t, UInt8>¶ - #include <plasticity_rule.h>
Public Types
-
typedef uint8_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "uint8_t"¶
-
typedef uint8_t
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerNeuron::Type
::
UInt8
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<uint8_t, UInt8>¶ - #include <plasticity_rule.h>
Public Types
-
typedef uint8_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "libnux::vx::VectorRowMod8"¶
-
typedef uint8_t
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::TimedRecording::ObservablePerSynapse::Type
::
UInt8
: public grenade::vx::signal_flow::vertex::plasticity_rule::ObservableDataType<uint8_t, UInt8>¶ - #include <plasticity_rule.h>
Public Types
-
typedef uint8_t
ElementType
¶
Public Static Attributes
-
static constexpr char
on_ppu_type
[] = "libnux::vx::VectorRowMod8"¶
-
typedef uint8_t
-
class
grenade::vx::network
::
UnsuccessfulRouting
: public virtual std::exception¶ - #include <exception.h>
Exception describing an unsuccessful routing.
-
struct
grenade::vx::network::PlasticityRule::Timer
::
Value
: public halco::common::detail::RantWrapper<Value, uintmax_t, 0xffffffff, 0>¶ - #include <plasticity_rule.h>
PPU clock cycles.
Public Functions
-
inline explicit constexpr
Value
(uintmax_t const value = 0)¶
-
inline explicit constexpr
-
struct
grenade::vx::signal_flow::vertex::PlasticityRule::Timer
::
Value
: public halco::common::detail::RantWrapper<Value, uintmax_t, 0xffffffff, 0>¶ - #include <plasticity_rule.h>
PPU clock cycles.
Public Functions
-
inline explicit constexpr
Value
(uintmax_t const value = 0)¶
-
inline explicit constexpr
-
template<typename
Vertex
>
structgrenade::vx::signal_flow::detail
::
VertexConcept
¶ - #include <vertex_concept.h>
A vertex is an entity which has a defined number of input ports and one output port with defined type and size.
Subclassed by grenade::vx::signal_flow::detail::CheckVertexConcept< std::variant< Vertex… > >
-
struct
grenade::vx::compute::MAC
::
Weight
: public halco::common::detail::RantWrapper<Weight, int_fast8_t, 63, -63>¶ - #include <mac.h>
weight.
Public Types
-
typedef lola::vx::v3::SynapseMatrix::Weight
UnsignedWeight
¶
Public Functions
-
inline explicit constexpr
Weight
(intmax_t const val = 0)¶
-
UnsignedWeight toExcitatory () const SYMBOL_VISIBLE
-
UnsignedWeight toInhibitory () const SYMBOL_VISIBLE
-
typedef lola::vx::v3::SynapseMatrix::Weight
-
struct
grenade::vx::network::Projection::Connection
::
Weight
: public halco::common::detail::BaseType<Weight, size_t>¶ - #include <projection.h>
Public Functions
-
inline explicit constexpr
Weight
(value_type const value = 0)¶
-
inline explicit constexpr
-
namespace
cereal
-
namespace
grenade
¶
-
namespace
grenade
::
vx
¶ Functions
-
halco::common::typed_array< int8_t, halco::hicann_dls::vx::v3::NeuronColumnOnDLS > from_vector_unit_row (haldls::vx::v3::PPUMemoryBlock const &values) SYMBOL_VISIBLE
Convert PPUMemoryBlock to column byte values.
-
std::string get_include_paths () SYMBOL_VISIBLE
Get include paths.
-
std::string get_libnux_runtime (std::string const &name) SYMBOL_VISIBLE
Get full path to libnux runtime.
- Parameters
name – Name to search for
-
std::string get_library_paths () SYMBOL_VISIBLE
Get library paths.
-
std::string get_linker_file (std::string const &name) SYMBOL_VISIBLE
Get full path to linker file.
- Parameters
name – Name to search for
-
std::string get_program_base_source () SYMBOL_VISIBLE
Get full path to PPU program source.
-
haldls::vx::v3::PPUMemoryBlock to_vector_unit_row (halco::common::typed_array< int8_t, halco::hicann_dls::vx::v3::NeuronColumnOnDLS > const &values) SYMBOL_VISIBLE
Convert column byte values to PPUMemoryBlock.
-
-
namespace
compute
¶
-
namespace
detail
¶
-
namespace
grenade::vx
::
execution
¶ Functions
-
signal_flow::IODataList run (JITGraphExecutor &executor, signal_flow::Graph const &graph, signal_flow::IODataList const &input, JITGraphExecutor::ChipConfigs const &initial_config, bool only_unconnected_output=true) SYMBOL_VISIBLE
Run the specified graph with specified inputs on the supplied executor.
- Parameters
executor – Executor to use
graph – Graph to execute
input – List of input values to use
initial_config – Map of initial configuration
only_unconnected_output – Whether to return only values to output vertices without out edges
-
signal_flow::IODataList run (JITGraphExecutor &executor, signal_flow::Graph const &graph, signal_flow::IODataList const &input, JITGraphExecutor::ChipConfigs const &initial_config, JITGraphExecutor::PlaybackHooks &playback_hooks, bool only_unconnected_output=true) SYMBOL_VISIBLE
Run the specified graph with specified inputs on the supplied executor.
- Parameters
executor – Executor to use
graph – Graph to execute
input – List of input values to use
initial_config – Map of initial configuration
playback_hooks – List of playback sequence collections to be inserted at specified execution instances
only_unconnected_output – Whether to return only values to output vertices without out edges
-
signal_flow::IODataMap run (JITGraphExecutor &executor, signal_flow::Graph const &graph, signal_flow::IODataMap const &input, JITGraphExecutor::ChipConfigs const &initial_config) SYMBOL_VISIBLE
Run the specified graph with specified inputs on the supplied executor.
- Parameters
executor – Executor to use
graph – Graph to execute
input – List of input values to use
initial_config – Map of initial configuration
-
signal_flow::IODataMap run (JITGraphExecutor &executor, signal_flow::Graph const &graph, signal_flow::IODataMap const &input, JITGraphExecutor::ChipConfigs const &initial_config, JITGraphExecutor::PlaybackHooks &playback_hooks) SYMBOL_VISIBLE
Run the specified graph with specified inputs on the supplied executor.
- Parameters
executor – Executor to use
graph – Graph to execute
input – List of input values to use
initial_config – Map of initial configuration
playback_hooks – Map of playback sequence collections to be inserted at specified execution instances
-
-
namespace
grenade::vx::execution
::
backend
¶ Functions
-
stadls::vx::RunTimeInfo run (Connection &connection, stadls::vx::v3::PlaybackProgram &&program) SYMBOL_VISIBLE
Execute given playback program using the given connection.
- Parameters
connection – Connection to run on
program – Program to execute
- Returns
Run time information of execution
-
stadls::vx::RunTimeInfo run (Connection &connection, stadls::vx::v3::PlaybackProgram &program) SYMBOL_VISIBLE
Execute given playback program using the given connection.
- Parameters
connection – Connection to run on
program – Program to execute
- Returns
Run time information of execution
-
-
namespace
detail
¶
-
namespace
generator
¶
-
namespace
grenade::vx
::
network
¶ Typedefs
-
typedef common::TimedData<std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<int16_t>>>>
_SingleEntryPerNeuronInt16
¶
-
typedef common::TimedData<std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<int8_t>>>>
_SingleEntryPerNeuronInt8
¶
-
typedef common::TimedData<std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<uint16_t>>>>
_SingleEntryPerNeuronUInt16
¶
-
typedef common::TimedData<std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<uint8_t>>>>
_SingleEntryPerNeuronUInt8
¶
-
typedef std::map<ProjectionDescriptor, std::vector<ConnectionToHardwareRoutes>>
ConnectionRoutingResult
¶ Translation between synapses between logical neuron compartments and synapses between atomic neurons within compartments.
Contains a translation for each connection of each projection. The order of the translations matches the order of the connections in the projection.
-
typedef std::vector<ConnectumConnection>
Connectum
¶
Functions
-
cls def(pybind11::init<::grenade::vx::network::routing::SynapseDriverOnDLSManager::AllocationPolicyGreedy >(), pybind11::arg("value")=::grenade::vx::network::routing::SynapseDriverOnDLSManager::AllocationPolicyGreedy()) .def(pybind11 parent attr ("RoutingOptions").attr("AllocationPolicy")
-
ConnectionRoutingResult build_connection_routing (std::shared_ptr< Network > const &network) SYMBOL_VISIBLE
Build a connection routing for a given network.
This is the first step in two-stage routing towards a hardware data-flow graph representation.
- Parameters
network – Network for which to build connection routing
-
std::vector< lola::vx::v3::SynapseMatrix::Weight > build_connection_weight_split (Projection::Connection::Weight const &weight, size_t num) SYMBOL_VISIBLE
Split weight of connection into single hardware synapse circuit weight values.
This function splits like 123 -> 63 + 60 + 0.
- Parameters
weight – Weight to split
num – Number of synapses to split weight onto
-
NetworkGraph build_network_graph (std::shared_ptr< Network > const &network, RoutingResult const &routing_result, signal_flow::ExecutionInstance const &execution_instance=signal_flow::ExecutionInstance()) SYMBOL_VISIBLE
Build a hardware network representation for a given network.
- Parameters
network – Network for which to build hardware network representation
routing_result – Routing result to use to build hardware network representation
execution_instance – Execution instance to build the hardware graph into
-
RoutingResult build_routing (std::shared_ptr< Network > const &network, std::optional< RoutingOptions > const &options=std::nullopt) SYMBOL_VISIBLE
Route given network.
- Parameters
network – Placed but not routed network to use
- Returns
Routing result containing placement and label information for given network
-
parent def ("extract_cadc_samples", extract_cadc_samples, pybind11::arg("data"), pybind11::arg("network_graph"))
-
parent def ("extract_madc_samples", extract_madc_samples, pybind11::arg("data"), pybind11::arg("network_graph"))
-
parent def ("extract_neuron_spikes", extract_neuron_spikes, pybind11::arg("data"), pybind11::arg("network_graph"))
-
parent def ("run", [](::pyhxcomm::Handle< execution::backend::Connection > &conn, lola::vx::v3::Chip const &config, network::NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs) -> signal_flow::IODataMap { return network::run(conn.get(), config, network_graph, inputs);}, pybind11::arg("connection"), pybind11::arg("config"), pybind11::arg("network_graph"), pybind11::arg("inputs"))
-
parent def ("run", [](::pyhxcomm::Handle< execution::backend::Connection > &conn, lola::vx::v3::Chip const &config, network::NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs, signal_flow::ExecutionInstancePlaybackHooks &playback_hooks) -> signal_flow::IODataMap { return network::run(conn.get(), config, network_graph, inputs, playback_hooks);}, pybind11::arg("connection"), pybind11::arg("config"), pybind11::arg("network_graph"), pybind11::arg("inputs"), pybind11::arg("playback_hooks"))
-
parent def ("run", [](::pyhxcomm::Handle< execution::JITGraphExecutor > &conn, lola::vx::v3::Chip const &config, network::NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs) -> signal_flow::IODataMap { return network::run(conn.get(), config, network_graph, inputs);}, pybind11::arg("connection"), pybind11::arg("config"), pybind11::arg("network_graph"), pybind11::arg("inputs"))
-
parent def ("run", [](::pyhxcomm::Handle< execution::JITGraphExecutor > &conn, lola::vx::v3::Chip const &config, network::NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs, signal_flow::ExecutionInstancePlaybackHooks &playback_hooks) -> signal_flow::IODataMap { return network::run(conn.get(), config, network_graph, inputs, playback_hooks);}, pybind11::arg("connection"), pybind11::arg("config"), pybind11::arg("network_graph"), pybind11::arg("inputs"), pybind11::arg("playback_hooks"))
-
class grenade::vx::network::InputGenerator done () SYMBOL_VISIBLE
-
std::vector< std::vector< std::tuple< common::Time, PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, size_t, signal_flow::Int8 > > > extract_cadc_samples (signal_flow::IODataMap const &data, NetworkGraph const &network_graph) SYMBOL_VISIBLE
Extract CADC samples to be recorded for a network.
- Parameters
- Returns
Time-series CADC sample data per batch entry. Samples are sorted by their ChipTime per batch-entry and contain their corresponding location alongside the ADC value.
-
std::vector< std::vector< std::tuple< common::Time, AtomicNeuronOnNetwork, haldls::vx::v3::MADCSampleFromChip::Value > > > extract_madc_samples (signal_flow::IODataMap const &data, NetworkGraph const &network_graph) SYMBOL_VISIBLE
Extract MADC samples to be recorded for a network.
- Parameters
- Returns
Time-series MADC sample data per batch entry. Samples are sorted by their ChipTime per batch-entry and contain their corresponding location alongside the ADC value.
-
std::vector< std::map< std::tuple< PopulationDescriptor, size_t, halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron >, std::vector< common::Time > > > extract_neuron_spikes (signal_flow::IODataMap const &data, NetworkGraph const &network_graph) SYMBOL_VISIBLE
Extract spikes corresponding to neurons in the network.
Spikes which don’t correspond to a neuron in the network are ignored.
-
PlasticityRule::RecordingData extract_plasticity_rule_recording_data (signal_flow::IODataMap const &data, NetworkGraph const &network_graph, PlasticityRuleDescriptor descriptor) SYMBOL_VISIBLE
Extract to be recorded observable data of a plasticity rule.
- Parameters
data – Data containing observables
network_graph – Network graph to use for hardware to logical network translation
descriptor – Descriptor to plasticity rule to extract observable data for
- Returns
Observable data per batch entry
-
NetworkGraphStatistics extract_statistics (NetworkGraph const &network_graph) SYMBOL_VISIBLE
Extract statistics from network graph.
-
Connectum generate_connectum_from_abstract_network (NetworkGraph const &network_graph) SYMBOL_VISIBLE
-
Connectum generate_connectum_from_hardware_network (NetworkGraph const &network_graph) SYMBOL_VISIBLE
-
size_t hash_value (Receptor const &receptor) SYMBOL_VISIBLE
-
bool operator!= (Projection const &other) const SYMBOL_VISIBLE
-
std::ostream & operator<< (std::ostream &os, Projection const &projection) SYMBOL_VISIBLE
-
std::ostream & operator<< (std::ostream &os, Receptor::Type const &receptor_type) SYMBOL_VISIBLE
-
bool requires_routing (std::shared_ptr< Network > const ¤t, NetworkGraph const &old_graph) SYMBOL_VISIBLE
Get whether the current network requires routing compared to the old network.
- Parameters
current – Current network
old_graph – Old routed network
- Returns
Boolean value
-
signal_flow::IODataMap run (execution::backend::Connection &connection, lola::vx::v3::Chip const &config, NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs) SYMBOL_VISIBLE
Execute the given network hardware graph and fetch results.
- Parameters
connection – Connection instance to be used for running the graph
network_graph – Network hardware graph to run
config – Static chip configuration to use
inputs – Inputs to use
- Returns
Run time information
-
signal_flow::IODataMap run (execution::backend::Connection &connection, lola::vx::v3::Chip const &config, NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs, signal_flow::ExecutionInstancePlaybackHooks &playback_hooks) SYMBOL_VISIBLE
Execute the given network hardware graph and fetch results.
- Parameters
connection – Connection instance to be used for running the graph
network_graph – Network hardware graph to run
config – Static chip configuration to use
inputs – Inputs to use
playback_hooks – Optional playback sequences to inject
- Returns
Run time information
-
signal_flow::IODataMap run (execution::JITGraphExecutor &executor, lola::vx::v3::Chip const &config, NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs) SYMBOL_VISIBLE
Execute the given network hardware graph and fetch results.
- Parameters
executor – Executor instance to be used for running the graph
network_graph – Network hardware graph to run
config – Static chip configuration to use
inputs – Inputs to use
- Returns
Run time information
-
signal_flow::IODataMap run (execution::JITGraphExecutor &executor, lola::vx::v3::Chip const &config, NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs, signal_flow::ExecutionInstancePlaybackHooks &playback_hooks) SYMBOL_VISIBLE
Execute the given network hardware graph and fetch results.
- Parameters
executor – Executor instance to be used for running the graph
network_graph – Network hardware graph to run
config – Static chip configuration to use
inputs – Inputs to use
playback_hooks – Optional playback sequences to inject
- Returns
Run time information
-
signal_flow::IODataMap run (hxcomm::vx::ConnectionVariant &connection, lola::vx::v3::Chip const &config, NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs) SYMBOL_VISIBLE
Execute the given network hardware graph and fetch results.
- Parameters
connection – Connection instance to be used for running the graph
network_graph – Network hardware graph to run
config – Static chip configuration to use
inputs – Inputs to use
- Returns
Run time information
-
signal_flow::IODataMap run (hxcomm::vx::ConnectionVariant &connection, lola::vx::v3::Chip const &config, NetworkGraph const &network_graph, signal_flow::IODataMap const &inputs, signal_flow::ExecutionInstancePlaybackHooks &playback_hooks) SYMBOL_VISIBLE
Execute the given network hardware graph and fetch results.
- Parameters
connection – Connection instance to be used for running the graph
network_graph – Network hardware graph to run
config – Static chip configuration to use
inputs – Inputs to use
playback_hooks – Optional playback sequences to inject
- Returns
Run time information
-
void update_network_graph (NetworkGraph &network_graph, std::shared_ptr< Network > const &network) SYMBOL_VISIBLE
Update an exisiting hardware graph representation.
For this to work, no new routing has to have been required.
- Parameters
network_graph – Existing hardware graph representation to update or fill with newly built instance
network – New network for which to update or build
Variables
-
auto const
extract_cadc_samples
= [convert_ms]( grenade::vx::signal_flow::IODataMap const& data, grenade::vx::network::NetworkGraph const& network_graph) { hate::Timer timer; auto logger = log4cxx::Logger::getLogger("pygrenade.network.extract_cadc_samples"); auto const samples = grenade::vx::network::extract_cadc_samples(data, network_graph); std::vector<std::tuple< pybind11::array_t<float>, pybind11::array_t<int>, pybind11::array_t<int>, pybind11::array_t<int>, pybind11::array_t<int>, pybind11::array_t<int>>> ret(samples.size()); for (size_t b = 0; b < samples.size(); ++b) { auto const cadc_samples = samples.at(b); if (cadc_samples.empty()) { ret.at(b) = std::make_tuple( pybind11::array_t<float>(0), pybind11::array_t<int>(0), pybind11::array_t<int>(0), pybind11::array_t<int>(0), pybind11::array_t<int>(0), pybind11::array_t<int>(0)); continue; } pybind11::array_t<float> times(static_cast<pybind11::ssize_t>(cadc_samples.size())); pybind11::array_t<int> descriptor(static_cast<pybind11::ssize_t>(cadc_samples.size())); pybind11::array_t<int> nrn_on_pop(static_cast<pybind11::ssize_t>(cadc_samples.size())); pybind11::array_t<int> comp_on_nrn(static_cast<pybind11::ssize_t>(cadc_samples.size())); pybind11::array_t<int> an_on_comp(static_cast<pybind11::ssize_t>(cadc_samples.size())); pybind11::array_t<int> values(static_cast<pybind11::ssize_t>(cadc_samples.size())); for (size_t i = 0; i < cadc_samples.size(); ++i) { auto const& sample = cadc_samples.at(i); times.mutable_at(i) = convert_ms(std::get<0>(sample)); descriptor.mutable_at(i) = std::get<1>(sample).value(); nrn_on_pop.mutable_at(i) = std::get<2>(sample); comp_on_nrn.mutable_at(i) = std::get<3>(sample).value(); an_on_comp.mutable_at(i) = std::get<4>(sample); values.mutable_at(i) = std::get<5>(sample).value(); } ret.at(b) = std::make_tuple(times, descriptor, nrn_on_pop, comp_on_nrn, an_on_comp, values); } LOG4CXX_TRACE(logger, "Execution duration: " << timer.print() << "."); return ret; }¶
-
auto const
extract_madc_samples
= [convert_ms]( grenade::vx::signal_flow::IODataMap const& data, grenade::vx::network::NetworkGraph const& network_graph) { hate::Timer timer; auto logger = log4cxx::Logger::getLogger("pygrenade.network.extract_madc_samples"); auto const samples = grenade::vx::network::extract_madc_samples(data, network_graph); std::vector<std::tuple< pybind11::array_t<float>, pybind11::array_t<int>, pybind11::array_t<int>, pybind11::array_t<int>, pybind11::array_t<int>, pybind11::array_t<int>>> ret(samples.size()); for (size_t b = 0; b < samples.size(); ++b) { auto const madc_samples = samples.at(b); if (madc_samples.empty()) { ret.at(b) = std::make_tuple( pybind11::array_t<float>(0), pybind11::array_t<int>(0), pybind11::array_t<int>(0), pybind11::array_t<int>(0), pybind11::array_t<int>(0), pybind11::array_t<int>(0)); continue; } pybind11::array_t<float> times(static_cast<pybind11::ssize_t>(madc_samples.size())); pybind11::array_t<int> descriptor(static_cast<pybind11::ssize_t>(madc_samples.size())); pybind11::array_t<int> nrn_on_pop(static_cast<pybind11::ssize_t>(madc_samples.size())); pybind11::array_t<int> comp_on_nrn(static_cast<pybind11::ssize_t>(madc_samples.size())); pybind11::array_t<int> an_on_comp(static_cast<pybind11::ssize_t>(madc_samples.size())); pybind11::array_t<int> values(static_cast<pybind11::ssize_t>(madc_samples.size())); for (size_t i = 0; i < madc_samples.size(); ++i) { auto const& sample = madc_samples.at(i); times.mutable_at(i) = convert_ms(std::get<0>(sample)); descriptor.mutable_at(i) = std::get<1>(sample).population.value(); nrn_on_pop.mutable_at(i) = std::get<1>(sample).neuron_on_population; comp_on_nrn.mutable_at(i) = std::get<1>(sample).compartment_on_neuron.value(); an_on_comp.mutable_at(i) = std::get<1>(sample).atomic_neuron_on_compartment; values.mutable_at(i) = std::get<2>(sample).value(); } ret.at(b) = std::make_tuple(times, descriptor, nrn_on_pop, comp_on_nrn, an_on_comp, values); } LOG4CXX_TRACE(logger, "Execution duration: " << timer.print() << "."); return ret; }¶
-
auto const
extract_neuron_spikes
= [convert_ms]( grenade::vx::signal_flow::IODataMap const& data, grenade::vx::network::NetworkGraph const& network_graph) { hate::Timer timer; auto logger = log4cxx::Logger::getLogger("pygrenade.network.extract_neuron_spikes"); auto const spikes = grenade::vx::network::extract_neuron_spikes(data, network_graph); std::vector<std::map<std::tuple<int, int, int>, pybind11::array_t<double>>> ret( spikes.size()); for (size_t b = 0; b < spikes.size(); ++b) { for (auto const& [neuron, times] : spikes.at(b)) { pybind11::array_t<double> pytimes(static_cast<pybind11::ssize_t>(times.size())); for (size_t i = 0; i < times.size(); ++i) { pytimes.mutable_at(i) = convert_ms(times.at(i)); } auto const& [descriptor, nrn_on_pop, comp_on_nrn] = neuron; ret.at(b)[std::tuple<int, int, int>(descriptor, nrn_on_pop, comp_on_nrn)] = pytimes; } } LOG4CXX_TRACE(logger, "Execution duration: " << timer.print() << "."); return ret; }¶ PyNN’s format expects times in floating-point ms, neuron (compartment)s as integer representation of the enum values and sample values as integer values.
Currently, only batch-size one is supported, i.e. one time sequence.
-
signal_flow::IODataMap
m_data
= {}¶
-
NetworkGraph const &
m_network_graph
¶
-
struct grenade::vx::network::Projection operator ==(Projection const& other) const SYMBOL_VISIBLE
-
typedef common::TimedData<std::vector<std::map<halco::hicann_dls::vx::v3::CompartmentOnLogicalNeuron, std::vector<int16_t>>>>
-
namespace
grenade::vx::network
::
routing
¶ Functions
-
std::ostream & operator<< (std::ostream &os, SynapseDriverOnPADIBusManager::AllocationPolicy const &value) SYMBOL_VISIBLE
-
-
namespace
detail
¶
-
namespace
grenade::vx
::
ppu
¶ Functions
-
template<typename
T
, typenameHandleI
, typenameHandleO
>
libnux::vx::VectorRow<T>translate_columns
(libnux::vx::VectorRow<T> const &input, HandleI const &input_handle, HandleO const &output_handle)¶ Translate vector row values from columns of input handle to columns of output handle.
Translates sequentially, if there are less active columns in input than in output broadcasts last value, if there are more active columns in input than in output drops the additional values.
- Parameters
input – Input values
input_handle – Input handle for active column lookup
output_handle – Output handle for active column lookup
-
template<typename
-
namespace
grenade::vx
::
signal_flow
¶ Typedefs
-
typedef halco::hicann_dls::vx::v3::SpikeLabel
SpikeFromChip
¶ From-chip spike.
-
typedef std::variant<haldls::vx::v3::SpikePack1ToChip, haldls::vx::v3::SpikePack2ToChip, haldls::vx::v3::SpikePack3ToChip>
SpikeToChip
¶ To-chip spike.
-
typedef common::TimedData<MADCSampleFromChip>
TimedMADCSampleFromChip
¶ Time-annotated from-chip MADC sample.
-
typedef std::vector<TimedMADCSampleFromChip>
TimedMADCSampleFromChipSequence
Sequence of time-annotated from-chip MADC events.
-
typedef common::TimedData<SpikeFromChip>
TimedSpikeFromChip
¶ Time-annotated from-chip spike.
-
typedef std::vector<TimedSpikeFromChip>
TimedSpikeFromChipSequence
Sequence of time-annotated from-chip spike events.
-
typedef common::TimedData<SpikeToChip>
TimedSpikeToChip
¶ Time-annotated to-chip spike.
-
typedef std::vector<TimedSpikeToChip>
TimedSpikeToChipSequence
Sequence of timed to-chip spike events.
-
typedef std::variant<vertex::Subtraction, vertex::PlasticityRule, vertex::BackgroundSpikeSource, vertex::ArgMax, vertex::CrossbarL2Input, vertex::CrossbarL2Output, vertex::CrossbarNode, vertex::PADIBus, vertex::SynapseDriver, vertex::SynapseArrayViewSparse, vertex::SynapseArrayView, vertex::ConvertingReLU, vertex::ReLU, vertex::Addition, vertex::ExternalInput, vertex::DataInput, vertex::DataOutput, vertex::Transformation, vertex::NeuronView, vertex::NeuronEventOutputView, vertex::MADCReadoutView, vertex::CADCMembraneReadoutView>
Vertex
¶ Vertex configuration as variant over possible types.
Enums
-
enum
ConnectionType
¶ Type of data transfered by a connection.
Connections between vertices are only allowed if the input vertex output connection type is equal to the output vertex input connection type.
Values:
-
enumerator
SynapseInputLabel
¶
-
enumerator
UInt32
¶
-
enumerator
UInt5
¶
-
enumerator
Int8
¶
-
enumerator
SynapticInput
¶
-
enumerator
MembraneVoltage
¶
-
enumerator
TimedSpikeToChipSequence
¶
-
enumerator
TimedSpikeFromChipSequence
¶
-
enumerator
TimedMADCSampleFromChipSequence
¶
-
enumerator
DataTimedSpikeToChipSequence
¶
-
enumerator
DataTimedSpikeFromChipSequence
¶
-
enumerator
DataTimedMADCSampleFromChipSequence
¶
-
enumerator
DataInt8
¶
-
enumerator
DataUInt5
¶
-
enumerator
DataUInt32
¶
-
enumerator
CrossbarInputLabel
¶
-
enumerator
CrossbarOutputLabel
¶
-
enumerator
SynapseDriverInputLabel
¶
-
enumerator
Functions
-
size_t hash_value (ExecutionInstance const &e) SYMBOL_VISIBLE
-
std::ostream & operator<< (std::ostream &os, ConnectionType const &type) SYMBOL_VISIBLE
-
template<typename
Vertex
, typenameInputVertex
>
boolsupports_input_from
(Vertex const &vertex, InputVertex const &input, std::optional<PortRestriction> const &port_restriction)¶ Get whether given vertex supports input from given input vertex with optional port restriction.
Default assumption is that the connection is supported. Restrictions can be defined by a member function of signature: supports_input_from(OtherVertex const&, std::optional<PortRestriction> const&).
- Template Parameters
Vertex – Type of vertex
InputVertex – Type of input vertex
- Parameters
vertex – Vertex to check
input_vertex – Input vertex to check
port_restriction – Optional port restriction to apply to check
Variables
-
constexpr auto
can_connect_different_execution_instances
= std::array{ConnectionType::DataUInt5, ConnectionType::DataInt8, ConnectionType::DataTimedSpikeToChipSequence, ConnectionType::DataTimedSpikeFromChipSequence, ConnectionType::DataUInt32, ConnectionType::DataTimedMADCSampleFromChipSequence}¶ Only memory operations are allowed to connect between different execution instances.
-
typedef halco::hicann_dls::vx::v3::SpikeLabel
-
namespace
grenade::vx::signal_flow
::
detail
¶ Typedefs
-
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, boost::no_property, boost::no_property>
Graph
¶ Bidirectional graph.
-
template<typename
Vertex
, typenameInputVertex
>
usinghas_supports_input_from
= decltype(std::declval<Vertex>().supports_input_from(std::declval<InputVertex>(), std::declval<std::optional<PortRestriction>>()))¶
-
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, boost::no_property, boost::no_property>
-
namespace
grenade::vx::signal_flow
::
vertex
¶ Functions
-
std::ostream & operator<< (std::ostream &os, PlasticityRule::TimedRecording::ObservablePerNeuron::Layout const &layout) SYMBOL_VISIBLE
-
std::ostream & operator<< (std::ostream &os, PlasticityRule::TimedRecording::ObservablePerSynapse::LayoutPerRow const &layout) SYMBOL_VISIBLE
-
-
namespace
plasticity_rule
¶
-
namespace
transformation
¶
-
namespace
halco
-
namespace
common
-
namespace
detail
-
namespace
hate
¶
-
namespace
log4cxx
¶
-
namespace
lola
¶
-
namespace
vx
¶
-
namespace
v3
¶
-
namespace
stadls
¶
-
namespace
vx
¶
-
namespace
std
STL namespace.
-
file
cerealization.h
- #include “cereal/types/haldls/cereal.tcc”
Defines
-
EXPLICIT_INSTANTIATE_CEREAL_LOAD_SAVE
(CLASS_NAME)¶
-
-
file
time.h
- #include “grenade/vx/genpybind.h”#include “halco/common/geometry.h”#include “haldls/vx/v3/event.h”#include “haldls/vx/v3/timer.h”#include “hate/visibility.h”
-
file
timed_data.h
- #include “grenade/vx/common/time.h”#include “grenade/vx/genpybind.h”#include <vector>#include “grenade/vx/common/timed_data.tcc”
-
file
addition.h
- #include <vector>#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/types.h”
-
file
addition.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>
-
file
argmax.h
- #include <vector>#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/types.h”
-
file
argmax.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>
-
file
conv1d.h
- #include <vector>#include <gtest/gtest_prod.h>#include “grenade/vx/common/time.h”#include “grenade/vx/compute/mac.h”#include “grenade/vx/signal_flow/types.h”#include “grenade/vx/compute/conv1d.tcc”
-
file
converting_relu.h
- #include <vector>#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/types.h”
-
file
converting_relu.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>
-
file
range_split.h
- #include “hate/visibility.h”#include <cstddef>#include <vector>
-
file
single_chip_execution_instance_manager.h
- #include “grenade/vx/signal_flow/execution_instance.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “hate/visibility.h”
-
file
mac.h
- #include <vector>#include <gtest/gtest_prod.h>#include “grenade/vx/common/time.h”#include “grenade/vx/execution/jit_graph_executor.h”#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/types.h”#include “grenade/vx/signal_flow/vertex/synapse_array_view.h”#include “halco/common/geometry.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “haldls/vx/v3/event.h”#include “haldls/vx/v3/synapse_driver.h”#include “lola/vx/v3/synapse.h”#include <string>#include “grenade/vx/compute/mac.tcc”
-
file
relu.h
- #include <vector>#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/types.h”
-
file
relu.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>
-
file
sequence.h
- #include “grenade/cerealization.h”#include “grenade/vx/compute/addition.h”#include “grenade/vx/compute/argmax.h”#include “grenade/vx/compute/conv1d.h”#include “grenade/vx/compute/converting_relu.h”#include “grenade/vx/compute/mac.h”#include “grenade/vx/compute/relu.h”#include “grenade/vx/signal_flow/io_data_list.h”#include “hate/visibility.h”#include <list>#include <variant>
-
file
connection.h
- #include “grenade/vx/genpybind.h”#include “hate/visibility.h”#include “hxcomm/common/connection_time_info.h”#include “hxcomm/vx/connection_variant.h”#include “stadls/vx/run_time_info.h”#include “stadls/vx/v3/init_generator.h”#include “stadls/vx/v3/playback_program.h”#include “stadls/vx/v3/reinit_stack_entry.h”#include <optional>#include <string>#include <variant>
-
file
run.h
- #include “hate/visibility.h”#include “stadls/vx/run_time_info.h”
-
file
run.h
- #include “grenade/vx/execution/jit_graph_executor.h”#include “hate/visibility.h”
-
file
run.h
- #include “grenade/vx/execution/backend/connection.h”#include “grenade/vx/execution/jit_graph_executor.h”#include “grenade/vx/genpybind.h”#include “grenade/vx/network/network_graph.h”#include “grenade/vx/signal_flow/execution_instance_playback_hooks.h”#include “grenade/vx/signal_flow/io_data_map.h”#include “hate/visibility.h”#include “hxcomm/vx/connection_variant.h”
-
file
connection_state_storage.h
- #include “fisch/vx/word_access/type/omnibus.h”#include “lola/vx/v3/chip.h”#include “stadls/vx/v3/reinit_stack_entry.h”#include <mutex>#include <vector>
-
file
execution_instance_builder.h
- #include <atomic>#include <optional>#include <set>#include <vector>#include “grenade/vx/execution/detail/generator/neuron_reset_mask.h”#include “grenade/vx/signal_flow/execution_instance.h”#include “grenade/vx/signal_flow/execution_instance_playback_hooks.h”#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/io_data_map.h”#include “grenade/vx/signal_flow/types.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “haldls/vx/v3/ppu.h”#include “haldls/vx/v3/synapse_driver.h”#include “hate/visibility.h”#include “lola/vx/v3/cadc.h”#include “lola/vx/v3/ppu.h”#include “lola/vx/v3/synapse.h”#include “stadls/vx/v3/container_ticket.h”#include “stadls/vx/v3/playback_generator.h”#include “stadls/vx/v3/playback_program.h”#include “stadls/vx/v3/playback_program_builder.h”
-
file
execution_instance_config_visitor.h
- #include “grenade/vx/ppu/neuron_view_handle.h”#include “grenade/vx/ppu/synapse_array_view_handle.h”#include “grenade/vx/signal_flow/execution_instance.h”#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/vertex/plasticity_rule.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “hate/visibility.h”#include “lola/vx/v3/chip.h”#include “stadls/vx/v3/playback_program_builder.h”#include <optional>#include <tuple>#include <vector>
-
file
execution_instance_node.h
- #include <memory>#include <tbb/flow_graph.h>#include “grenade/vx/execution/detail/connection_state_storage.h”#include “grenade/vx/execution/detail/execution_instance_builder.h”#include “grenade/vx/signal_flow/execution_instance_playback_hooks.h”#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/io_data_map.h”#include “hate/visibility.h”#include “lola/vx/v3/chip.h”
-
file
madc.h
- #include “hate/nil.h”#include “hate/visibility.h”#include “stadls/vx/v3/playback_generator.h”
-
file
neuron_reset_mask.h
- #include “halco/common/typed_array.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “hate/nil.h”#include “hate/visibility.h”#include “stadls/vx/v3/playback_generator.h”#include “stadls/vx/v3/playback_program_builder.h”
-
file
ppu.h
- #include “grenade/vx/ppu/detail/status.h”#include “halco/hicann-dls/vx/v3/ppu.h”#include “hate/nil.h”#include “hate/visibility.h”#include “stadls/vx/v3/playback_generator.h”
-
file
ppu.h
- #include “halco/common/typed_array.h”#include “haldls/vx/v3/neuron.h”#include “haldls/vx/v3/ppu.h”#include “hate/visibility.h”#include “lola/vx/v3/ppu.h”#include <cstdint>#include <filesystem>#include <map>#include <mutex>#include <optional>#include <string>#include <vector>
-
file
timed_spike_to_chip_sequence.h
- #include “grenade/vx/signal_flow/event.h”#include “hate/nil.h”#include “hate/visibility.h”#include “stadls/vx/v3/playback_generator.h”
-
file
ppu_program_generator.h
- #include “grenade/vx/ppu/neuron_view_handle.h”#include “grenade/vx/ppu/synapse_array_view_handle.h”#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/vertex/plasticity_rule.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “halco/hicann-dls/vx/v3/synram.h”#include “hate/visibility.h”#include <tuple>#include <vector>
-
file
jit_graph_executor.h
- #include <map>#include <unordered_map>#include “grenade/vx/execution/backend/connection.h”#include “grenade/vx/execution/detail/connection_state_storage.h”#include “grenade/vx/signal_flow/execution_instance.h”#include “grenade/vx/signal_flow/execution_instance_playback_hooks.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “hate/visibility.h”#include “lola/vx/v3/chip.h”
-
file
python_bindings.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/common/time.h”
-
file
python_bindings.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/execution/backend/connection.h”#include “grenade/vx/execution/jit_graph_executor.h”
-
file
python_bindings.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/background_source_population.h”#include “grenade/vx/network/build_routing.h”#include “grenade/vx/network/connection_routing_result.h”#include “grenade/vx/network/external_source_population.h”#include “grenade/vx/network/extract_output.h”#include “grenade/vx/network/generate_input.h”#include “grenade/vx/network/network.h”#include “grenade/vx/network/network_builder.h”#include “grenade/vx/network/network_graph.h”#include “grenade/vx/network/network_graph_builder.h”#include “grenade/vx/network/network_graph_statistics.h”#include “grenade/vx/network/plasticity_rule.h”#include “grenade/vx/network/plasticity_rule_generator.h”#include “grenade/vx/network/population.h”#include “grenade/vx/network/projection.h”#include “grenade/vx/network/requires_routing.h”#include “grenade/vx/network/run.h”
-
file
python_bindings.h
- #include “grenade/vx/genpybind.h”
-
file
python_bindings.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/signal_flow/event.h”#include “grenade/vx/signal_flow/execution_instance.h”#include “grenade/vx/signal_flow/execution_instance_playback_hooks.h”#include “grenade/vx/signal_flow/execution_time_info.h”#include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/io_data_map.h”#include “grenade/vx/signal_flow/types.h”
-
file
genpybind.h
- #include <genpybind.h>
-
file
atomic_neuron_on_network.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/population_descriptor.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “hate/visibility.h”#include <cstddef>#include <iosfwd>
-
file
background_source_population.h
- #include “grenade/vx/genpybind.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “halco/hicann-dls/vx/v3/padi.h”#include “haldls/vx/v3/background.h”#include “hate/visibility.h”#include <iosfwd>#include <map>
-
file
build_connection_routing.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/connection_routing_result.h”#include “grenade/vx/network/network.h”#include “hate/visibility.h”#include <memory>
-
file
build_connection_weight_split.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/projection.h”#include “lola/vx/v3/synapse.h”#include <vector>
-
file
build_routing.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/routing_options.h”#include “grenade/vx/network/routing_result.h”#include “hate/visibility.h”#include <memory>#include <optional>
-
file
cadc_recording.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/population_descriptor.h”#include “hate/visibility.h”#include “lola/vx/v3/neuron.h”
-
file
connection_routing_result.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/projection.h”#include “hate/visibility.h”#include <cstddef>#include <iosfwd>#include <map>#include <vector>
-
file
connectum.h
- #include “grenade/vx/network/population_descriptor.h”#include “grenade/vx/network/projection.h”#include “grenade/vx/signal_flow/graph.h”#include “haldls/vx/v3/event.h”#include “hate/visibility.h”#include <iosfwd>#include <variant>#include <vector>
-
file
exception.h
- #include “hate/visibility.h”#include <exception>#include <string>
-
file
external_source_population.h
- #include “grenade/vx/genpybind.h”#include “hate/visibility.h”#include <cstddef>#include <iosfwd>
-
file
extract_output.h
- #include “grenade/vx/common/time.h”#include “grenade/vx/genpybind.h”#include “grenade/vx/network/atomic_neuron_on_network.h”#include “grenade/vx/network/network_graph.h”#include “grenade/vx/signal_flow/io_data_map.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include <map>#include <tuple>#include <vector>
-
file
generate_input.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/network_graph.h”#include “grenade/vx/signal_flow/event.h”#include “grenade/vx/signal_flow/io_data_map.h”
Functions
-
void add (std::vector< common::Time > const ×, PopulationDescriptor population) SYMBOL_VISIBLE
-
void add (std::vector< std::vector< common::Time > > const ×, PopulationDescriptor population) SYMBOL_VISIBLE
-
void add (std::vector< std::vector< std::vector< common::Time > > > const ×, PopulationDescriptor population) SYMBOL_VISIBLE
-
parent def ("add", [convert_ms](GENPYBIND_PARENT_TYPE &self, std::vector< float > const ×, grenade::vx::network::PopulationDescriptor const population) { std::vector< grenade::vx::common::Time > gtimes;gtimes.reserve(times.size());std::transform(times.begin(), times.end(), std::back_inserter(gtimes), convert_ms);self.add(gtimes, population);}, parent->py::arg("times"), parent->py::arg("population"))
-
parent def ("add", [convert_ms](GENPYBIND_PARENT_TYPE &self, std::vector< std::vector< float > > const ×, grenade::vx::network::PopulationDescriptor const population) { std::vector< std::vector< grenade::vx::common::Time > > gtimes;gtimes.resize(times.size());for(size_t i=0;auto > :gtimes) { gt.reserve(times.at(i).size());i++;} for(size_t i=0;auto &t :times) { std::transform(t.begin(), t.end(), std::back_inserter(gtimes.at(i)), convert_ms);i++;} self.add(gtimes, population);}, parent->py::arg("times"), parent->py::arg("population"))
-
parent def ("add", [convert_ms](GENPYBIND_PARENT_TYPE &self, std::vector< std::vector< std::vector< float > > > const ×, grenade::vx::network::PopulationDescriptor const population) { std::vector< std::vector< std::vector< grenade::vx::common::Time > > > gtimes;gtimes.resize(times.size());for(size_t b=0;auto >_b :gtimes) { gt_b.resize(times.at(b).size());for(size_t i=0;auto > :gt_b) { gt.reserve(times.at(b).at(i).size());i++;} for(size_t i=0;auto &t :times.at(b)) { std::transform(t.begin(), t.end(), std::back_inserter(gtimes.at(b).at(i)), convert_ms);i++;} b++;} self.add(gtimes, population);}, parent->py::arg("times"), parent->py::arg("population"))
-
InputGenerator (NetworkGraph const &network_graph, size_t batch_size=1) SYMBOL_VISIBLE
-
-
file
madc_recording.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/atomic_neuron_on_network.h”#include “hate/visibility.h”#include “lola/vx/v3/neuron.h”
-
file
network.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/background_source_population.h”#include “grenade/vx/network/cadc_recording.h”#include “grenade/vx/network/external_source_population.h”#include “grenade/vx/network/madc_recording.h”#include “grenade/vx/network/plasticity_rule.h”#include “grenade/vx/network/population.h”#include “grenade/vx/network/population_descriptor.h”#include “grenade/vx/network/projection.h”#include “hate/visibility.h”#include <chrono>#include <iosfwd>#include <map>#include <memory>#include <variant>
-
file
network_builder.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/cadc_recording.h”#include “grenade/vx/network/madc_recording.h”#include “grenade/vx/network/network.h”#include “grenade/vx/network/plasticity_rule.h”#include “grenade/vx/network/population.h”#include “grenade/vx/network/projection.h”#include “hate/visibility.h”#include <chrono>#include <map>#include <memory>#include <variant>
-
file
network_graph.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/network.h”#include “grenade/vx/network/network_graph_statistics.h”#include “grenade/vx/network/population_descriptor.h”#include “grenade/vx/signal_flow/graph.h”#include “hate/visibility.h”#include <map>#include <optional>
-
file
network_graph_builder.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/cadc_recording.h”#include “grenade/vx/network/madc_recording.h”#include “grenade/vx/network/network.h”#include “grenade/vx/network/network_graph.h”#include “grenade/vx/network/plasticity_rule.h”#include “grenade/vx/network/population_descriptor.h”#include “grenade/vx/network/projection.h”#include “grenade/vx/network/routing_result.h”#include “grenade/vx/signal_flow/execution_instance.h”#include “grenade/vx/signal_flow/graph.h”#include “halco/hicann-dls/vx/v3/background.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “halco/hicann-dls/vx/v3/padi.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “halco/hicann-dls/vx/v3/synapse_driver.h”#include “hate/visibility.h”#include <map>#include <memory>#include <optional>#include <vector>
-
file
network_graph_statistics.h
- #include “grenade/vx/genpybind.h”#include “hate/visibility.h”#include <chrono>#include <cstddef>#include <iosfwd>
-
file
plasticity_rule.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/projection.h”#include “grenade/vx/signal_flow/vertex/plasticity_rule.h”#include “halco/common/geometry.h”#include “hate/visibility.h”#include <map>#include <optional>#include <string>#include <vector>
-
file
plasticity_rule.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/event.h”#include “grenade/vx/signal_flow/port.h”#include “grenade/vx/signal_flow/vertex/neuron_view.h”#include “grenade/vx/signal_flow/vertex/plasticity_rule/observable_data_type.h”#include “halco/common/geometry.h”#include “halco/common/typed_array.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “haldls/vx/v3/neuron.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <iosfwd>#include <map>#include <optional>#include <string>#include <vector>
-
file
plasticity_rule_generator.h
- #include “grenade/vx/network/plasticity_rule.h”#include “hate/visibility.h”#include <set>
-
file
population.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/receptor.h”#include “halco/common/geometry.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “haldls/vx/v3/background.h”#include “hate/visibility.h”#include “lola/vx/v3/neuron.h”#include <iosfwd>#include <map>#include <optional>#include <set>#include <unordered_set>#include <vector>
-
file
population_descriptor.h
- #include “grenade/vx/genpybind.h”#include “halco/common/geometry.h”
-
file
projection.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/population_descriptor.h”#include “grenade/vx/network/receptor.h”#include “halco/common/geometry.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “hate/visibility.h”#include <vector>
Functions
-
std::ostream & operator<< (std::ostream &os, Projection::Connection::Index const &index) SYMBOL_VISIBLE
-
-
file
README.md
-
file
receptor.h
- #include “grenade/vx/genpybind.h”#include “halco/common/geometry.h”#include “hate/visibility.h”#include <iosfwd>
-
file
requires_routing.h
- #include “grenade/vx/genpybind.h”#include “hate/visibility.h”#include <memory>
-
file
synapse_driver_on_dls_manager.h
- #include “grenade/vx/network/routing/synapse_driver_on_dls_manager.h”#include “grenade/vx/network/routing/synapse_driver_on_padi_bus_manager.h”#include “halco/common/geometry.h”#include “halco/hicann-dls/vx/v3/padi.h”#include “halco/hicann-dls/vx/v3/synapse_driver.h”#include “haldls/vx/v3/synapse_driver.h”#include “hate/visibility.h”#include <set>#include <vector>
-
file
synapse_driver_on_dls_manager.h
- #include “grenade/vx/network/routing/synapse_driver_on_padi_bus_manager.h”#include “halco/common/geometry.h”#include “halco/hicann-dls/vx/v3/padi.h”#include “halco/hicann-dls/vx/v3/synapse_driver.h”#include “haldls/vx/v3/synapse_driver.h”#include “hate/visibility.h”#include <chrono>#include <memory>#include <optional>#include <set>#include <vector>
-
file
synapse_driver_on_padi_bus_manager.h
- #include “grenade/vx/network/routing/synapse_driver_on_padi_bus_manager.h”#include “hate/visibility.h”#include <map>#include <set>#include <vector>
-
file
synapse_driver_on_padi_bus_manager.h
- #include “halco/hicann-dls/vx/v3/synapse_driver.h”#include “haldls/vx/v3/padi.h”#include “haldls/vx/v3/synapse_driver.h”#include “hate/visibility.h”#include <chrono>#include <iosfwd>#include <map>#include <optional>#include <set>#include <variant>#include <vector>
-
file
routing_builder.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/connection_routing_result.h”#include “grenade/vx/network/network.h”#include “grenade/vx/network/population_descriptor.h”#include “grenade/vx/network/projection.h”#include “grenade/vx/network/routing/routing_constraints.h”#include “grenade/vx/network/routing/source_on_padi_bus_manager.h”#include “grenade/vx/network/routing/synapse_driver_on_dls_manager.h”#include “grenade/vx/network/routing_options.h”#include “grenade/vx/network/routing_result.h”#include “halco/common/typed_array.h”#include “halco/hicann-dls/vx/v3/event.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “halco/hicann-dls/vx/v3/padi.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “halco/hicann-dls/vx/v3/synapse_driver.h”#include “haldls/vx/v3/event.h”#include “haldls/vx/v3/neuron.h”#include “haldls/vx/v3/synapse_driver.h”#include “hate/visibility.h”#include “lola/vx/v3/synapse.h”#include <deque>#include <map>#include <memory>#include <optional>#include <unordered_set>#include <variant>#include <vector>
-
file
routing_constraints.h
- #include “grenade/vx/network/connection_routing_result.h”#include “grenade/vx/network/population_descriptor.h”#include “grenade/vx/network/projection.h”#include “grenade/vx/network/receptor.h”#include “halco/common/typed_array.h”#include “halco/hicann-dls/vx/v3/background.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “halco/hicann-dls/vx/v3/padi.h”#include “hate/visibility.h”#include <map>#include <set>#include <utility>#include <vector>
-
file
source_on_padi_bus_manager.h
- #include “grenade/vx/network/routing/source_on_padi_bus_manager.h”#include “grenade/vx/network/routing/synapse_driver_on_dls_manager.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “halco/hicann-dls/vx/v3/padi.h”#include “hate/visibility.h”#include <optional>#include <set>#include <vector>
-
file
source_on_padi_bus_manager.h
- #include “grenade/vx/network/receptor.h”#include “grenade/vx/network/routing/synapse_driver_on_dls_manager.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “halco/hicann-dls/vx/v3/padi.h”#include “halco/hicann-dls/vx/v3/synapse_driver.h”#include “haldls/vx/v3/synapse_driver.h”#include “hate/visibility.h”#include <memory>#include <optional>#include <set>#include <vector>
-
file
routing_options.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/routing/synapse_driver_on_dls_manager.h”#include “lola/vx/v3/synapse.h”#include <chrono>#include <iosfwd>#include <optional>
-
file
routing_result.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/network/connection_routing_result.h”#include “halco/hicann-dls/vx/v3/event.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “halco/hicann-dls/vx/v3/synapse_driver.h”#include “haldls/vx/v3/event.h”#include “haldls/vx/v3/neuron.h”#include “haldls/vx/v3/routing_crossbar.h”#include “haldls/vx/v3/synapse_driver.h”#include “hate/visibility.h”#include “lola/vx/v3/synapse.h”#include <chrono>#include <iosfwd>#include <map>#include <vector>
-
file
extmem.h
- #include <cstddef>
-
file
status.h
- #include <cstdint>
-
file
stopped.h
- #include <cstdint>
-
file
neuron_view_handle.h
- #include “hate/bitset.h”#include “grenade/vx/ppu/neuron_view_handle.tcc”
-
file
synapse_array_view_handle.h
- #include “hate/bitset.h”#include “grenade/vx/ppu/synapse_array_view_handle.tcc”
-
file
translate_columns.h
- #include “libnux/vx/vector_row.h”
-
file
connection_type.h
- #include “hate/visibility.h”#include <array>#include <iosfwd>
-
file
graph.h
- #include <boost/graph/adjacency_list.hpp>
-
file
graph.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/signal_flow/detail/graph.h”#include “grenade/vx/signal_flow/execution_instance.h”#include “grenade/vx/signal_flow/port_restriction.h”#include “grenade/vx/signal_flow/vertex.h”#include “hate/visibility.h”#include <cstddef>#include <iosfwd>#include <map>#include <memory>#include <optional>#include <unordered_map>#include <vector>#include <boost/bimap.hpp>#include <boost/bimap/multiset_of.hpp>#include <boost/bimap/set_of.hpp>#include <boost/bimap/unordered_set_of.hpp>#include “grenade/vx/signal_flow/graph.tcc”
-
file
vertex_concept.h
- #include <array>#include <cstddef>#include <type_traits>#include <utility>#include <variant>#include <vector>
-
file
event.h
- #include “grenade/vx/common/timed_data.h”#include “halco/hicann-dls/vx/v3/event.h”#include “haldls/vx/v3/event.h”#include “hate/visibility.h”#include <iosfwd>#include <variant>#include <vector>
-
file
execution_instance.h
- #include “grenade/vx/genpybind.h”#include “halco/common/geometry.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “hate/visibility.h”#include <iosfwd>#include <stddef.h>
-
file
execution_instance_playback_hooks.h
- #include “grenade/vx/genpybind.h”#include “stadls/vx/v3/playback_program_builder.h”
-
file
execution_time_info.h
- #include “grenade/vx/genpybind.h”#include “grenade/vx/signal_flow/execution_instance.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “hate/visibility.h”#include <chrono>#include <iosfwd>#include <map>#include <unordered_map>
-
file
input.h
- #include “grenade/vx/signal_flow/graph.h”#include “grenade/vx/signal_flow/port_restriction.h”#include “hate/visibility.h”#include <iosfwd>#include <optional>
-
file
io_data_list.h
- #include “grenade/vx/signal_flow/event.h”#include “grenade/vx/signal_flow/io_data_map.h”#include “grenade/vx/signal_flow/types.h”#include “hate/visibility.h”#include <list>#include <vector>
-
file
io_data_map.h
- #include “grenade/vx/common/time.h”#include “grenade/vx/common/timed_data.h”#include “grenade/vx/genpybind.h”#include “grenade/vx/signal_flow/detail/graph.h”#include “grenade/vx/signal_flow/event.h”#include “grenade/vx/signal_flow/execution_instance.h”#include “grenade/vx/signal_flow/execution_time_info.h”#include “grenade/vx/signal_flow/port.h”#include “grenade/vx/signal_flow/types.h”#include “haldls/vx/v3/timer.h”#include “hate/visibility.h”#include <map>#include <memory>#include <mutex>#include <optional>#include <unordered_map>#include <variant>
-
file
port.h
- #include <cstddef>#include <iosfwd>#include “grenade/vx/signal_flow/connection_type.h”#include “hate/visibility.h”
-
file
port_restriction.h
- #include “hate/visibility.h”#include <cstddef>#include <cstdint>#include <iosfwd>#include <optional>
-
file
supports_input_from.h
- #include “hate/type_traits.h”#include <optional>
-
file
types.h
- #include “grenade/vx/genpybind.h”#include “halco/common/geometry.h”#include “haldls/vx/v3/padi.h”
-
file
vertex.h
- #include “grenade/vx/signal_flow/detail/vertex_concept.h”#include “grenade/vx/signal_flow/vertex/addition.h”#include “grenade/vx/signal_flow/vertex/argmax.h”#include “grenade/vx/signal_flow/vertex/background_spike_source.h”#include “grenade/vx/signal_flow/vertex/cadc_membrane_readout_view.h”#include “grenade/vx/signal_flow/vertex/converting_relu.h”#include “grenade/vx/signal_flow/vertex/crossbar_l2_input.h”#include “grenade/vx/signal_flow/vertex/crossbar_l2_output.h”#include “grenade/vx/signal_flow/vertex/crossbar_node.h”#include “grenade/vx/signal_flow/vertex/data_input.h”#include “grenade/vx/signal_flow/vertex/data_output.h”#include “grenade/vx/signal_flow/vertex/external_input.h”#include “grenade/vx/signal_flow/vertex/madc_readout.h”#include “grenade/vx/signal_flow/vertex/neuron_event_output_view.h”#include “grenade/vx/signal_flow/vertex/neuron_view.h”#include “grenade/vx/signal_flow/vertex/padi_bus.h”#include “grenade/vx/signal_flow/vertex/plasticity_rule.h”#include “grenade/vx/signal_flow/vertex/relu.h”#include “grenade/vx/signal_flow/vertex/subtraction.h”#include “grenade/vx/signal_flow/vertex/synapse_array_view.h”#include “grenade/vx/signal_flow/vertex/synapse_array_view_sparse.h”#include “grenade/vx/signal_flow/vertex/synapse_driver.h”#include “grenade/vx/signal_flow/vertex/transformation.h”#include <variant>
-
file
background_spike_source.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/hicann-dls/vx/v3/background.h”#include “haldls/vx/background.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>
-
file
cadc_membrane_readout_view.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/hicann-dls/vx/v3/cadc.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “halco/hicann-dls/vx/v3/synram.h”#include “hate/visibility.h”#include “lola/vx/v3/neuron.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>#include <optional>#include <vector>#include “grenade/vx/signal_flow/vertex/cadc_membrane_readout_view.tcc”
-
file
crossbar_l2_input.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>
-
file
crossbar_l2_output.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>#include <optional>
-
file
crossbar_node.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “grenade/vx/signal_flow/port_restriction.h”#include “halco/hicann-dls/vx/v3/routing_crossbar.h”#include “haldls/vx/v3/routing_crossbar.h”#include “hate/visibility.h”#include <cstddef>#include <cstdint>#include <iosfwd>#include <optional>
-
file
data_input.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>
-
file
data_output.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>#include <optional>
-
file
external_input.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/common/geometry.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>#include <vector>
-
file
madc_readout.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “haldls/vx/v3/event.h”#include “haldls/vx/v3/madc.h”#include “hate/visibility.h”#include “lola/vx/v3/neuron.h”#include <cstddef>#include <iosfwd>#include <optional>#include <tuple>#include <vector>
-
file
neuron_event_output_view.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “hate/visibility.h”#include <array>#include <iosfwd>#include <map>#include <optional>
-
file
neuron_view.h
- #include “grenade/vx/ppu/neuron_view_handle.h”#include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/hicann-dls/vx/v3/neuron.h”#include “hate/visibility.h”#include “lola/vx/v3/neuron.h”#include <array>#include <cstddef>#include <iosfwd>#include <optional>#include <vector>#include “grenade/vx/signal_flow/vertex/neuron_view.tcc”
-
file
padi_bus.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/hicann-dls/vx/v3/padi.h”#include “hate/visibility.h”#include <array>#include <iosfwd>#include <optional>
-
file
observable_data_type.h
- #include “grenade/vx/genpybind.h”#include “hate/type_index.h”#include <cctype>#include <ostream>
-
file
subtraction.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <array>#include <cstddef>#include <cstdint>#include <iosfwd>
-
file
synapse_array_view.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “halco/hicann-dls/vx/v3/synram.h”#include “hate/visibility.h”#include “lola/vx/v3/synapse.h”#include <array>#include <cstddef>#include <iosfwd>#include <vector>#include <boost/range/iterator_range.hpp>#include “grenade/vx/signal_flow/vertex/synapse_array_view.tcc”
-
file
synapse_array_view_sparse.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “halco/hicann-dls/vx/v3/synram.h”#include “hate/visibility.h”#include “lola/vx/v3/synapse.h”#include <array>#include <cstddef>#include <iosfwd>#include <vector>#include <boost/range/iterator_range.hpp>#include “grenade/vx/signal_flow/vertex/synapse_array_view_sparse.tcc”
-
file
synapse_driver.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/port.h”#include “halco/common/typed_array.h”#include “halco/hicann-dls/vx/v3/synapse.h”#include “halco/hicann-dls/vx/v3/synapse_driver.h”#include “haldls/vx/v3/synapse_driver.h”#include “hate/visibility.h”#include <iosfwd>
-
file
transformation.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/io_data_map.h”#include “grenade/vx/signal_flow/port.h”#include “hate/visibility.h”#include <memory>#include <ostream>#include <stddef.h>#include <variant>#include <vector>
-
file
concatenation.h
- #include “grenade/vx/signal_flow/connection_type.h”#include “grenade/vx/signal_flow/vertex/transformation.h”#include <vector>
-
file
mac_spiketrain_generator.h
- #include “grenade/vx/common/time.h”#include “grenade/vx/signal_flow/port.h”#include “grenade/vx/signal_flow/vertex/transformation.h”#include “halco/common/typed_array.h”#include “halco/hicann-dls/vx/v3/chip.h”#include “halco/hicann-dls/vx/v3/event.h”#include “halco/hicann-dls/vx/v3/synapse_driver.h”#include “haldls/vx/v3/event.h”#include “haldls/vx/v3/timer.h”#include <vector>#include <gtest/gtest_prod.h>
-
page
md__jenkins_jenlib_workspaces_f9_doc_gerrit_documentation_brainscales2_ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM_x_grenade_include_grenade_vx_network_README
The
logical_network
namespace contains facilities to describe aNetwork
of placedPopulation
s of logical neurons, unplaced and unroutedProjection
s of connections corresponding to possibly multiple hardware synapse circuits in-between compartments of neurons in these populations,MADCRecording
on a single atomic neuron,CADCRecording
on a collection of atomic neurons as well asPlasticityRule
s on projections. In addition,ExternalSourcePopulation
s allow feeding-in external spike trains andBackgroundSourcePopulation
s describe the on-chip background generators.The only difference to the
network
namespace therefore is the description of logical neurons and projections in-between their neurons’ compartments with possibly multiple hardware synapses per connection.Given such a
Network
, an automated routing algorithm called viaNetworkGraph build_network_graph(Network)
solves the correspondence between logical neurons and atomic neurons as well as abstract synapses andnetwork::Network
hardware synapses. It therrefore selects which atomic neurons of the compartments to connect and the distribution of hardware synapses.The
NetworkGraph
then contains the originalNetwork
as well as the routednetwork::Network
. This can then be used further as described in thenetwork
namespace.Spike-trains to the
ExternalSourcePopulation
s in the network are supplied to anInputGenerator
builder-pattern, which transforms the supplied spike-trains to the rawsignal_flow::IODataMap
format required byrun()
.
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/execution/backend
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/common
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/compute
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/compute/detail
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/execution/detail
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/network/routing/detail
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/ppu/detail
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/signal_flow/detail
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/execution
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/execution/detail/generator
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/network
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/signal_flow/vertex/plasticity_rule
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/ppu
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/network/routing
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/signal_flow
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/signal_flow/vertex/transformation
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx/signal_flow/vertex
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/grenade/include/grenade/vx