Sameer Agarwal de0f74e40a 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
2022-08-28 17:24:28 -07:00
2022-07-29 22:29:23 +00:00
2022-02-27 07:50:56 -08:00
2013-06-24 14:28:40 -07:00
2022-08-17 12:47:02 -07:00
2022-02-10 06:36:47 -08:00
2022-08-08 16:15:46 +03:00
2022-02-10 06:36:47 -08:00
2022-08-07 07:44:32 +00:00
2018-07-10 06:16:27 +00:00
2020-10-08 12:34:53 -07:00
2022-03-04 11:10:38 -08:00
2022-03-14 18:56:05 +01:00
2020-10-13 10:01:57 -07:00

Android Linux macOS Windows

Ceres Solver

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.

  1. Non-linear Least Squares problems with bounds constraints.
  2. General unconstrained optimization problems.

Please see ceres-solver.org for more information.

S
Description
No description provided
Readme Multiple Licenses Cite this repository 42 MiB
Languages
C++ 94.4%
CMake 3.8%
Python 0.8%
C 0.5%
Starlark 0.4%