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

Separate event transmission and event delivery for better performance in high-thread situations #2617

Closed
wants to merge 106 commits into from

Conversation

heplesser
Copy link
Contributor

This is a draft PR to integrate the revision of event transmission from the "5G" approach to close to what we had in "4G" (until NEST 2.14). Briefly, the events are now gathered at the end of each update loop and MPI-communicated, and then delivered at the beginning of the next update loop.

At present, all kinds of events are supported again (SpikeEvent on and off grid, SecondaryEvent), but test_mini_brunel_ps.sli fails if NEST is compiled with GCC 12. When compiling with Clang 13, the test passes. This indicates most likely some incorrect memory access. Failure is deterministic with spike times depending on the mpi-thread split. Results are correct for a single MPI process (four threads).

To get more insight into where things go wrong, I attempted to build NEST with

-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC -fsanitize=address

As long as the *DEBUG* options were in place, g++ emits error messages concerning overridden deleted functions in the SecondaryEvent class hierarchy, which left me entirely confused, so I dropped them. With just -fsanitize=address, NEST builds but segfaults on start with a stack trace indicating that the problem occurs even before NEST itself starts. @med-ayssar and @JanVogelsang, could you two take a look at this?

Once this problem is solved, a number of this remain. I will comment on them later in this issue.

I consciously add many reviewers just to make sure you are in the loop.

suku248 and others added 30 commits March 7, 2022 21:49
…ther_spike_data

Ensure thread-local memory allocation
…om:suku248/nest-simulator into test_single_threading_in_gather_spike_data
…m:suku248/nest-simulator into single_batchwise
…single_threading_in_gather_spike_data

Conflicts:
	nestkernel/event_delivery_manager.cpp
@github-actions
Copy link

Pull request automatically marked stale!

@github-actions github-actions bot added the stale Automatic marker for inactivity, please have another look here label Jun 10, 2023
@heplesser
Copy link
Contributor Author

Closing this PR. It is superseeded by #2926.

@heplesser heplesser closed this Sep 7, 2023
@heplesser heplesser deleted the deliver_events_first branch September 15, 2023 17:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I: External API Developers of extensions or other language bindings may need to adapt their code S: High Should be handled next stale Automatic marker for inactivity, please have another look here T: Enhancement New functionality, model or documentation
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

6 participants