Updates to polyjam (2.0)

Updates to polyjam (2.0)

ChatGPT is certainly impressive and showing sparks of AGI. However, this does not mean that we should now stop the pursuit of deterministic, non-learning based solutions to problems, which show the following strong advantages:

  • No exhaustive / expensive datasets needed for training.
  • Less demanding in terms of computing resources.
  • Potential for accurate, non-iterative and optimal solutions to complicated nonlinear problems.
  • Most importantly: Based on a clear understanding of a problem valid under known assumptions.


We are therefore glad to announce some important updates to our open-source polynomial solver generator polyjam, a gem that has been somewhat dormant for a while, but that we have recently rediscovered for some of our recent research on neuromorphic sensing.

In a nutshell: polyjam is a C++ library for the automatic generation of highly efficient C++ code. The generated code implements Gr?bner basis / Action matrix solvers for multi-variate polynomial problems, and has been helpful in the development of the OpenGV library. The library strongly follows the seminal method originally proposed by Zuzana Kukelova et al.(Automatic generator of minimal problem solvers, ECCV 2018) extended by a few tweaks. For anyone interested, a solid entry point into the field of computational algebraic geometry is given by Cox et al.’s book “Ideals, Varieties, and Algorithms”, which saved me already during my PhD.

Here is a summary of how the framework works (it involves three separate compilation processes because the generator library is pre-compiled and the actual user-defined code for calling the generator is also a compiled piece of code rather than just a script fed to the generator):

No alt text provided for this image

Short summary of updates in version 2.0:

  1. Moved to C++11 compliant code (Kudos to my students Su Hang and Gao Ling for the efforts). Yes I know that it is not yet implementing move semantics, we will add that in a next iteration.
  2. Fully automatic pre-elimination of the original coefficient matrix. This removes a major flaw in the previous version, where pre-elimination often still had to be coded by hand.
  3. Cleaning up code to now allow much more flexibly for different levels of visualization and meta data output (the final monomials, the final shape of the elimination template etc.).
  4. Improvement of the main generator interface, which now allows for a much simplified access to a symmetry-aware solver generator as proposed by Larsson et al.
  5. Cleaning up of test examples, which now work out-of-the-box.

List of the existing super-cool features of polyjam:

  1. Fully independent SAS (Symbolic Computer Algebra) system implemented in C++.
  2. Supports matrix operations.
  3. Supports four different fields (R, Q, Zp, and Symbolic).
  4. Supports smart symbolic variable names (e.g. f[…] for a variable that will later on be indexed by a vector f).
  5. Supports polynomials with double field representation (e.g. Zp and Symbolic), which helps to generate random polynomial problems in Zp but also-combined with its smart symbolic variable names-allows for the automatic generation of code to generate the polynomial coefficients from meaningful input variables).

We are still working on efficiency improvements and a further simplification of the interface and additional features, so stay tuned for more updates.

Yiqi Zhou

AI Dataset Provider | Data Collection | Annotation | NLP | Data intelligent processing platform | AI Technology

1 年

Laurent, thanks for sharing!

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了