Skip to content

STDP case for busyring benchmark#2489

Merged
thorstenhater merged 13 commits intoarbor-sim:masterfrom
jlubo:test/busyring-stdp
Apr 9, 2026
Merged

STDP case for busyring benchmark#2489
thorstenhater merged 13 commits intoarbor-sim:masterfrom
jlubo:test/busyring-stdp

Conversation

@jlubo
Copy link
Copy Markdown
Collaborator

@jlubo jlubo commented Dec 23, 2025

Adds a STDP case for the busyring benchmark (also cf. here).

@jlubo jlubo requested a review from thorstenhater December 23, 2025 16:34
@thorstenhater
Copy link
Copy Markdown
Contributor

Hi @jlubo,

there are some broken numpy functions in master. Please take a look at #2490 and rebase.

@jlubo jlubo force-pushed the test/busyring-stdp branch from 65a4a3a to 70b84aa Compare January 21, 2026 19:48
@jlubo
Copy link
Copy Markdown
Collaborator Author

jlubo commented Jan 21, 2026

The rebase is done.

Copy link
Copy Markdown
Contributor

@thorstenhater thorstenhater left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. If you want to pull out the config thing into a new PR,
feel free do so. I left a few comments on the rest.

T

Comment thread arbor/version.cpp Outdated
Comment thread example/busyring/ring.cpp
}
};

std::string get_arbor_config_str() {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is usually intended only for use in Python. However, I see the usefulness of providing this to the user at runtime.

Comment thread example/busyring/ring.cpp
Comment thread example/busyring/ring.cpp

// Add a synapse to proximal end of first dendrite.
decor.place(arb::mlocation{1, 0}, arb::synapse{"expsyn"}, "p");
decor.place(arb::mlocation{0, 1}, arb::synapse{"expsyn"}, "p");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These locations are equivalent soma(1) ~ dend(0).

Comment thread example/busyring/ring.cpp Outdated
Comment thread example/busyring/ring.cpp
Comment thread example/busyring/ring.cpp Outdated
std::uniform_real_distribution<float> delay_dist(0, 2*min_delay_);
auto src_gen = std::mt19937(gid);
for (unsigned i=1; i<ncons; ++i) {
for (unsigned i=0; i<ncons; ++i) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems wrong; we got one connection from the ring, thus n-1 random ones.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah... I've now adapted the synapses parameter to consistently count the random synapses only. So in this sense it should be correct. But I hope this doesn't conflict with any previous uses of busyring? The thing is that this is how it's described in our paper (and also implemented in the coreneuron example). The alternative would be to change the number of synapses in all *.json files.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, it depends ;) Previously, we did count all synapses and all other instantiations of busyring do remain doing so. I'd prefer consistency, if it's ok.

@jlubo jlubo requested a review from thorstenhater February 12, 2026 16:19
Copy link
Copy Markdown
Contributor

@thorstenhater thorstenhater left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you match the synapse count to the protocol of all the other examples? I am a bit worried that using two approaches is confusing.

@jlubo
Copy link
Copy Markdown
Collaborator Author

jlubo commented Apr 8, 2026

Could you match the synapse count to the protocol of all the other examples? I am a bit worried that using two approaches is confusing.

Done. Sorry for the delay. I've now also adjusted the protocol in the related CoreNEURON implementation.

@jlubo jlubo requested a review from thorstenhater April 8, 2026 16:33
Copy link
Copy Markdown
Contributor

@thorstenhater thorstenhater left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@thorstenhater thorstenhater merged commit c053927 into arbor-sim:master Apr 9, 2026
27 of 28 checks passed
thorstenhater added a commit that referenced this pull request Apr 16, 2026
# Preliminary release notes for v0.12

## What's Changed
* V0.11.0 rc by @thorstenhater in
#2454
* Release finalisation by @thorstenhater in
#2455
* CSCS CI by @thorstenhater in
#2448
* Re-factor connection setup and event dispatch. by @thorstenhater in
#2449
* Add tiled busyring by @thorstenhater in
#2456
* Fill in a missing part of the docs by @thorstenhater in
#2462
* Major Optimisations in Label Resolution by @thorstenhater in
#2458
* Refactor domain decomposition by @thorstenhater in
#2457
* Add an escape hatch to label resolution by @thorstenhater in
#2459
* Fix crash on probding elided values by @thorstenhater in
#2466
* Only store PRNG data if needed by @thorstenhater in
#2467
* 🐍 Polish `label_dict` by @thorstenhater in
#2451
* use better builtins for double max/min by @thorstenhater in
#2469
* Remove typed map and refactor cable cell by @thorstenhater in
#2468
* Many small refactoring / clean-ups / memory savings by @thorstenhater
in #2465
* Bump pb11 to latest major version by @thorstenhater in
#2475
* Fix GPU test issues by @ibanezbm in
#2479
* Align versions by @thorstenhater in
#2481
* Add probing of eX. by @thorstenhater in
#2478
* Add trivial compiler test by @thorstenhater in
#2488
* Replace MPI_Allgatherv with MPI_Alltoallv for communication pattern by
@ibanezbm in #2460
* Use CBRNG in schedules. by @thorstenhater in
#2386
* Update year 🎉 by @thorstenhater in
#2491
* Don't use deprecated numpy functions by @thorstenhater in
#2490
* Co-simulation tutorial by @thorstenhater in
#2492
* Nested timers by @marvinKaster in
#2486
* Clean-up iclamp interface by @thorstenhater in
#2494
* Fix override by @thorstenhater in
#2493
* Better use of __restrict__ by @thorstenhater in
#2476
* Add AdEx cells. by @thorstenhater in
#2230
* units in cv policy by @thorstenhater in
#2495
* Flat map in mechanism description for 1.5x speed-up in synapse
creation by @thorstenhater in
#2501
* Perf/compress contiguous by @thorstenhater in
#2470
* Allow more SWC files in the parser by @thorstenhater in
#2471
* STDP case for busyring benchmark by @jlubo in
#2489
* round robin load balance by @thorstenhater in
#2500

## New Contributors
* @ibanezbm made their first contribution in
#2479
* @marvinKaster made their first contribution in
#2486

**Full Changelog**:
v0.11.0...v0.12.0
@thorstenhater thorstenhater mentioned this pull request Apr 16, 2026
thorstenhater added a commit that referenced this pull request Apr 17, 2026
# Release notes

This release constitutes a major improvement in terms of parallel
performance
by replacing the underlying MPI algorithm (see our paper at IPDPS'26)
and
setup time by improving label resolution and adding the access to raw
labels.
On the functional side, we introduced AdEx cells, added a new load
balancing
method, and probes for the reversal potential.

## What's Changed
* V0.11.0 rc by @thorstenhater in
#2454
* Release finalisation by @thorstenhater in
#2455
* CSCS CI by @thorstenhater in
#2448
* Re-factor connection setup and event dispatch. by @thorstenhater in
#2449
* Add tiled busyring by @thorstenhater in
#2456
* Fill in a missing part of the docs by @thorstenhater in
#2462
* Major Optimisations in Label Resolution by @thorstenhater in
#2458
* Refactor domain decomposition by @thorstenhater in
#2457
* Add an escape hatch to label resolution by @thorstenhater in
#2459
* Fix crash on probding elided values by @thorstenhater in
#2466
* Only store PRNG data if needed by @thorstenhater in
#2467
* 🐍 Polish `label_dict` by @thorstenhater in
#2451
* use better builtins for double max/min by @thorstenhater in
#2469
* Remove typed map and refactor cable cell by @thorstenhater in
#2468
* Many small refactoring / clean-ups / memory savings by @thorstenhater
in #2465
* Bump pb11 to latest major version by @thorstenhater in
#2475
* Fix GPU test issues by @ibanezbm in
#2479
* Align versions by @thorstenhater in
#2481
* Add probing of eX. by @thorstenhater in
#2478
* Add trivial compiler test by @thorstenhater in
#2488
* Replace MPI_Allgatherv with MPI_Alltoallv for communication pattern by
@ibanezbm in #2460
* Use CBRNG in schedules. by @thorstenhater in
#2386
* Update year 🎉 by @thorstenhater in
#2491
* Don't use deprecated numpy functions by @thorstenhater in
#2490
* Co-simulation tutorial by @thorstenhater in
#2492
* Nested timers by @marvinKaster in
#2486
* Clean-up iclamp interface by @thorstenhater in
#2494
* Fix override by @thorstenhater in
#2493
* Better use of __restrict__ by @thorstenhater in
#2476
* Add AdEx cells. by @thorstenhater in
#2230
* units in cv policy by @thorstenhater in
#2495
* Flat map in mechanism description for 1.5x speed-up in synapse
creation by @thorstenhater in
#2501
* Perf/compress contiguous by @thorstenhater in
#2470
* Allow more SWC files in the parser by @thorstenhater in
#2471
* STDP case for busyring benchmark by @jlubo in
#2489
* round robin load balance by @thorstenhater in
#2500

## New Contributors
* @ibanezbm made their first contribution in
#2479
* @marvinKaster made their first contribution in
#2486

**Full Changelog**:
v0.11.0...v0.12.0
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