)]}'
{
  "commit": "19ab2c1793c145f22e7017b570a036f8b3024758",
  "tree": "6ad762e8cd2a56514cc21c71b91ca7259d22d4b3",
  "parents": [
    "a3a062d72cc8c0f5f1f09b36d8b7c1ea3bef4d73"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Wed Dec 21 16:01:36 2022 -0800"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Fri Dec 23 06:45:28 2022 -0800"
  },
  "message": "BlockRandomAccessMatrix Refactor\n\n1. Add threading to all three subclasses of BlockRandomAccessMatrix.\n   i.e. BlockRandomAccessDenseMatrix, BlockRandomAccessSparseMatrix\n   and BlockRandomAccessDenseMatrix.\n\n   For BlockRandomAccessDenseMatrix and BlockRandomAccessSparseMatrix\n   this just means SetZero is parallelized. Which by itself is no\n   big deal, but by doing so, the constructor for all three subclasses\n   become uniform.\n\n   BlockRandomAccessSparseMatrix::SymmetricRightMultiplyAndAccumulate\n   maybe threaded in the future if needed.\n\n   BlockRandomAccessDiagonalMatrix is the biggest beneficiary. SetZero\n   Invert and RightMultiplyAndAccumulate are all threaded now.\n\n2. Change the storage in BlockRandomAccessDiagonalMatrix from\n   TripletSparseMatrix to CompressedRowSparseMatrix. This has no\n   performance implications since we do not really use the capabilities\n   of the underlying matrix indexing representation. This is a forward\n   looking change when we decide to transfer this matrix to the GPU,\n   a CompressedRowSparseMatrix will save on a data conversion.\n\n3. Use std::unique_ptr as needed and eliminate the need for custom\n   destructors.\n\n4. Modify CompressedRowSparseMatrix::CreateBlockDiagonalMatrix to\n   take a nullptr as the data vector.\n\nFixes https://github.com/ceres-solver/ceres-solver/issues/936\nFixes https://github.com/ceres-solver/ceres-solver/issues/935\n\nChange-Id: Ia6487f2d924fbe669835bdcc38abf2b451bda4ee\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8136f734ce240a0b3fc2b327c5373d837267ae34",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_jacobi_preconditioner.cc",
      "new_id": "0d4ad13097bd076c38c144156690f0e3273be6a4",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_jacobi_preconditioner.cc"
    },
    {
      "type": "modify",
      "old_id": "50eb972a84c0ce6cae669beb33b8589951dd6017",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_random_access_dense_matrix.cc",
      "new_id": "deb0a80db42720857d290c7273d5a283b054f41f",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_random_access_dense_matrix.cc"
    },
    {
      "type": "modify",
      "old_id": "085a54de6455509c24915849dfbab56e14c2df2e",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_random_access_dense_matrix.h",
      "new_id": "d958ed14be87b210430a19f2c484060a1069ec58",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_random_access_dense_matrix.h"
    },
    {
      "type": "modify",
      "old_id": "b0cd5b97cc49cdfd3661f674743e1d75bbd28851",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_random_access_dense_matrix_test.cc",
      "new_id": "2a3626ff1cdfa1b4f50b29bf88931a78ab8efb89",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_random_access_dense_matrix_test.cc"
    },
    {
      "type": "modify",
      "old_id": "2e29604f59e44ffd93d786a9c034a884c59df251",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_random_access_diagonal_matrix.cc",
      "new_id": "fd109baf0bc2f047c47eff3418c2af630943d847",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_random_access_diagonal_matrix.cc"
    },
    {
      "type": "modify",
      "old_id": "d0583966491a0f56ba8fa0d3a9a6de2b2f83b006",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_random_access_diagonal_matrix.h",
      "new_id": "374dd822256fbed7b3f0212ffb4689d087f5bcbe",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_random_access_diagonal_matrix.h"
    },
    {
      "type": "modify",
      "old_id": "5bf47ff730c7652ac08e4f2af715addf527ee588",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_random_access_diagonal_matrix_test.cc",
      "new_id": "6ccc2f0a28d6b9528c2f47acd7fbafdd310fc45b",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_random_access_diagonal_matrix_test.cc"
    },
    {
      "type": "modify",
      "old_id": "f27fc08ea55eecb66ef67021662992678fa07387",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_random_access_sparse_matrix.cc",
      "new_id": "784ffeb03adb695945760a027e87ef700e5d813e",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_random_access_sparse_matrix.cc"
    },
    {
      "type": "modify",
      "old_id": "7161e99d9a9e4df9795a96b679088aba26b8b48f",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_random_access_sparse_matrix.h",
      "new_id": "8aa13c60b90c7c013cc98be9efb0d0a33363fa96",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_random_access_sparse_matrix.h"
    },
    {
      "type": "modify",
      "old_id": "78a6c3e029bd7b73ab2a8289ba1fd9f0728993cf",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_random_access_sparse_matrix_test.cc",
      "new_id": "0e21a1eb94d06435f43038fbf22c3934ad70f227",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_random_access_sparse_matrix_test.cc"
    },
    {
      "type": "modify",
      "old_id": "553dc21aab6b4790fe2b4dfb00780deaed7bbef5",
      "old_mode": 33188,
      "old_path": "internal/ceres/compressed_row_sparse_matrix.cc",
      "new_id": "890804f95ba6aa53db3ccdc1f329909d87956e15",
      "new_mode": 33188,
      "new_path": "internal/ceres/compressed_row_sparse_matrix.cc"
    },
    {
      "type": "modify",
      "old_id": "f0bbf6d5d2bcc3dc80229906b685326a36645a9c",
      "old_mode": 33188,
      "old_path": "internal/ceres/implicit_schur_complement_test.cc",
      "new_id": "3fbfdf1bc3aafceec77db7e6c246d399c2ea9b53",
      "new_mode": 33188,
      "new_path": "internal/ceres/implicit_schur_complement_test.cc"
    },
    {
      "type": "modify",
      "old_id": "ace075e20ac4f18b0824b72bbbc8c16bb046c1c2",
      "old_mode": 33188,
      "old_path": "internal/ceres/iterative_schur_complement_solver.cc",
      "new_id": "b4aa809b1326c3b55ba806893c703dd7bd8157e8",
      "new_mode": 33188,
      "new_path": "internal/ceres/iterative_schur_complement_solver.cc"
    },
    {
      "type": "modify",
      "old_id": "2f7b87d785917e0ef8c760c5c89dab90dda1182f",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_complement_solver.cc",
      "new_id": "1972dc0fba58148021cda5c3b16d2280822fa4ab",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_complement_solver.cc"
    },
    {
      "type": "modify",
      "old_id": "407dfd92572c98629da56edc6d0d1f7ad396c649",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_eliminator_benchmark.cc",
      "new_id": "84784994ad9db3ff2c5d05322ed7e6c3f4458675",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_eliminator_benchmark.cc"
    },
    {
      "type": "modify",
      "old_id": "b703477004af26e88c7df0917f8ee1ad4baad4c7",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_eliminator_test.cc",
      "new_id": "6ae856f2f22a839e0591fd2c75cbac4b632de94f",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_eliminator_test.cc"
    },
    {
      "type": "modify",
      "old_id": "9870924dc928fa4dc828727e463faba0ace4bb34",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_jacobi_preconditioner.cc",
      "new_id": "78c51c848faee78a6c48a545e81c92e8ec530ea2",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_jacobi_preconditioner.cc"
    },
    {
      "type": "modify",
      "old_id": "656bdbe7474e316ba26933af51f61087404be65f",
      "old_mode": 33188,
      "old_path": "internal/ceres/visibility_based_preconditioner.cc",
      "new_id": "d2e4ee0b0f40c2657e91cf3ea15fe4fcb1acd0bf",
      "new_mode": 33188,
      "new_path": "internal/ceres/visibility_based_preconditioner.cc"
    }
  ]
}
