Corrfunc: Blazing fast correlation functions with AVX512F SIMD
  Intrinsics
  Correlation functions are widely used in extra-galactic astrophysics to
extract insights into how galaxies occupy dark matter halos and in cosmology to
place stringent constraints on cosmological parameters. A correlation function
fundamentally requires computing pair-wise separations between two sets of
points and then computing a histogram of the separations. Corrfunc is an
existing open-source, high-performance software package for efficiently
computing a multitude of correlation functions. In this paper, we will discuss
the SIMD AVX512F kernels within Corrfunc, capable of processing 16 floats or 8
doubles at a time. The latest manually implemented Corrfunc AVX512F kernels
show a speedup of up to $\sim 4\times$ relative to compiler-generated code for
double-precision calculations. The AVX512F kernels show $\sim 1.6\times$
speedup relative to the AVX kernels and compare favorably to a theoretical
maximum of $2\times$. In addition, by pruning pairs with too large of a minimum
possible separation, we achieve a $\sim 5-10\%$ speedup across all the SIMD
kernels. Such speedups highlight the importance of programming explicitly with
SIMD vector intrinsics for complex calculations that can not be efficiently
vectorized by compilers. Corrfunc is publicly available at
https://github.com/manodeep/Corrfunc/.
