commit | 80fce72bfdc000c175776f567c9ab517113a6af2 | [log] [tgz] |
---|---|---|
author | Sameer Agarwal <sameeragarwal@google.com> | Sat Aug 24 11:18:24 2024 -0700 |
committer | Sameer Agarwal <sameeragarwal@google.com> | Sat Aug 24 21:12:54 2024 -0700 |
tree | 692f95ede3e9a2399c8e15543873600672f7871b | |
parent | 8f85014dcfe59c36f589a8db8e9aefc7f1418dbd [diff] |
Add mixed precision solves for SUITE_SPARSE Starting with SuiteSparse version 7.4.0 CHOLMOD has support for single precision matrices. This allows us to have single precision and mixed precision solves when using the SUITE_SPARSE backend. This CL also fixes sparse_cholesky_test which was completely broken for single precision testing. Sample performance on my Mac. /usr/bin/time -l ./bin/bundle_adjuster --input=../../Downloads/problem-3068-310854-pre.txt <SNIP> 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 2.528222 Residual only evaluation 0.142804 (5) Jacobian & residual evaluation 0.424014 (4) Linear solver 54.083396 (5) Minimizer 54.895752 Postprocessor 0.024564 Total 57.448539 Termination: NO_CONVERGENCE (Maximum number of iterations reached. Number of iterations: 5.) 59.04 real 341.24 user 5.49 sys 5776375808 maximum resident set size <SNIP> 616329634071 instructions retired 929475980510 cycles elapsed 5375034560 peak memory footprint /usr/bin/time -l ./bin/bundle_adjuster --input=../../Downloads/problem-3068-310854-pre.txt -mixed_precision_solves <SNIP> Cost: Initial 9.099334e+07 Final 4.148930e+06 Change 8.684441e+07 Minimizer iterations 6 Successful steps 4 Unsuccessful steps 2 Time (in seconds): Preprocessor 2.580217 Residual only evaluation 0.144098 (5) Jacobian & residual evaluation 0.396723 (4) Linear solver 23.636074 (5) Minimizer 24.427163 Postprocessor 0.023790 Total 27.031170 Termination: NO_CONVERGENCE (Maximum number of iterations reached. Number of iterations: 5.) 28.58 real 128.53 user 2.37 sys 4818386944 maximum resident set size <SNIP> 395186936091 instructions retired 368802808856 cycles elapsed 4327029824 peak memory footprint Change-Id: I1f137b0dd12da8da7f9ced338dd8f20f4bbdf99d
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.