Corrfunc — Blazing Fast Correlation Functions Now on the GPU

CI: – Dr. Manodeep Sinah

Correlation functions of galaxies have now been used to constrain the underlying matter density for many decades. A correlation function can answer a broad set of questions, ranging from precise values of cosmological parameters to how galaxies populate dark matter halos. Broadly speaking, a correlation function requires computing the pairwise separation for all pairs between two sets of points. Thus, computing a correlation function scales as O(N^2); and as the galaxy surveys (or theoretical models) get bigger, the required computing time becomes a bottleneck for the analysis pipeline. Such a computing bottleneck already exists for current galaxy surveys like the Dark Energy Survey (DES, 100’s of millions of galaxies) and is expected to become acute for future surveys with billions of galaxies using Large Synoptic Survey Telescope (LSST) and Square Kilometre Array (SKA). To alleviate this issue, we propose to add GPU kernels to the open-source, highly optimized correlation function package – Corrfunc. Corrfunc has already been adopted widely by the international research community and the corresponding entry for Corrfunc has been cited more than a dozen times in the past year. Computing all pairwise separations is effectively a matrix-matrix multiplication and given how GPU Basic Linear Algebra Subprograms (BLAS) libraries massively outperform the CPU BLAS libraries, we expect significant speedups by porting the Corrfunc code to GPUs. In this proposal, we are requesting for ADACS to provide the GPU kernel for an existing pair-counting code within Corrfunc, and the associated compilation and testing framework required to ensure correctness and ease-of-use.