Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2013-02-26 21:52:10 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2013-02-26 21:52:10 +0400
commit1d20f2496ab489c98224375ba63f4a726e931edb (patch)
treeccf4d56f44a639c724b295f77ad6510715f6026f /extern/libmv
parent0f91a283d401df68e45ff8c9e18d3c9f2fe79d84 (diff)
Use threaded cost function and jacobian computation
Also made it theraded linear solver, seems it makes sense for iterative schur with inner iterations enabled. Use OpenMO's max therads called from bundler code to detect how many threads to use. Could be changed in a way that number of threads is passing in options from blender side in the future. Also removed redundant V3D definition from compiler's flags.
Diffstat (limited to 'extern/libmv')
-rw-r--r--extern/libmv/CMakeLists.txt1
-rwxr-xr-xextern/libmv/bundle.sh2
-rw-r--r--extern/libmv/libmv/simple_pipeline/bundle.cc9
-rw-r--r--extern/libmv/third_party/ceres/CMakeLists.txt7
-rw-r--r--extern/libmv/third_party/ceres/SConscript4
-rwxr-xr-xextern/libmv/third_party/ceres/bundle.sh11
6 files changed, 31 insertions, 3 deletions
diff --git a/extern/libmv/CMakeLists.txt b/extern/libmv/CMakeLists.txt
index 200e20de91b..1c289cd2778 100644
--- a/extern/libmv/CMakeLists.txt
+++ b/extern/libmv/CMakeLists.txt
@@ -216,7 +216,6 @@ else()
endif()
add_definitions(
- -DV3DLIB_ENABLE_SUITESPARSE
-DGOOGLE_GLOG_DLL_DECL=
)
diff --git a/extern/libmv/bundle.sh b/extern/libmv/bundle.sh
index 6b26bd95157..21d0308268a 100755
--- a/extern/libmv/bundle.sh
+++ b/extern/libmv/bundle.sh
@@ -195,7 +195,6 @@ ${third_glog_headers}
endif()
add_definitions(
- -DV3DLIB_ENABLE_SUITESPARSE
-DGOOGLE_GLOG_DLL_DECL=
)
@@ -218,7 +217,6 @@ Import('env')
defs = []
-defs.append('V3DLIB_ENABLE_SUITESPARSE')
defs.append('GOOGLE_GLOG_DLL_DECL=')
src = env.Glob("*.cpp")
diff --git a/extern/libmv/libmv/simple_pipeline/bundle.cc b/extern/libmv/libmv/simple_pipeline/bundle.cc
index 7502ca389c4..c29eb3d5df6 100644
--- a/extern/libmv/libmv/simple_pipeline/bundle.cc
+++ b/extern/libmv/libmv/simple_pipeline/bundle.cc
@@ -33,6 +33,10 @@
#include "libmv/simple_pipeline/reconstruction.h"
#include "libmv/simple_pipeline/tracks.h"
+#ifdef _OPENMP
+# include <omp.h>
+#endif
+
namespace libmv {
// The intrinsics need to get combined into a single parameter block; use these
@@ -332,6 +336,11 @@ void EuclideanBundleCommonIntrinsics(const Tracks &tracks,
options.use_inner_iterations = true;
options.max_num_iterations = 100;
+#ifdef _OPENMP
+ options.num_threads = omp_get_max_threads();
+ options.num_linear_solver_threads = omp_get_max_threads();
+#endif
+
ceres::Solver::Summary summary;
ceres::Solve(options, &problem, &summary);
diff --git a/extern/libmv/third_party/ceres/CMakeLists.txt b/extern/libmv/third_party/ceres/CMakeLists.txt
index 5e58c2964ce..b71fe1d5cdb 100644
--- a/extern/libmv/third_party/ceres/CMakeLists.txt
+++ b/extern/libmv/third_party/ceres/CMakeLists.txt
@@ -261,8 +261,15 @@ add_definitions(
-DCERES_NO_CXSPARSE
-DCERES_NO_PROTOCOL_BUFFERS
-DCERES_RESTRICT_SCHUR_SPECIALIZATION
+ -DCERES_HAVE_RWLOCK
)
+if(WITH_OPENMP)
+ add_definitions(
+ -DCERES_USE_OPENMP
+ )
+endif()
+
if(MSVC10)
add_definitions(
-D"CERES_HASH_NAMESPACE_START=namespace std {"
diff --git a/extern/libmv/third_party/ceres/SConscript b/extern/libmv/third_party/ceres/SConscript
index 6d0d2cd5c40..6e490cfd5cf 100644
--- a/extern/libmv/third_party/ceres/SConscript
+++ b/extern/libmv/third_party/ceres/SConscript
@@ -23,6 +23,10 @@ defs.append('CERES_NO_SUITESPARSE')
defs.append('CERES_NO_CXSPARSE')
defs.append('CERES_NO_PROTOCOL_BUFFERS')
defs.append('CERES_RESTRICT_SCHUR_SPECIALIZATION')
+defs.append('CERES_HAVE_RWLOCK')
+
+if env['WITH_BF_OPENMP']:
+ defs.append('CERES_USE_OPENMP')
if 'Mac OS X 10.5' in env['MACOSX_SDK_CHECK']:
defs.append('CERES_NO_TR1')
diff --git a/extern/libmv/third_party/ceres/bundle.sh b/extern/libmv/third_party/ceres/bundle.sh
index b2c8330ec3e..65af263f7c4 100755
--- a/extern/libmv/third_party/ceres/bundle.sh
+++ b/extern/libmv/third_party/ceres/bundle.sh
@@ -162,8 +162,15 @@ add_definitions(
-DCERES_NO_CXSPARSE
-DCERES_NO_PROTOCOL_BUFFERS
-DCERES_RESTRICT_SCHUR_SPECIALIZATION
+ -DCERES_HAVE_RWLOCK
)
+if(WITH_OPENMP)
+ add_definitions(
+ -DCERES_USE_OPENMP
+ )
+endif()
+
if(MSVC10)
add_definitions(
-D"CERES_HASH_NAMESPACE_START=namespace std {"
@@ -213,6 +220,10 @@ defs.append('CERES_NO_SUITESPARSE')
defs.append('CERES_NO_CXSPARSE')
defs.append('CERES_NO_PROTOCOL_BUFFERS')
defs.append('CERES_RESTRICT_SCHUR_SPECIALIZATION')
+defs.append('CERES_HAVE_RWLOCK')
+
+if env['WITH_BF_OPENMP']:
+ defs.append('CERES_USE_OPENMP')
if 'Mac OS X 10.5' in env['MACOSX_SDK_CHECK']:
defs.append('CERES_NO_TR1')