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

Move registration of ConnBuilders, Backends, growth curves from nestmodule to respective managers, allowing unloading #3149

Merged
merged 10 commits into from
Mar 20, 2024

Conversation

heplesser
Copy link
Contributor

This PR is a follow-up to #3103 and should be merged only after it (the set of changes in this one then becomes much smaller). It moves the registration of ConnBuilders, Recording/StimulationBackends and SP growth curves from nestmodule::init() to the initialize() methods of Connection, IO and SP Manger respectively, with corresponding clean-up in the finalize() methods. The actual changes are small, since nestmodule::init() in the past called register_* methods in the respective managers.

Thus, these elements will be unloaded on ResetKernel() and such elements provided by extension modules can be reloaded. Therefore, if at all possible, this should still make it into 3.7 together with #3103.

Parameters and Masks should be re-organizedi in the same way, but they are fully managed by nestmodule and seemingly with a rather complicated approach (parameters are also available as SLI objects), so their transition to the new scheme is more work and needs to wait.

@heplesser heplesser added T: Enhancement New functionality, model or documentation S: High Should be handled next I: No breaking change Previously written code will work as before, no one should note anything changing (aside the fix) labels Mar 12, 2024
@heplesser heplesser added this to the NEST 3.7 milestone Mar 12, 2024
@heplesser
Copy link
Contributor Author

@pnbabu @terhorstd #3149 is now ready for review as #3103 has been merged. Two comments:

  • In io_manager.cpp I have moved initialize() and finalize() forward in the file so that they appear right after constructor and destructor, as in the code for other managers.
  • In KernelManager, io_manager must be initialized before model_manager as registration of stimulation and recording device models requires that the backends are registered.

Copy link
Contributor

@pnbabu pnbabu left a comment

Choose a reason for hiding this comment

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

Looks good to me.

Copy link
Contributor

@terhorstd terhorstd left a comment

Choose a reason for hiding this comment

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

LGTM 👍

@terhorstd terhorstd merged commit a08a8b8 into nest:master Mar 20, 2024
24 checks passed
@heplesser heplesser deleted the new_registration branch April 24, 2024 20:43
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
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants