Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exponential lookup tables for homogenous STDP synapses #3247

Draft
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

otcathatsya
Copy link
Contributor

@otcathatsya otcathatsya commented Jul 9, 2024

Updated implementation of lookup tables for exponential computations in homogenous STDP synapses (original commits by @suku248 @jarsi), for now just applied to stdp_pl_synapse_hom. There are a few potential concerns:

  • Ideally we'd be able to keep ArchivingNode as a common base class and support both (potentially) precise spike times as well as size_t-implemented grid steps, but due to the way history is stored this is impossible without costly conversion on multiple occasions. A dynamic polymorphism approach + conversions was implemented, but did considerably worse in benchmarks (albeit still better than the baseline, see figures below)

  • Since we now require a separate archiving node (could be a static template impl but that also has minor overhead), we also need to duplicate the nodes that support homogenous STDP synapses; we introduced iaf_psc_alpha_hom. A better solution would probably require a restructuring for the way archivers are implemented, e.g. as pointers.

  • Some tests still need minor fixes (SLI help required)

In the figures below, "plain" is an implementation that just replaced existing structures for testing purposes while "separate" is the current version with duplicated classes, they are both listed as a sanity check and performance should be the same. "Converted" uses a templated histentry and conversion approach in archiving node. Std and mean values taken over 3 rng seeds.
exp_tables
exp_tables_2

@otcathatsya otcathatsya added the T: Enhancement New functionality, model or documentation label Jul 9, 2024
@clinssen clinssen self-requested a review July 9, 2024 13:59
@JanVogelsang JanVogelsang self-requested a review July 9, 2024 15:06
@JanVogelsang JanVogelsang added S: Normal Handle this with default priority I: No breaking change Previously written code will work as before, no one should note anything changing (aside the fix) S: High Should be handled next and removed S: Normal Handle this with default priority labels Jul 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I: No breaking change Previously written code will work as before, no one should note anything changing (aside the fix) S: High Should be handled next T: Enhancement New functionality, model or documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants