You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
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:
In sharp contrast, the new KeOps engine is:
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:
SymbolicArray
wrapper and a numba-like@jit
decorator.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
New Contributors
Full Changelog: v1.5...v2.0
This discussion was created from the release KeOps 2.0 is now available.
Beta Was this translation helpful? Give feedback.
All reactions