Skip to content

Conversation

@thorstenhater
Copy link
Contributor

Using our standard Brunel example with cable cells instead of LIF cells we notice that
simulation setup take roughly 10x longer than the actual execution. By taking a hard look
at the label resolver functionality, we can reduce the setup time by more than half and reduce
the total runtime by half (was 15s)

Result:

bin/brunel --n-excitatory 10000 --n-inhibitory 2500 --tfinal 10 --in-degree-prop 0.1 --dt 0.01 --lambda 1.5 -g 0.8 --delay 1.0 --weight 0.00010 -G 10 --use-cable-cells
==========================================
  Brunel model miniapp
  - distributed : 1 (mpi)
  - threads     : 8
  - gpus        : no
==========================================


There were 38956 spikes

---- meters -------------------------------------------------------------------------------
meter                         time(s)
-------------------------------------------------------------------------------------------
setup                           0.000
model-init                      5.366
model-simulate                  1.549
meter-total                     6.915

Changes:

  • Notice that neither assert-univalent nor round-robin-halt actually have a state and remove those.
  • State is now stored in a one-layer hash map with key (gid, tag).
  • Remove variant and associated polymorphism, replace by switch.
  • Remove the partition from range_set and use linear search.
  • Make resolver able to reset, avoiding re-allocation

thorstenhater added a commit that referenced this pull request Apr 30, 2025
Builds on #2447. 

Further clean-up of infrastructure in `communicator` and `event_stream`.
Reduce intermediate datastructures
on the CPU side. Host memory is a critical resource during large (GPU)
benchmarks.

### connection update

Eliminates intermediate host-side array of `cell_connections` and builds
`connections` directly.
Outlined a few ideas wrt to parallelisation.

### spike delivery

Eliminate intermediate list of spikes in event delivery and push events
directly into streams.
Traverse streams in time-order.
@thorstenhater
Copy link
Contributor Author

Merged via #2449

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant