)]}'
{
  "commit": "5d8b494557e17992b64d8df548f49ef1f9ef4e05",
  "tree": "4bd48ad6864f19b75ca91a2f3a30fb31fccfa696",
  "parents": [
    "8d7b2528bc64e6f4d7f281917004ec6511f073b4"
  ],
  "author": {
    "name": "Mike Vitus",
    "email": "vitus@google.com",
    "time": "Mon Apr 09 10:10:03 2018 -0700"
  },
  "committer": {
    "name": "Mike Vitus",
    "email": "vitus@google.com",
    "time": "Mon Apr 09 10:10:03 2018 -0700"
  },
  "message": "Adds a ParallelFor wrapper for no threads and OpenMP.\n\nWith the addition of C++11 support we can simplify the parallel for code by\nremoving the ifdef branching.  Converts coordinate_descent_minimizer.cc to use\nthe thread_id ParallelFor API.\n\nTested by building with OpenMP, C++11 threads, TBB, and no threads.  All tests\npass.\n\nAlso compared timing via the bundle adjuster.\n\n./bin/bundle_adjuster --input\u003d../problem-744-543562-pre.txt\n\nWith OpenMP num_threads\u003d8\n\nHead:\nTime (in seconds):\n  Residual only evaluation           0.807753 (5)\n  Jacobian \u0026 residual evaluation     4.489404 (6)\n  Linear solver                     41.826481 (5)\nMinimizer                           50.745857\nTotal                               73.294424\n\nCL:\nTime (in seconds):\n  Residual only evaluation           0.970483 (5)\n  Jacobian \u0026 residual evaluation     4.647438 (6)\n  Linear solver                     41.781892 (5)\nMinimizer                           50.848904\nTotal                               73.089983\n\nWith OpenMP num_threads\u003d1\n\nHEAD:\nTime (in seconds):\n  Residual only evaluation           2.990246 (5)\n  Jacobian \u0026 residual evaluation    14.132090 (6)\n  Linear solver                     79.631951 (5)\nMinimizer                          100.281847\nTotal                              122.946267\n\nCL:\nTime (in seconds):\n  Residual only evaluation           3.075178 (5)\n  Jacobian \u0026 residual evaluation    13.966451 (6)\n  Linear solver                     77.005441 (5)\nMinimizer                           97.568712\nTotal                              120.410454\n\nChange-Id: I1857d7943073be7465b6c6476bf46ab11c5475a3\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6ba01376686bf0fdd5ec8eeea50197f67d79c2d9",
      "old_mode": 33188,
      "old_path": "bazel/ceres.bzl",
      "new_id": "8963370ef44480cd5dac69288a294a92f51174d0",
      "new_mode": 33188,
      "new_path": "bazel/ceres.bzl"
    },
    {
      "type": "modify",
      "old_id": "89241734653fafb6743c511e1adb8f45050a070c",
      "old_mode": 33188,
      "old_path": "internal/ceres/CMakeLists.txt",
      "new_id": "1dad396878dfe09db7429731095139f149cad69e",
      "new_mode": 33188,
      "new_path": "internal/ceres/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "6f20f200b192a94a25fec979c2d36d64eb9a4dbe",
      "old_mode": 33188,
      "old_path": "internal/ceres/coordinate_descent_minimizer.cc",
      "new_id": "558faed7ca32615728cdd5b4d6b0299ea9e3a93e",
      "new_mode": 33188,
      "new_path": "internal/ceres/coordinate_descent_minimizer.cc"
    },
    {
      "type": "modify",
      "old_id": "2552416f198a9e58d2039ef6cbd8dd72de9c07d0",
      "old_mode": 33188,
      "old_path": "internal/ceres/covariance_impl.cc",
      "new_id": "7c63c2cb273737db39cc9f652fae1e56d57c8a27",
      "new_mode": 33188,
      "new_path": "internal/ceres/covariance_impl.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b64f3d733b6602f65a024b2bd9b5f1abf05c5d82",
      "new_mode": 33188,
      "new_path": "internal/ceres/parallel_for_openmp.cc"
    },
    {
      "type": "modify",
      "old_id": "2de48657d7cef40106d89fbb3785540036e14d9d",
      "old_mode": 33188,
      "old_path": "internal/ceres/parallel_for_test.cc",
      "new_id": "04e5783a0044088ccf2e4b10f7d2c0659fee04ee",
      "new_mode": 33188,
      "new_path": "internal/ceres/parallel_for_test.cc"
    },
    {
      "type": "modify",
      "old_id": "17175a684872435c508cc468112033cb4818d253",
      "old_mode": 33188,
      "old_path": "internal/ceres/program_evaluator.h",
      "new_id": "13f2e835eb8340da44859963b21e220476b17a38",
      "new_mode": 33188,
      "new_path": "internal/ceres/program_evaluator.h"
    },
    {
      "type": "modify",
      "old_id": "da5d922e3e0ed351760fd245ee5060e940786a6d",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_eliminator_impl.h",
      "new_id": "203dcc9ef0b8248ae6098137ecbdc565d5facb3f",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_eliminator_impl.h"
    },
    {
      "type": "modify",
      "old_id": "2c581475bc376f362dbdaf3f27412484e7662f08",
      "old_mode": 33188,
      "old_path": "jni/Android.mk",
      "new_id": "80861ddabe471a93910088264989f91d5f6f4a4c",
      "new_mode": 33188,
      "new_path": "jni/Android.mk"
    }
  ]
}
