commit | 852473b5f84ffdf2dc0c80ae656bfa424d456653 | [log] [tgz] |
---|---|---|
author | Mike Vitus <vitus@google.com> | Thu Nov 16 16:40:23 2017 -0800 |
committer | Mike Vitus <vitus@google.com> | Thu Dec 07 15:00:50 2017 -0800 |
tree | ba903341079cc4f97ab815a2257fb9d97ff1c193 | |
parent | e9009829b5d64ba221ea931693942994a225a877 [diff] |
Changes TBB to use tbb::task_arena instead of tbb::task_scheduler_init. Fixes the current implementation where the desired number of threads may not be honored if another tbb::task_scheduler_init is instantiated. We are using tbb::task_arena to solve this which is only available in newer versions of TBB. Also increases the performance by not creating/destroying the TBB setup via tbb::task_scheduler_init on every iteration evaluation. This increases the performance in single threaded mode using TBB by 10x. By not specifically calling tbb::task_scheduler_init, this will either respect any active tbb::task_scheduler_init instantiations or use the default TBB settings which is hardware dependent. Ceres will honor the user's requested number of threads through the task_arenas. Tested via compiling with TBB enabled and ran the unit tests. Change-Id: I5538407563449cdb5a0eaf8b8ccab62263912110
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