Version 1.11.0 Release Candidate 2

83 views
Skip to first unread message

Sameer Agarwal

unread,
Sep 8, 2015, 6:48:32 PM9/8/15
to ceres-...@googlegroups.com
Hello Everyone,

We are pleased to announce the availability of version 1.11.0 Release Candidate 2. The tarball can be downloaded from


This release has been a long time in the making. It has a fairly large number of improvements and bug fixes. Some of the more notable ones are:

1. Adaptive numeric differentiation using Ridders’ method. 
2. Add CubicInterpolator and BiCubicInterpolator to allow smooth interpolation of sampled functions and integration with automatic differentiation.
3. Add a ProductParameterization, a local parameterization that can be constructed as a cartesian product of other local parameterization.
4. Optionally export Ceres build directory into local CMake package registry.
5. Faster SPARSE_NORMAL_CHOLESKY in the presence of dynamic sparsity.

We would appreciate you testing on as many platforms as possible and we would love to hear of your experiences, good and bad.

Happy optimizing,
Sameer, Keir & Alex

PS: Yes there was a Release candidate 1, but it never escaped my laptop.

Alex Stewart

unread,
Sep 9, 2015, 5:28:24 AM9/9/15
to ceres-...@googlegroups.com
Dear All,

For those of you using Clang, we would be very interested if you observe any performance improvements from compiling your code which uses Ceres with an increased inline threshold (see below for instructions).  Ceres itself is compiled with an increased inline threshold on Clang (currently 600) because we have found that this improved the overall performance (via Eigen).

We have found that for some client code using autodiffed cost functions, using the same increased inlining threshold as Ceres results in a very dramatic (100-1000x) speedup.  However, this is not uniform and for other problems it makes only a small difference.  We can, through CMake, export an increased inlining threshold (which only triggers for Clang) in the Ceres target which would then get used to compile any target which linked against Ceres using CMake.  However, we would like to get a feel for how much difference this change would make for people’s current use of Ceres beforehand.

Thanks!

-Alex

= Instructions for increasing inlining threshold for Clang via CMake:

If using CMake >= 2.8.12:  We recommend you use target_compile_options() to add the inlining flags to specific targets for fine grained control:

# Use a larger inlining threshold for Clang, since it can hobble Eigen,
# resulting in reduced performance. The -Qunused-arguments is needed because
# CMake passes the inline threshold to the linker and clang complains about
# it (and dies, if compiling with -Werror).
target_compile_options(<YOUR_TARGET_NAME> PUBLIC
      $<$<CXX_COMPILER_ID:Clang>:-Qunused-arguments -mllvm -inline-threshold=600>)

If using CMake < 2.8.12:  On CMake < 2.8.12 target_compile_options() is not available, so you cannot add the flags only on a per-target level and must instead set them for all targets declared after the flags are updated:

# Use a larger inlining threshold for Clang, since it can hobble Eigen,
# resulting in reduced performance. The -Qunused-arguments is needed because
# CMake passes the inline threshold to the linker and clang complains about
# it (and dies, if compiling with -Werror).
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
   set(CMAKE_CXX_FLAGS
       "${CMAKE_CXX_FLAGS} -Qunused-arguments -mllvm -inline-threshold=600")
endif()


--
You received this message because you are subscribed to the Google Groups "Ceres Solver" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ceres-solver...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ceres-solver/CABqdRUC1qmbpgfhAetgngP%3DAnP-7_KEX5%3DxwYDpwz%2B6_srgsCw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages