Unify cost function differentiation benchmarks Replace internal/ceres/autodiff_benchmarks/ with internal/ceres/benchmark_cost_functions.h and internal/ceres/cost_function_differentiation_benchmark.cc: - Consolidate the benchmark cost functors into internal/ceres/benchmark_cost_functions.h as self-contained structs inheriting from BenchmarkCostFunctor<kNumResiduals, Ns...> with default constructors and MakeParameters(), and remove the internal/ceres/autodiff_benchmarks/ subdirectory. - Add nine real-world camera projection, epipolar, and SLAM cost functors (OpenCV, FullOpenCV, Rig, Sampson, Fisheye, and Spherical from COLMAP; Brown-Conrady and Nuke InvertIntrinsics from Blender libmv; and PoseGraph3dError from Ceres). - Benchmark AutoDiffCostFunction (static and dynamic residuals), DynamicAutoDiffCostFunction, NumericDiffCostFunction, and DynamicNumericDiffCostFunction (FORWARD, CENTRAL, RIDDERS) using a single BM_CostFunction<CostFunctor, kDiffType, kEvalType> template and CostFunctionFactory in cost_function_differentiation_benchmark.cc. - Add CostFunctionToFunctor and DynamicCostFunctionToFunctor benchmarks. - Fix ConstantCostFunction to pass kParameterBlockSize instead of 1 and remove redundant AnalyticConstantCostFunction. - Move -mllvm -inlinehint-threshold=1000000 into add_dependencies_to_benchmark in internal/ceres/CMakeLists.txt. Change-Id: Ic02f4d29a15b5faa606a5af033c19d0bfd1bba91
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.