是否应该避免使用本征不支持的模块?

Mar*_*k G 5 c++ stability eigen eigen3

流行的线性代数库Eigen带有一长串所谓的“不支持”模块,例如用于 FFT、数值微分或欧拉角的模块。

在 Eigen 文档中,它明确指出:

这些模块是来自不同用户的贡献。它们按“原样”提供,没有任何支持。

不幸的是,文档中没有关于不受支持的模块的潜在终止、对实现质量的要求、测试级别等的声明。

这给我留下了以下问题:

  • 如果我希望我的软件稳定几年(并且至少与未来的主要/次要 Eigen 版本兼容),我是否应该使用 Eigen 不受支持的模块。示例:特别是,例如,当从 Eigen 3.7.x 升级到 3.8.x 时,我想避免我使用的不受支持的模块掉落的情况。
  • 关于不受支持的模块的稳定性和可用性,是否有任何经验或意见?

(只是为了完整性:我正在考虑的特定不受支持的模块是EulerAngles模块)。

cht*_*htz 6

通常,我建议尝试不受支持的模块,并提供有关它们的有用性、错误、API 更改建议等的反馈。这是当前不受支持的模块最终转移到标准模块的最有可能的方式。

如果 API 更改或模块变得稳定(理想情况下,这只需要更改#include),您需要准备更改源代码的一部分——当然,如果您想与新旧 Eigen 兼容,这可能会更复杂版本。


我想说 EulerAngles 模块非常稳定且经过良好测试,并且已经很好地集成到 Geometry 模块中——但它可能没有被经常使用(我们没有关于单个模块使用情况的统计数据)。

相比之下,Tensor 模块(@datell 提到)被大量使用(例如,被 TensorFlow),但在我看来还没有很好地集成到 Eigen 的其余部分中(例如,文档主要是一个单一的.md,并不完全在-与当前 API 同步):http ://eigen.tuxfamily.org/dox-devel/unsupported/eigen_tensors.html

注意:我是 Eigen 的维护者之一。