Skip to content

Latest commit

 

History

History
29 lines (19 loc) · 1.76 KB

File metadata and controls

29 lines (19 loc) · 1.76 KB

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=True can 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.py are 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.