-
Notifications
You must be signed in to change notification settings - Fork 35
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
Require one event at a time #1233
Comments
From @amandalund :
My follow up:
|
@amandalund Why doesn't partitioning by charge help? 😕 (I don't think it helps GPU+G4 since we don't yet pass that option through right?) And is this after #1405? And so this is just the regression problems with and without "merge event"? |
Right, toggling It helps a bit in some cases, but more often seems to hurt... I'm not really sure why that is yet. EDIT: Same plot as above but with 4x the number of track slots: |
Ok @sethrj good news: I played around with different numbers of tracks slots, and increasing this number does improve performance. I added plots above using 4x as many track slots. With more slots the partitioning does help, and continues to help relatively more the larger the state size gets (though the overall performance gets worse past a certain point), so could be that with a larger state we get less mixing for longer. |
@amandalund To maintain the memory limits (especially with CMS and on V100) I have the runner script reduce the number of track slots when EDIT: and on an unrelated note, do you mind setting |
2^18 track slots and 1300 primaries per thread (I know for celer-sim we do that division in the |
Oh ok that's great, I was afraid that was with the 2^20 number . |
Currently track IDs are constructed within an event based on an atomic counter. Even though the results (track slots, etc.) are reproducible across runs, the individual track IDs are not: so you can't dig into a particular history using an a priori track ID. We could simplify reproducibility by requiring all tracks in flight to be from the same event (i.e., the usual way we integrate into Geant4).
This also would eliminate the need for
max_events
(#1058). We could store the single event ID on the "core state" object since we don't need access to it on GPU. This would also reduce the memory requirements bysizeof(int) * (initializers.size() + state.size())
.The text was updated successfully, but these errors were encountered: