commit | de0f74e40a49706867287431b4466c1e7a90fbd6 | [log] [tgz] |
---|---|---|
author | Sameer Agarwal <sameeragarwal@google.com> | Thu Aug 25 16:02:14 2022 +0530 |
committer | Sameer Agarwal <sameeragarwal@google.com> | Sun Aug 28 17:24:28 2022 -0700 |
tree | b6f2a61436a50f117f0e0faee9127fce86e4e662 | |
parent | ba65ddd311239c26dd8950ab37f504d37bf6fa44 [diff] |
Optimize the BlockCRSJacobiPreconditioner Instead of iterating row-wise, use the row block structure to update the preconditioner one row block at a time. While benchmarking, I also found an opportunity to speed up BlockSparseJacobiPreconditiner. Before ----------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------------------------- BM_BlockSparseJacobiPreconditioner 132122392 ns 132103000 ns 5 BM_BlockCRSJacobiPreconditionerBA 73365217 ns 73335800 ns 10 BM_BlockSparseJacobiPreconditionerUnstructured 92407762 ns 92407714 ns 7 BM_BlockCRSJacobiPreconditionerUnstructured 72256367 ns 72256400 ns 10 After ----------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------------------------- BM_BlockSparseJacobiPreconditionerBA 39723456 ns 39722222 ns 18 BM_BlockCRSJacobiPreconditionerBA 46561625 ns 46561667 ns 15 BM_BlockSparseJacobiPreconditionerUnstructured 52676208 ns 52676167 ns 12 BM_BlockCRSJacobiPreconditionerUnstructured 54430564 ns 54421462 ns 13 Change-Id: I6da8e044b26f0c24481deee5722322a606e9e5ca
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.