)]}'
{
  "commit": "dc5ea0ea4dc9dd7f43c355aa825b25f7a76c42e8",
  "tree": "3da557e8d16a9644f596b6144cac5b98a5e733b5",
  "parents": [
    "c426f464ab0b2045fb8a8ca3b71b9cb14c2e6545"
  ],
  "author": {
    "name": "Mike Vitus",
    "email": "vitus@google.com",
    "time": "Wed Jan 24 15:53:19 2018 -0800"
  },
  "committer": {
    "name": "Mike Vitus",
    "email": "vitus@google.com",
    "time": "Fri Feb 16 14:24:17 2018 -0800"
  },
  "message": "Adds a ParallelFor wrapper for tbb::parallel_for.\n\nThis is in preparation for adding support for a c++11 based parallel\nfor implementation. The parallel for abstraction does not have the\nability to constrain the total number of threads in nested for loops.\nThis is solved by distributing the number of threads evenly between\nthe nested for loops. Adds a TODO to consolidate the next for loops\ninto a single loop that can be properly split between threads.\n\nTested by building with TBB and running tests.\n\nChange-Id: I546973b9a4d19b9cdd53caff55d1c80bac8ea953\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b7c99ac5d94d71a44a062ae520b62dbacced30e2",
      "old_mode": 33188,
      "old_path": "internal/ceres/CMakeLists.txt",
      "new_id": "c5fb2598891bd1bdc343a6a533ec87d3757af968",
      "new_mode": 33188,
      "new_path": "internal/ceres/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "df9c41f60d4b416b632e6f119b31e90f337618ee",
      "old_mode": 33188,
      "old_path": "internal/ceres/coordinate_descent_minimizer.cc",
      "new_id": "884fbd2fff4b14803f73ac0b73478f673bfab2e9",
      "new_mode": 33188,
      "new_path": "internal/ceres/coordinate_descent_minimizer.cc"
    },
    {
      "type": "modify",
      "old_id": "f2a345d10b1393cf05a5e0442c7b539e283f9ea5",
      "old_mode": 33188,
      "old_path": "internal/ceres/covariance_impl.cc",
      "new_id": "f8c510c3d5d37681b99e19dd15a1a0262e01f150",
      "new_mode": 33188,
      "new_path": "internal/ceres/covariance_impl.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9222884bc7df88a4ac4c9360f0865d1428628900",
      "new_mode": 33188,
      "new_path": "internal/ceres/parallel_for.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "38a744f82e6b745043d871f1e8c1567b938b16f2",
      "new_mode": 33188,
      "new_path": "internal/ceres/parallel_for_tbb.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eb10a3ba8b96d3181b98e1dac9406619c90e57b6",
      "new_mode": 33188,
      "new_path": "internal/ceres/parallel_for_test.cc"
    },
    {
      "type": "modify",
      "old_id": "b4127479deafe85cc1eb7a3e5fc07e1f23581650",
      "old_mode": 33188,
      "old_path": "internal/ceres/program_evaluator.h",
      "new_id": "36700b9f7ef90fd7108d09852210745eae51ab88",
      "new_mode": 33188,
      "new_path": "internal/ceres/program_evaluator.h"
    },
    {
      "type": "modify",
      "old_id": "1bc4d8e7be96ebf9456ccec397e0751fe1998da8",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_eliminator_impl.h",
      "new_id": "17769872c0a40ddb6a1093bb313b5fa5e1008b87",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_eliminator_impl.h"
    }
  ]
}
