-
Notifications
You must be signed in to change notification settings - Fork 3
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
Improve SOAP runtime #124
base: master
Are you sure you want to change the base?
Improve SOAP runtime #124
Conversation
We were calling astropy every time we wanted the age of a stellar particle. I've move to using a lookup table. I verified it should be accurate using the following script
|
I changed the documentation so that properties now link to any footnotes they have |
I removed a redundant sort from SO_properties which I had introduced for the concentration calculation. |
I've switched off iterative calculation of inertia tensors for the time being, although we may instead use a subsample of the particles to determine the inertia tensor. |
I have merged in #126, which allows for SOAP to restart. I have updated the property table and parameter files so that filters (e.g. basic, general, stars) are now specified in the parameter file. I'm removed some leftover VR FOFSubhalo code |
I'm now sorting halos on each chunk so that the largest objects are processed first |
For projected apertures and exclusive spheres we were often recomputing properties using the same particles each time. This occurred for small subhalos, where their EncloseRadius (the distance from the halo centre to the furthest particle) was smaller than multiple apertures (e.g. if EncloseRadius=30kpc, then the 50kpc & 100kpc ExlcusiveSpheres would be the same). In these cases we now just copy across the values from the previous aperture, as they would be the same. There is one wrinkle, which is that the area of the circle we use for calculating the COLIBRE has quite a large number of high z snapshots. This means we were spending a lot of time on InclusiveSpheres. I've added a parameter that allows halo to be skipped if the InclusiveSphere is larger than the EncloseRadius. This parameter defaults to False, but we will set it to True for COLIBRE. |
I added a modulus to the COM calculation, since we were getting some values outside the box. I merged Victor's script for creating symmetric matrices from the flattened ones we store in SOAP (#103). I'm about to reorganise the repo, and want to group all the auxiliary scripts together |
I've made the I've added a FLAMINGO VR test |
I had to spread out the files more evenly when loading the HBT catalogues. Load imbalance was causing the group membership script to crash when running on some of the large COLIBRE runs. |
I've changed the compression script to use MPI instead of multiprocessing. This was required for the 2p8 flamingo catalogues. I've added more information to the README about how to run the compression. |
SOAP is taking a long time to run on COLIBRE. This PR adds some recording of how long we are spending processing each subhalo, and which properties are dominating the runtime. I will try and add comments for any speedups I add.
For satellites (for which we skip SO properties) we were still checking if the load region around them dropped below the target density of the lowest density SO. This had a significant effect on runtime, especially for high resolution COLIBRE runs where we identify lots of substructure.
EDIT There's a bunch of other changes here too, but they're all described by the comments. I'd like this branch to be the one that we use when we publish the SOAP paper. TODO before then: