Skip to content

WIP: CPU network SoA dual-write (not for merge) - #3822

Draft
nrnhines wants to merge 20 commits into
masterfrom
local/cpu-network-soa
Draft

WIP: CPU network SoA dual-write (not for merge)#3822
nrnhines wants to merge 20 commits into
masterfrom
local/cpu-network-soa

Conversation

@nrnhines

Copy link
Copy Markdown
Member

Status: Work in progress — do not merge to master

Exploratory stack for CoreNEURON-shaped network data on the NEURON CPU side. Intended as a durable review/reference branch, not a landable feature PR.

Planned follow-on branch (later): hines-grok/cpu-net-soa-heap-free (or similar), forked from this work after dual-write+sort, to drop long-lived NetCon::weight_ under a defined ABI plan.

GPU native (later, undetermined order relative to master): spike queue + threshold → net_send buffer on GPU; NET_RECEIVE net_send on GPU; ARTIFICIAL_CELL net_send stays CPU; distribute via net_receive buffer. Whether heap-free lands on master before that GPU track is undecided.

What this PR contains

  • Phases 0–4 dual-write: PointProcess, Weight, NetCon, PreSyn SoA; SelfEvent weight_index
  • Network containers in nrn_ensure_model_data_are_sorted (thread packing, weight-block contiguity, fanout rebuild)
  • SaveState / BBSaveState dual-write (SoA values + NetCon-index SelfEvent identity)
  • Developer docs: doc/network-soa/ (topology, heap policy, sort) + GROK-NETWORK-SOA.md + doc/network-soa-phase0.md

Explicitly not in this PR

  • Freeing NetCon::weight_ (nocmodl still needs long-lived MOD scratch for net_send(..., _w) / FOR_NETCONS / INITIAL)
  • GPU net buffers / native GPU network
  • Thin remote InputPreSyn / gid→fanout redesign
  • Performance claims vs NEURON 8.2.7 or CoreNEURON (benchmark plan to be separate)

Docs for reviewers

Start at doc/network-soa/README.md.

Test plan

  • Full ctest -j 8 on author machine (post-regression fixes)
  • CI (when draft is marked ready or CI runs on draft)
  • Future: ringtest / space / time vs NEURON 8.2.7, this branch, CoreNEURON (linux + Apple M1)

Loading
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.

2 participants