Appendix D: Performance Expectations
This guide helps researchers and scientists understand the computational resources required when working with large-scale PyEQSP partitions.
Scaling Laws
PyEQSP is optimized to handle millions of regions on standard hardware.
Operation |
Complexity |
Expectation |
|---|---|---|
Partition Generation |
\(O(N^{0.6})\) |
Millions of regions in minutes on \(S^2\). |
Min-Distance |
\(O(N \log N)\) |
Seconds for \(N=100,000\). |
Packing Density |
\(O(N \log N)\) |
Near-instant results for research-grade \(N\). |
Riesz Energy |
\(O(N^2)\) |
Under 15 seconds for \(N=50,000\). |
Memory Safety
PyEQSP uses tiling and block-based summation to ensure that large calculations do not exhaust your system RAM.
Energy Calculations: Calculating interaction energy for 20,000 points would normally require ~3.2 GB of RAM for the distance matrix. PyEQSP processes these in small “blocks,” keeping the peak memory footprint low and linear.
Vectorization: Most operations are performed using NumPy’s vectorized paths, ensuring high-speed execution even when \(N\) exceeds one million.
High-Dimensional Considerations (\(S^3\) and above)
As the dimension increases, the recursive depth of the algorithm grows.
Symmetry Speed-up: Using
even_collars=Truecan speed up calculations on \(S^3\) by enabling a 100% cache hit rate for the southern hemisphere.Parallelization: Scripts like
fig_3_7_max_diam_multi_dim.pyare already parallelized to handle the increased complexity of higher dimensions (up to \(S^8\)).
For technical details on the underlying optimizations (KDTrees, Symmetry exploitation, and Process Pools), see the Algorithmic Optimizations guide.