63 research outputs found
manodeep/Corrfunc: Corrfunc-2.0.0
<p>New Features:</p>
<ul>
<li>Cleaner API: Ability to handle both <code>doubles</code> and <code>floats</code> at runtime</li>
<li>Runtime feature control - the output of all the codes can now be changed at runtime. Previously, even to simply output <code>ravg</code> required a complete recompilation of the package. </li>
<li>Weighted correlation functions (with arbitrary weighting functions) will be handled by <strong>all</strong> correlation routines. (Implemented by @lgarrison )</li>
<li>Automatic detection of CPU: no more illegal instructions and runtime errors</li>
<li>Future-compatible: The libraries should (hopefully) be binary compatible with future versions. </li>
<li>Documentation: Read all of the API at <a href="http://corrfunc.rtfd.io/">corrfunc.rtfd.io</a></li>
</ul>
manodeep/Corrfunc: Corrfunc-2.0.1
<p>Minor updates, mostly related to user experience:</p>
<ul>
<li>New doc pages about <code>weights</code></li>
<li>New doc page with a detailed table for all the available clustering statistics and the interfaces</li>
<li>Directory structure now is more self-explanatory</li>
</ul>
manodeep/Corrfunc: Corrfunc-2.3.0
<strong>Breaking Changes</strong>
<p>None</p>
New features
<ul>
<li>AVX512F kernels for all pair-counters [#167, #170, #173]</li>
<li>Faster code from new optimizations using the minimum separation between pairs of cells [#170, #173]</li>
<li>Option to use the input particle arrays directly and not make a copy of the particle positions [#173]</li>
<li>Internal code changes to (hopefully) achieve better OpenMP scaling [#173]</li>
</ul>
Bug fixes
<ul>
<li>Fix segmentation fault in vpf_mocks [#168]</li>
<li>Fix automatic uniform weights array when only one set of weights (or a scalar) is passed [#180]</li>
<li>Fix memory leak due to Python reference leak when using weights [#181]</li>
</ul>
Corrfunc: Corrfunc-0.2.0
<p>Latest version that is mostly ready for publishing. Can not upload to PYPI though since the tar.gz file is too large (~100 MB, limit is ~40 MB). </p>
manodeep/Corrfunc: Corrfunc-2.1.0rc1
New
<ul>
<li>New pair counters for <code>DD(s, mu)</code> in <a href="http://corrfunc.readthedocs.io/en/master/api/Corrfunc.theory.html#module-Corrfunc.theory.DDsmu" title="DDsmu">theory</a> and <a href="http://corrfunc.readthedocs.io/en/master/api/Corrfunc.mocks.html#module-Corrfunc.mocks.DDsmu_mocks" title="DDsmu_mocks">mocks</a> (see PR #132) </li>
</ul>
Improvements
<ul>
<li>Failed <code>doctests</code> now cause the build to fail</li>
<li>The testing harness can now run tests all combinations of code options for any given kernel</li>
<li>API now converts arrays into native-endian format (see Issue #140)</li>
</ul>
manodeep/Corrfunc: Corrfunc-2.4.0
2.4.0 (2021-09-30)
This release adds the boxsize parameter to the command line interfaces and
requires the user to specify the box size in the Python interfaces to the periodic
theory functions. It also contains a number of performance, code-quality, and
user-experience improvements.
Breaking Changes
Require user to specify boxsize rather than automatically detect particle
extent in periodic theory boxes. Applies to Python, command line, and C API.
The order of some Python keyword args has also changed. [#199]
Enhancements
In the theoretical VPF calculation (theory.vpf), the total volume of the random spheres can now exceed the volume of the sample [#238]
Gridlink (the binning of particles into cells) now uses a parallel algorithm for the theory module [#239]
Add detection of known-bad Cray hugepages library at NERSC [#246]
Replace np.float with np.float64 to fix numpy 1.20 deprecation [#250]
Test Numpy versions as old as 1.14 and recent as 1.20 [#251]
Add lscpu and preprocessor defs to CI output [#259]
Bug fixes
Fix Python reference leak to results struct [#229]
Fix parsing error when periodic=False and boxsize not given in the theory module [#257
Corrfunc: Now supports python 3
<p>All tests run and pass on my linux and OSX boxes; however, on linux tests work on Travis CI. </p>
<a class="anchor" href="#improvements"><span class="octicon octicon-link"></span></a>Improvements
<ul>
<li>Both python 2 and python 3 supported out of the box</li>
<li>Conda relative path issues on OSX + conda python are now fixed</li>
</ul>
<a class="anchor" href="#requirements"><span class="octicon octicon-link"></span></a>Requirements
<ul>
<li>gsl </li>
<li>numpy (tested with 1.9)</li>
</ul>
<a class="anchor" href="#notes"><span class="octicon octicon-link"></span></a>Notes
<p><strong>USE_AVX</strong> is now disabled by default in common.mk. Be sure to enable it if your cpu+compiler supports it. </p>
Corrfunc: Corrfunc-2.0.0
<p>New Features:</p>
<ul>
<li>Cleaner API: Ability to handle both doubles and floats at runtime</li>
<li>Runtime feature control - the output of all the codes can now be changed at runtime. Previously, even to simply output ravg required a complete recompilation of the package. </li>
<li>Automatic CPU instruction set support detection: no more illegal instructions and runtime errors</li>
<li>Future-compatible: The libraries should hopefully be binary compatible with future versions. (This will be changed to backwards-compatible in the future</li>
<li>Documentation: Read all of the API at <a href="http://corrfunc.rtfd.io/">corrfunc.rtfd.io</a>
</li>
</ul>
Corrfunc: Possibly last beta version before full release
<p>Compilation+linking should work out of the box assuming gcc, gsl, python>=2.6, numpy>=1.7 are available in path. </p>
More Usable Flops per Watt: A Story About a Highly-optimized Correlation Function Code
Galaxy clustering is determined by a combination of cosmological parameters, non-linear gravitational collapse, and the physics of galaxy formation. Consequently, comparing the observed and predicted correlation functions provides a stringent test for galaxy formation theories as well as precise values of cosmological parameters. However, quantifying the clustering strength requires computing pair-wise separations -- an inherently quadratic process. Since large galaxy surveys, and consequently the theoretical models, contain millions of galaxies, computing the correlation function becomes a bottleneck in the analysis pipeline. With upcoming surveys like Large Synoptic Survey Telescope and the Square Kilometre Array (SKA), the number of detected sources will increase many-folds, and will exacerbate the bottleneck. I will show that software tuned to the underlying CPU hardware can speed up the calculation by almost two orders of magnitude. For modern CPUs, such a tuning involves proper utilization of the cache hierarchy, vectorized code targeting the Single Instruction Multiple Data (SIMD) capable wide vector registers as well as many-core parallelization. Here I present Corrfunc -- a suite of OpenMP-parallelized clustering codes that exploit current CPU micro-architecture with custom Advanced Vector Extensions (AVX) and Streaming SIMD Extensions (SSE) intrinsics. Corrfunc can compute a variety of correlation functions for source positions in either a Cartesian geometry (i.e., generated from cosmological simulations) or for positions on the sky. The algorithm within Corrfunc can be easily adapted to a variety of different measurements and has already been implemented for nearest neighbour searches, group finding in galaxy surveys, weak lensing measurements etc. By design, Corrfunc is highly optimized and can compute wprp for mathcal{O}(1 million) galaxies in ~ 6 seconds on a post-2011 CPU, which is at least a factor of few faster than existing public correlation function routines. Corrfunc is covered by a suite of tests, extensive documentation and is publicly available at https://github.com/manodeep/Corrfunc
- …
