commit | 939253c208718689c8f141a2aa97ba0827478a93 | [log] [tgz] |
---|---|---|
author | Johannes Beck <Jodebo_Beck@gmx.de> | Sun Apr 14 20:31:47 2019 +0200 |
committer | Johannes Beck <Jodebo_Beck@gmx.de> | Mon Apr 15 22:09:24 2019 +0200 |
tree | 4ef319a004d4418921ef3595b6f1663d62efe432 | |
parent | bf67daf79e0f41cb0908406bde92cbf125478419 [diff] |
Fix Eigen alignment issues. For proper alignment on the heap Eigen needs to have a custom allocator. There are two forms, new and in-place new. To make sure that memory is aligned using new, one needs to overload new by adding EIGEN_MAKE_ALIGNED_OPERATOR_NEW to any struct which contains a fixed size Eigen type either through inheritance or as a direct or indirect member. For the in-place new one need to use the Eigen::aligned_allocator (e.g. for std::vector, std::list, FixedArray, etc.). For more details see: https://eigen.tuxfamily.org/dox/group__DenseMatrixManipulation__Alignement.html This CL adds EIGEN_MAKE_ALIGNED_OPERATOR_NEW to all structs, which contain fixed-size Eigen types and uses the Eigen::aligned_allocator for containers which stores structs of fixed-size Eigen types. Change-Id: I06c6c4fc74a6835918d5d1c571b7814a14c029d8
Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems. It is a feature rich, mature and performant library which has been used in production at Google since 2010. Ceres Solver can solve two kinds of problems.
Please see ceres-solver.org for more information.