Skip to content

Split cores#1558

Merged
rowleya merged 51 commits intomasterfrom
split_cores
May 9, 2025
Merged

Split cores#1558
rowleya merged 51 commits intomasterfrom
split_cores

Conversation

@rowleya
Copy link
Member

@rowleya rowleya commented May 2, 2025

This integrates the execution of neuron code and synapse code on separate cores more completely, making it nicer for the user to use. This includes:

  • The user can choose to set a number of synapse cores for a model (like the number of neurons per core)
  • The user decide whether they want to allow delay extensions or not for a model (as above)
  • The user can control the number of neurons per core, synapse cores and allowing of delay extensions when creating populations.
  • The user can use 0.1ms timesteps in realtime without having to add an option to the configs.
  • The code will try to work out whether to use synapse cores and how many synapse cores to use if so, and whether to allow delay extensions.

What it doesn't do:

Requires:

Tested by:

Copy link
Member

@Christian-B Christian-B left a comment

Choose a reason for hiding this comment

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

remove one _n_synapse_cores and one _allow_delay_extensions

db.insert_version("lazyarray_version", lazyarray_version)

# Clears all previously added ceiling on the number of neurons per core
AbstractPyNNModel.reset_all()
Copy link
Member

Choose a reason for hiding this comment

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

Not needed as also called by AbstractPyNNNeuronModel.reset_all()

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, I wasn't certain if that actually did the right thing; I guess that is true though!

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed now

@abstractmethod
def synapses_per_second(self) -> int:
"""
Approximate number of synapses that can be processed per second
Copy link
Member

Choose a reason for hiding this comment

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

Would be good to add a comment about which it does under estimate, over estimate or as close as possible.

Copy link
Member Author

Choose a reason for hiding this comment

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

Added

Copy link
Member

Choose a reason for hiding this comment

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

Should that not be the other way around. Underestimating will create a system that can not handle the received spikes

Copy link
Member Author

Choose a reason for hiding this comment

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

No, if you underestimate how many spikes you can process, you can process more than you estimate - that is, your estimate is under what you can really handle. If you overestimate you are guessing you can do more than you really can, so more spikes will be sent to you than you can handle.

Copy link
Member

@Christian-B Christian-B left a comment

Choose a reason for hiding this comment

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

can be merged when green

@rowleya rowleya merged commit ad93cf0 into master May 9, 2025
13 checks passed
@rowleya rowleya deleted the split_cores branch May 9, 2025 06:34
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