Следует ли избегать Eigen-неподдерживаемых модулей? - PullRequest
2 голосов
/ 26 мая 2019

Популярная библиотека линейной алгебры Eigen поставляется с длинным списком так называемых «неподдерживаемых» модулей , например, модулей для БПФ, численного дифференцирования или углов Эйлера.

В документации Eigen четко указано:

Эти модули представляют собой вклады различных пользователей.Они предоставляются «как есть», без какой-либо поддержки.

К сожалению, в документации нет заявления о возможном прекращении неподдерживаемых модулей, требованиях к качеству реализации,уровень тестирования и т. д.

Это оставляет меня со следующим вопросом:

  • Должен ли я вообще использовать неподдерживаемые модули Eigen, если я хочу, чтобы мое программное обеспечение было стабильным длянесколько лет (и, по крайней мере, чтобы быть совместимым с будущими основными / минорными выпусками Eigen).Пример: в частности, я бы хотел избежать ситуации, когда неподдерживаемый модуль, который я использую, выпадает, например, при обновлении с Eigen 3.7.x до 3.8.x.
  • Есть ли опыт или мнения относительно стабильности и доступности неподдерживаемых модулей?

(Просто для полноты: конкретный неподдерживаемый модуль, который я рассматриваю, это Модуль EulerAngles ).

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Как правило, я предлагаю попробовать неподдерживаемые модули и дать отзыв об их полезности, ошибках, предложениях по изменениям API и т. Д. Это наиболее вероятный способ, с помощью которого в настоящее время неподдерживаемый модуль будет перемещен встандартные модули.

Вы должны быть готовы изменить части вашего источника, если API-интерфейс изменится или модуль станет стабильным (в идеале, для этого нужно просто изменить #include) - конечно, это может бытьболее сложным, если вы хотите быть совместимым со старыми и новыми версиями Eigen.


Я бы сказал, что модуль EulerAngles довольно стабилен и хорошо протестирован и уже хорошо интегрируется в модуль Geometry - но этоскорее всего не используется много (у нас нет статистики об использовании отдельных модулей).

В отличие от модуля Tensor (упомянутого @datell), интенсивно используется (например, TensorFlow), нопо моему мнению, еще не очень хорошо интегрирован в остальную часть Eigen (например, документация в основном единственная .md, котораяне полностью синхронизирован с текущим API): http://eigen.tuxfamily.org/dox-devel/unsupported/eigen_tensors.html

Примечание: я один из сопровождающих Eigen.

1 голос
/ 27 мая 2019

К сожалению, в документации нет заявления о возможном прекращении поддержки неподдерживаемых модулей, требованиях к качеству реализации, уровню тестирования и т. Д.

Поскольку неподдерживаемые модулипри условии, что «как есть», их охват тестированием и, возможно, даже качество может сильно отличаться.Все модули, неподдерживаемые или нет, протестированы .Однако есть модули, которые используются очень часто, а другие могут использоваться не так часто.Это приводит к разнообразному опыту работы сообщества с различными неподдерживаемыми модулями.Очень популярные модули, вероятно, будут хорошо протестированы только потому, что существует высокая вероятность того, что кто-то перешагнет через какой-то угловой корпус при его использовании.

Есть ли какие-либо впечатления или мнения относительно стабильности и доступностинеподдерживаемые модули?

Примером широко распространенного модуля является неподдерживаемый Тензорный модуль , который используется в основных частях Google Tensorflow.

Однаконет никаких гарантий относительно стабильности ABI или API неподдерживаемых модулей.Например, неподдерживаемый модуль может быть объединен с поддерживаемой частью, что может привести (по крайней мере) к изменениям API.

Должен ли я вообще использовать неподдерживаемые модули Eigen, если я хочу, чтобы мое программное обеспечение было стабильнымв течение нескольких лет (и, по крайней мере, чтобы быть совместимым с будущими основными / второстепенными выпусками Eigen).

Трудно ответить на этот довольно широкий вопрос.Если вы действительно годами зависите от стабильности, возможно, вам следует избегать неподдерживаемых модулей.Однако это никоим образом не является общим советом и зависит от ваших конкретных потребностей и модуля, который вы планируете использовать.

Если вы планируете использовать неподдерживаемый модуль в качестве важной части вашего приложения, вам, вероятно, следует сохранитьследите за обновлениями (например, проверьте Eigen's changelog или посмотрите pull pull ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...