)]}'
{
  "commit": "cab853fd5fa17d37c55e6340a192da202dd10579",
  "tree": "fdfed2355ac5cd51e0437aaf7fc6cda7ff086c16",
  "parents": [
    "8ae054ad91ae402af94f82e4d4ef24957188233b"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Wed Jan 26 11:00:48 2022 -0800"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Mon Feb 07 11:54:01 2022 -0800"
  },
  "message": "Add DenseQR Interface\n\n1. Add EigenDenseQR \u0026 tests.\n   This implementation now uses an in place decomposition,\n   which means that we are not allocating, deallocating\n   memory every call.\n2. Add LAPACKDenseQR and tests.\n   The LAPACK implementation instead of using dgels which is a\n   routine which does the factorization and solve in one\n   call, now uses dgeqrf for factorization and then\n   dormqr and dtrtrs for solving. This allows us to\n   have a factorize and solve interface like DenseCholesky.\n   And opens the door to iterative refinement and mixed\n   precision solves.\n3. The refactor also allows us to simplify the interface to\n   DenseSparseMatrix considerably. The internals of this\n   class were complicated because we had the AppendDiagonal\n   and RemoveDiagonal methods and we did not want to allocate\n   deallocate memory every call. But since we pay the cost\n   of the copy anyways, we can just hold that buffer\n   in DenseQRSolver.\n4. Delete lapack.cc/h\n5. The net result is that everything seems to be a bit faster.\n   For LAPACK we are not doing some of the scaling work that\n   dgels was doing. For Eigen I think it maybe the inplace\n   decomposition.\n\nBenchmark                                                                     Time             CPU      Time Old      Time New       CPU Old       CPU New\n----------------------------------------------------------------------------------------------------------------------------------------------------------\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/1/1                          -0.1154         -0.1159           692           612           691           611\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/2/1                          -0.1601         -0.1553           717           603           712           601\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/3/1                          -0.1673         -0.1575           733           610           724           610\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/6/2                          -0.1008         -0.1003           886           797           884           796\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/10/3                         -0.1489         -0.1514          1283          1092          1281          1087\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/12/4                         -0.1040         -0.1104          1556          1394          1553          1381\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/20/5                         -0.0007         -0.0097          1911          1910          1908          1890\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/40/5                         -0.1033         -0.1022          2981          2673          2957          2655\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/100/10                       -0.0147         +0.0015          9275          9138          9026          9040\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/200/10                       -0.1408         -0.1284         15093         12968         14778         12880\nBM_DenseSolver\u003cceres::EIGEN, ceres::DENSE_QR\u003e/200/20                       -0.0310         -0.0355         38973         37765         38837         37460\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/1/1                         -0.1228         -0.1256           736           646           731           640\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/2/1                         -0.1401         -0.1396           740           636           735           633\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/3/1                         -0.1731         -0.1695           744           615           738           613\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/6/2                         -0.1399         -0.1408          1121           965          1113           956\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/10/3                        -0.1110         -0.1145          1571          1397          1560          1382\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/12/4                        -0.1411         -0.1417          2006          1722          1993          1710\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/20/5                        -0.1740         -0.1729          2741          2264          2724          2253\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/40/5                        -0.0966         -0.1123          3462          3128          3425          3040\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/100/10                      -0.0387         -0.0998         10365          9964         10339          9307\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/200/10                      -0.2044         -0.2049         16031         12754         15998         12720\nBM_DenseSolver\u003cceres::LAPACK, ceres::DENSE_QR\u003e/200/20                      -0.2391         -0.2386         35777         27223         35716         27193\n\nChange-Id: I782f0d7664efe1435eebda92ddf47a0fe66c9c72\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f12dbf3314af51137c240b40aa2c31db4cab0869",
      "old_mode": 33188,
      "old_path": "examples/nist.cc",
      "new_id": "394458614662fbf87fe069dfafb10c138270a3c1",
      "new_mode": 33188,
      "new_path": "examples/nist.cc"
    },
    {
      "type": "modify",
      "old_id": "5d9e0abf766fd13f48e7fa94813414e2f55bb84b",
      "old_mode": 33188,
      "old_path": "internal/ceres/CMakeLists.txt",
      "new_id": "957d476ea4b5f4d3ca9d4b9deee1324bc7fbca64",
      "new_mode": 33188,
      "new_path": "internal/ceres/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "1d7187c580b8cf15915e745c703e3b990475b456",
      "old_mode": 33188,
      "old_path": "internal/ceres/dense_jacobian_writer.h",
      "new_id": "efecf35d0e926b1e35ba3b1c05f9ce41cd99664e",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_jacobian_writer.h"
    },
    {
      "type": "modify",
      "old_id": "fa0d034007aa5621429cf2a979114d642eb6975f",
      "old_mode": 33188,
      "old_path": "internal/ceres/dense_linear_solver_benchmark.cc",
      "new_id": "b8f1e0010760c97de8c988b748fd420d10370802",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_linear_solver_benchmark.cc"
    },
    {
      "type": "modify",
      "old_id": "419ec3eb0f26b18ab44792e9ddf94e4cde4b10ed",
      "old_mode": 33188,
      "old_path": "internal/ceres/dense_linear_solver_test.cc",
      "new_id": "4dff5af4bf0625e76ae2851dd1491fe7eb59b29c",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_linear_solver_test.cc"
    },
    {
      "type": "modify",
      "old_id": "73e5bf82ca8575c78a150ff93650277357edac13",
      "old_mode": 33188,
      "old_path": "internal/ceres/dense_normal_cholesky_solver.cc",
      "new_id": "b208d589d25ee80ea43197f6c03724865dc18dd6",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_normal_cholesky_solver.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9c0b24e9124805a102377f5ff8e11154de51f828",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_qr.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "93d890ba04b6cac6895d58dd99abe7082ded9d3b",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_qr.h"
    },
    {
      "type": "modify",
      "old_id": "44388f30aee83509e8d07109505aa220dbae1de5",
      "old_mode": 33188,
      "old_path": "internal/ceres/dense_qr_solver.cc",
      "new_id": "24cb25abd8effb28cd0203e9f3027125596d9656",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_qr_solver.cc"
    },
    {
      "type": "modify",
      "old_id": "980243bd6c6f5e0dc2456c8bd3272c7c011dc147",
      "old_mode": 33188,
      "old_path": "internal/ceres/dense_qr_solver.h",
      "new_id": "927dc32b1d1b60a891d73c0623ffbf49f9897bb5",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_qr_solver.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c71f40efe4dc77d06ec47159aab4a5cf3a86eacf",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_qr_test.cc"
    },
    {
      "type": "modify",
      "old_id": "53207fe300e9d76a9103e90a464651bef739bf4f",
      "old_mode": 33188,
      "old_path": "internal/ceres/dense_sparse_matrix.cc",
      "new_id": "80ea6585d85687089efebfb1a9e3f8f37ebd49f9",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_sparse_matrix.cc"
    },
    {
      "type": "modify",
      "old_id": "94064b3eddca5af997fd860fa0ad92a3db29cc72",
      "old_mode": 33188,
      "old_path": "internal/ceres/dense_sparse_matrix.h",
      "new_id": "e2f4a6e91a152caa75a1d76c897b9234dac24518",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_sparse_matrix.h"
    },
    {
      "type": "delete",
      "old_id": "7ce00a5c2df988f348d4ba9012807c4548b595e8",
      "old_mode": 33188,
      "old_path": "internal/ceres/lapack.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "5c5bf8bf8b8c716928331f4b097752835893a2e6",
      "old_mode": 33188,
      "old_path": "internal/ceres/lapack.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "cad30eb3a67116b242e7c8e4210f8ea59cd0cc0f",
      "old_mode": 33188,
      "old_path": "internal/ceres/trust_region_minimizer_test.cc",
      "new_id": "8f544d6082a46a75729092b201a3f09c759ba158",
      "new_mode": 33188,
      "new_path": "internal/ceres/trust_region_minimizer_test.cc"
    }
  ]
}
