Hi @glunkad,
Can you provide more details on the current state of the project and the specific optimization techniques that will be used to improve the computations?
Here’s the link to the Github repo implementing the O-info. You’ll see inside that there are two implementations: one using NumPy and a second using Jax. We are really interested in optimizing the Jax one as it should work on both C/GPU. We also included a few essential scientific papers describing the math behind the O-info. As a first optimization step, we removed some loops by using a tensor-based implementation of the entropy. Additional ideas for optimizing the code:
- Go back to a more simple vector-based entropy and use jax.vmap instead?
- Some entropies are computed several times. Could we cache them without increasing too much the memory requirements?
- @Daniele_Marinazzo has a Matlab implementation of the O-info with additional features like selecting the most relevant multiplets using bootstrapping. This is something that is missing in the current implementation
Also, how will the project’s success be measured, and what skills or experiences are required for a successful contribution to this project?
For the required skills/experiences, it depends. The optimization requires advanced coding and linear algebra skills. Intermediate skills are required to write unit tests, improve the documentation, or find ways for plotting the results. Good question for the success of the project. If we have everything to include this O-info function (i.e. unit test, doc, a switch NumPy/jax without forcing Jax as a fixed requirement of the package) inside the Frites package, it would be a very successful project.
Thank you for your interest in the project,