commit | 07dbf31eca6851aadaed0dc337e05c8bb5965850 | [log] [tgz] |
---|---|---|
author | Cheng Wang <wangcheng@google.com> | Tue Mar 07 14:57:23 2017 -0800 |
committer | Cheng Wang <wangcheng@google.com> | Mon Apr 10 09:50:34 2017 -0700 |
tree | 39c892631af07665fed047dd92e3bb6c6efa6ebb | |
parent | 0a50cd82445bc975b88bb6e9f2a44db83376a482 [diff] |
Optimize J' * J in sparse_normal_cholesky_solver. 1. Add stype to the outerproduct computation to control the output matrix in upper or lower triangular matrix. For SuiteSparse, upper triangular matrix is generated. SuiteSparse can directly use this matrix format for cholesky without matrix transpose overhead. 2. Change the outerproduct computation to block multiplication. This reduces the computation complexity for the sort in preprocessing, also allows formulation of the block outerproduct computation as dense Eigen block matrix multiplication. 3. Solve 32 Tango problems on Qualcomm MSM8994 Cortex-A53 (1.55GHz) before change: 140 seconds after change: 131 seconds Change-Id: I8054114cef911de6a303310a448821ca296e4744
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.
Ceres development happens on Gerrit, including both repository hosting and code reviews. The GitHub Repository is a continuously updated mirror which is primarily meant for issue tracking. Please see our Contributing to Ceres Guide for more details.
The upstream Gerrit repository is
https://ceres-solver.googlesource.com/ceres-solver