Skip to content

Releases: getkeops/keops

v2.2.3

14 Apr 08:23
Compare
Choose a tag to compare

See CHANGELOG.md

v2.2.2

09 Feb 16:50
Compare
Choose a tag to compare

See ChangeLog.md

v2.2.1

25 Jan 13:18
Compare
Choose a tag to compare

See CHANGELOG.md

v2.2

18 Jan 17:43
Compare
Choose a tag to compare

version 2.2, see CHANGELOG.md

v2.1.2

11 Apr 09:25
Compare
Choose a tag to compare
release of v2.1.2

v2.1.1

09 Jan 16:41
Compare
Choose a tag to compare
  • Fixes for issues #220, #263, #256, #266, #275, #262, #282
  • Fixed an error caused by a compile warning on recent MacOs systems.
  • Added an official image on DockerHub and updated instructions for Singularity and Docker.

v2.1

07 Jun 11:46
Compare
Choose a tag to compare
version 2.1

KeOps 2.0 is now available

18 Mar 10:52
Compare
Choose a tag to compare

Major improvements for the compilation engine

We have fully rewritten the KeOps compilation engine to make it faster, lighter and easier to deploy.

The old KeOps engine was:

  • Written using (or abusing…) the C++ templating syntax.
  • Hard to debug, with cryptic compilation error stacks.
  • Hard to extend, with verbose C++ meta-programming tools.
  • Slow, with 5s-20s of compilation time per KeOps reduction.
  • Hard to deploy with dependencies on CMake and the full CUDA environment (nvcc).

In sharp contrast, the new KeOps engine is:

  • Written in Python, using straightforward string manipulation syntax.
  • Easy to inspect and debug, since the engine creates a human-readable, template-free C++ file for every new “KeOps reduction”.
  • Easy to extend, with a much lighter code base.
  • Fast, with <0.5s compilation times for GPU reductions.
  • Easy to deploy: KeOps only requires a c++ compiler (g++, clang) and, on the GPU, nvrtc headers that are provided by the CUDA drivers.

There should be no downsides to this transition. Notably, we intend this new release to be 100% backward-compatible. If your code breaks with the shift from KeOps v1.5 to KeOps v2.0, please open an issue on our GitHub repo: transition bugs will have top priority.

What should you expect for KeOps v2.1, v2.2?

The revamp of our compilation engine is a milestone. We hope that it will significantly reduce our maintenance work-load and let us focus on improving the library with new features, performance improvements and a better API.

In 2022-23, we intend to focus primarily on:

  • Introducing a NumPy-compatible API. This will be done without breaking backward compatibility, with a new SymbolicArray wrapper and a numba-like @jit decorator.
  • Add support for approximation strategies: see e.g. the Nystroem and Fast Multipole methods for kernel matrix products, or cluster-based methods for nearest neighbor search.
  • Improving run times on CPU, for both compilation and computation steps.
  • Adding support for Tensor cores, which are becoming increasingly available with Ampere GPUs.
  • Improving support for other languages, especially R and Julia.

In parallel of these improvements, we are working on standard benchmarks for kernel computations and optimal transport solvers.

Feel free to contact us if you would like to join the team, or simply discuss the future of the library.

Other changes

  • Add missing matplotlib in doc build dependencies by @gdurif in #163
  • Add reference to JMLR paper by @gdurif in #160
  • Fix doc by @chloesrcb in #179
  • Rkeops fix keops kernel and more by @gdurif in #183
  • Edit affiliation in readme by @mdiazmel in #188
  • Move keopscore and pykeops into their own sub-directories by @gdurif in #222
  • Rename default branch to main by @gdurif in #228
  • Build script for keopscore and pykeops by @gdurif in #229
  • Improving Jenkinsfile regarding PyKeOps to run tests in dedicated Python environments by @gdurif in #230

New Contributors

Full Changelog: v1.5...v2.0

v1.5

24 Mar 15:50
Compare
Choose a tag to compare
Update the number of loops in the benchmarks.

v1.4.2

27 Nov 16:04
Compare
Choose a tag to compare
update version to 1.4.2