Fastcsp updates performance updates#1971
Open
lbluque wants to merge 5 commits intofastcsp_updatesfrom
Open
Conversation
lbluque
commented
Apr 18, 2026
| angle_tol: float = 5, | ||
| remove_duplicates: bool = False, | ||
| root_unrelaxed: Path | None = None, | ||
| num_cpus: int = 70, |
Contributor
Author
There was a problem hiding this comment.
We should not hard-code 70 here. Better to take that from the config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Performance and parallelism improvements for the FastCSP workflow.
Per-Z parallelism in filtering:
filter.pynow submits one SLURM job per (molecule, Z-value) pair instead of one per molecule. Since structures with different Z values can't match during deduplication, this is semantically correct and dramatically increases parallelism for molecules with many structures. Per-Z results are concatenated afterward.Per-Z parallelism in Genarris processing:
process_generated.pyrestructures job submission to iterate per Z-value directory (mol/conf/z) rather than per conformer. Structure-to-row conversion is now parallelized viap_mapinstead of a sequential loop. CIF-to-structure conversion in filtering also switched from serial.apply()top_map.Proper CPU propagation:
num_cpusis now threaded through from SLURM config toswifter,p_map, and connectivity validation calls (previously hardcoded to 70 or 1). Eval SLURM defaults bumped from 1 CPU / 10 GB to 16 CPUs / 64 GB.Minor: Fixed parquet file discovery filter logic in
eval.py(suffix check before name check), formatting cleanups.Performance Benchmark Report
Environment
/home/lbluque/test-free-energyfastcsp_updates(baseline) vsfastcsp_updates_perf(optimized)Total End-to-End Improvement
baseline-sequential vs perf-parallel (full improvement)
Notes
multiprocessing.Poolwith CPU affinity pinning