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

Synaptic delays in Dense Process #237

Closed
6 tasks done
a-t-0 opened this issue Apr 1, 2022 · 4 comments · Fixed by #624
Closed
6 tasks done

Synaptic delays in Dense Process #237

a-t-0 opened this issue Apr 1, 2022 · 4 comments · Fixed by #624
Assignees
Labels
1-feature New feature request area: proc Issues with something in lava/proc
Milestone

Comments

@a-t-0
Copy link
Contributor

a-t-0 commented Apr 1, 2022

User story

As a user, I want to be able to specify synaptic delays in the Dense Process to enable algorithmic work.

Note: @a-t-0 suggests dense = Dense(.., delay=5) as an interface to generate a synaptic connection that induces a delay of 5 timesteps before submitting a spike to the output neuron.

Note: A PR has already been filed by another external community member.

Conditions of satisfaction

  • User is able to specify a single synaptic delay for all synapses at the Process level.
  • User is able to specify different synaptic delays for all synapses at the Process level.
  • Synaptic delays are implemented in ProcessModels (float and bit accurate model) for Python CPU compute resource.

Acceptance tests

  • Specifying a single synaptic delay for all synapses for float/bit accurate
  • Specifying a delay matrix for the synapses for float/bit accurate
  • Input validation tests (empty matrix/list, negative values, etc.)

Tasks

Excerpt from original issue by @a-t-0

  • If there is a work-around to simulate a synaptic delay among LIF neurons, please let me know, it would be valuable until the delay is implemented. I thought perhaps including an array of neurons and synapses between the input and output neuron of the Dense() object, might be able to simulate the delay. Alternatively, perhaps there exist other objects that do support the delay between LIF neurons.
  • If you have suggestions on where to start implementing a delay for the Dense() object, and or relevant dependencies, please do share.

Thank you everyone for your work on this wonderful platform!

@a-t-0 a-t-0 changed the title Implementing synaptic delay in Dence() object. Implementing synaptic delay in Dense() object. Apr 1, 2022
@kds300
Copy link
Contributor

kds300 commented May 26, 2022

Hello,

I have been working on implementing synaptic delays for lava, and have a working version of it. Instead of directly modifying the Dense() process, I copied the code for that and made a modified I called Delay(). I use a 2D matrix of delays similar to how the weights are input into the Dense() process. I'd be more than happy to share the code that I have so far, and submit a pull request for implementing it once it is finished (it still needs to be tested and optimized).

@awintel
Copy link
Contributor

awintel commented May 26, 2022

This sounds great. We haven't been able to prioritize support for delays ourselves so far. Thus we are glad that community members are adding new such features.
Submitting a PR is the way to move this forward. Once submitted, members of our team will take a look and give feedback on the PR. It might make sense to either factor our shared code with DENSE or simply merge it with DENSE.

@mgkwill mgkwill added reviewed-approved area: proc Issues with something in lava/proc labels Jun 9, 2022
@mathisrichter mathisrichter added 1-feature New feature request 0-needs-review For all new issues and removed 0-approved labels Jan 3, 2023
@mathisrichter mathisrichter linked a pull request Jan 23, 2023 that will close this issue
16 tasks
@mathisrichter mathisrichter changed the title Implementing synaptic delay in Dense() object. Synaptic delays in Dense Process Jan 23, 2023
@mathisrichter mathisrichter added 0-needs-estimate Issue needs to be estimated with story points and removed 0-needs-review For all new issues labels Jan 23, 2023
@PhilippPlank PhilippPlank assigned weidel-p and PhilippPlank and unassigned gkarray and weidel-p Feb 7, 2023
@mathisrichter mathisrichter removed the 0-needs-estimate Issue needs to be estimated with story points label Feb 7, 2023
@frothga
Copy link

frothga commented Feb 7, 2023

Here are some things I'd like to add to the user story:

  • Support for sparse connectivity, not only dense.
  • The minimum delay is 1 cycle (rather than a larger number like 2), both when running as software simulation and while running on neuromorphic hardware.
  • Depth of delay is arbitrary. The compiler finds the most efficient way to implement long delays and handles mixed delays off a single neuron.

@PhilippPlank
Copy link
Contributor

@frothga Thanks for the suggestions. These features will not be part of this story, but we will add them to existing user stories or create new ones.
We are currently implementing support for delays in software simulation for Dense as a start.

@PhilippPlank PhilippPlank linked a pull request Feb 15, 2023 that will close this issue
16 tasks
@mathisrichter mathisrichter added this to the Lava v0.7.0 milestone Feb 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1-feature New feature request area: proc Issues with something in lava/proc
Projects
None yet
10 participants