Hi,
That's a great addition and improvement. However, I've tried to reproduce it and the result is almost the same with and without mixed precision solves:
$ build/ceres-solver/bin/bundle_adjuster --input=data/final/problem-3068-310854-pre.txt
iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time
0 9.099334e+07 0.00e+00 5.16e+12 0.00e+00 0.00e+00 1.00e+04 0 2.70e-01 5.04e+00
1 4.649068e+07 4.45e+07 5.32e+14 0.00e+00 4.99e-01 1.00e+04 1 1.63e+01 2.13e+01
2 8.014327e+06 3.85e+07 7.13e+13 1.70e+05 8.59e-01 1.58e+04 1 1.00e+01 3.13e+01
3 4.455175e+08 -4.38e+08 7.13e+13 1.83e+05 -6.87e+01 7.92e+03 1 9.92e+00 4.12e+01
4 4.161838e+06 3.85e+06 1.04e+13 1.04e+05 6.06e-01 8.00e+03 1 9.61e+00 5.08e+01
5 5.239706e+12 -5.24e+12 1.04e+13 9.39e+04 -2.09e+06 4.00e+03 1 9.63e+00 6.04e+01
Solver Summary (v 2.3.0-eigen-(3.3.7)-lapack-suitesparse-(7.8.2)-metis-(5.1.0)-eigensparse-cuda-(12060)-cudss-(0.3.0))
Original Reduced
Parameter blocks 313922 313922
Parameters 960174 960174
Residual blocks 1653812 1653812
Residuals 3307624 3307624
Minimizer TRUST_REGION
Trust region strategy LEVENBERG_MARQUARDT
Sparse linear algebra library SUITE_SPARSE + AMD
Given Used
Linear solver SPARSE_SCHUR SPARSE_SCHUR
Threads 16 16
Linear solver ordering 310854,3068 310854,3068
Schur structure 2,3,9 2,3,9
Cost:
Initial 9.099334e+07
Final 4.161838e+06
Change 8.683150e+07
Minimizer iterations 6
Successful steps 4
Unsuccessful steps 2
Time (in seconds):
Preprocessor 4.769383
Residual only evaluation 0.218614 (5)
Jacobian & residual evaluation 0.675102 (4)
Linear solver 54.346604 (5)
Minimizer 55.711315
Postprocessor 0.089452
Total 60.570151
Termination: NO_CONVERGENCE (Maximum number of iterations reached. Number of iterations: 5.)
$ build/ceres-solver/bin/bundle_adjuster --input=data/final/problem-3068-310854-pre.txt -mixed_precision_solves
iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time
0 9.099334e+07 0.00e+00 5.16e+12 0.00e+00 0.00e+00 1.00e+04 0 2.66e-01 4.96e+00
1 4.648716e+07 4.45e+07 5.32e+14 0.00e+00 4.99e-01 1.00e+04 1 1.58e+01 2.07e+01
2 8.013994e+06 3.85e+07 7.13e+13 1.70e+05 8.59e-01 1.58e+04 1 9.70e+00 3.04e+01
3 4.723025e+08 -4.64e+08 7.13e+13 1.83e+05 -7.29e+01 7.92e+03 1 9.97e+00 4.04e+01
4 4.157745e+06 3.86e+06 1.03e+13 1.04e+05 6.06e-01 8.00e+03 1 9.95e+00 5.03e+01
5 2.458755e+12 -2.46e+12 1.03e+13 9.39e+04 -9.81e+05 4.00e+03 1 9.72e+00 6.01e+01
Solver Summary (v 2.3.0-eigen-(3.3.7)-lapack-suitesparse-(7.8.2)-metis-(5.1.0)-eigensparse-cuda-(12060)-cudss-(0.3.0))
Original Reduced
Parameter blocks 313922 313922
Parameters 960174 960174
Residual blocks 1653812 1653812
Residuals 3307624 3307624
Minimizer TRUST_REGION
Trust region strategy LEVENBERG_MARQUARDT
Sparse linear algebra library SUITE_SPARSE + AMD (Mixed Precision)
Given Used
Linear solver SPARSE_SCHUR SPARSE_SCHUR
Threads 16 16
Linear solver ordering 310854,3068 310854,3068
Schur structure 2,3,9 2,3,9
Cost:
Initial 9.099334e+07
Final 4.157745e+06
Change 8.683560e+07
Minimizer iterations 6
Successful steps 4
Unsuccessful steps 2
Time (in seconds):
Preprocessor 4.689345
Residual only evaluation 0.213891 (5)
Jacobian & residual evaluation 0.667013 (4)
Linear solver 54.054418 (5)
Minimizer 55.396603
Postprocessor 0.088574
Total 60.174523
Termination: NO_CONVERGENCE (Maximum number of iterations reached. Number of iterations: 5.)