Should the Eigen-unsupported modules be avoided?
Asked Answered
M

2

6

The popular linear algebra library Eigen comes with a long list of so-called "unsupported" modules, for example modules for FFT, numerical differentiation or Euler angles.

In the Eigen documentation, it is clearly stated:

These modules are contributions from various users. They are provided "as is", without any support.

Unfortunately, there is no statement in the documentation about potential discontinuation of unsupported modules, requirements to the quality of implementation, level of testing, and so on.

This leaves me with the following question:

  • Should I be using Eigen unsupported modules at all, if I want my software to be stable for a few years (and at least to be compatible with future major/minor Eigen releases). Example: in particular, I would like to avoid the situation that an unsupported module I am using drops away when upgrading from Eigen 3.7.x to 3.8.x, for instance.
  • Are there any experiences or opinions out there regarding the stability and availability of the unsupported modules?

(Just for completeness: the particular unsupported module I am considering is the EulerAngles module).

Makeup answered 26/5, 2019 at 6:37 Comment(2)
If you want your code in the future to be compliant with Eigen's supported format or standards and you have a use for the EulerAngles, then it might be a bit more work, but you could implement your own EulerAngles that will remain compliant with them.Hemispheroid
I think sentence 'They are provided "as is", without any support.' is the statement about 'potential discontinuation of unsupported modules, requirements to the quality of implementation, level of testing'. No guarantees, use at your own risk.Yamashita
C
9

Generally, I suggest trying out the unsupported modules and give feedback about their usefulness, bugs, suggestions for API-changes etc. That is the most likely way that a currently unsupported module will eventually get moved to the standard modules.

You need to be prepared to change parts of your source if the API changes or if the module becomes stable (ideally, this requires just changing an #include) -- of course this could be more complicated if you want to be compatible to old and new Eigen versions.


I'd say the EulerAngles module is pretty stable and well-tested and already integrates well into the Geometry module -- but it is likely not used a lot (we don't have statistics about the usage of individual modules).

In contrast the Tensor module (mentioned by @datell), is used heavily (e.g., by TensorFlow), but in my opinion is not well-integrated yet into the rest of Eigen (e.g., documentation is mostly a single .md which is not completely in-sync with the current API): http://eigen.tuxfamily.org/dox-devel/unsupported/eigen_tensors.html

N.B.: I'm one of the Eigen maintainers.

Corso answered 27/5, 2019 at 13:52 Comment(2)
Hello, I know this is kinda old thread but I am interested in testing and debugging the Non linear optimization module. How can I help?Marchall
@AzmyinMd.Kamal I haven't been active for a while, but I guess the best way to get in contact at the moment is the discord server: eigen.tuxfamily.org/index.php?title=Main_Page#Discord_ServerCorso
M
2

Unfortunately, there is no statement in the documentation about potential discontinuation of unsupported modules, requirements to the quality of implementation, level of testing, and so on.

Since unsupported modules are provided "as is" their testing coverage and maybe even quality can heavily differ. All modules, unsupported or not, are tested. However, there are modules that are very frequently used and others that might be not used that often. This results in a variety of experiences the community has with different unsupported modules. Very popular modules are likely to be well tested just because there is a high chance that someone stepped over some corner case while using it.

Are there any experiences or opinions out there regarding the stability and availability of the unsupported modules?

An example for a widely adopted module is the unsupported Tensor module which is used in the core parts of Google's Tensorflow.

However, there are no guarantees about the ABI or API stability of unsupported modules. E.g., an unsupported module could get merged into the supported part which could lead to (at least) API changes.

Should I be using Eigen unsupported modules at all, if I want my software to be stable for a few years (and at least to be compatible with future major/minor Eigen releases).

It's hard to answer that somewhat broad question. If you really depend on stability for years you maybe should avoid unsupported modules. However this is in no sense a general advice and depends on your specific needs and the module you plan to use.

If you plan to use an unsupported module as a critical part of your application, you should probably keep an eye on updates (e.g. check Eigen's changelog or watch pull requests).

Matronly answered 27/5, 2019 at 10:10 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.