[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54886] trunk/blender/extern/libmv: Use threaded cost function and jacobian computation

Sergey Sharybin sergey.vfx at gmail.com
Tue Feb 26 18:52:11 CET 2013


Revision: 54886
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54886
Author:   nazgul
Date:     2013-02-26 17:52:10 +0000 (Tue, 26 Feb 2013)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/extern/libmv/CMakeLists.txt
    trunk/blender/extern/libmv/bundle.sh
    trunk/blender/extern/libmv/libmv/simple_pipeline/bundle.cc
    trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt
    trunk/blender/extern/libmv/third_party/ceres/SConscript
    trunk/blender/extern/libmv/third_party/ceres/bundle.sh

Modified: trunk/blender/extern/libmv/CMakeLists.txt
===================================================================
--- trunk/blender/extern/libmv/CMakeLists.txt	2013-02-26 17:06:05 UTC (rev 54885)
+++ trunk/blender/extern/libmv/CMakeLists.txt	2013-02-26 17:52:10 UTC (rev 54886)
@@ -216,7 +216,6 @@
 endif()
 
 add_definitions(
-	-DV3DLIB_ENABLE_SUITESPARSE
 	-DGOOGLE_GLOG_DLL_DECL=
 )
 

Modified: trunk/blender/extern/libmv/bundle.sh
===================================================================
--- trunk/blender/extern/libmv/bundle.sh	2013-02-26 17:06:05 UTC (rev 54885)
+++ trunk/blender/extern/libmv/bundle.sh	2013-02-26 17:52:10 UTC (rev 54886)
@@ -195,7 +195,6 @@
 endif()
 
 add_definitions(
-	-DV3DLIB_ENABLE_SUITESPARSE
 	-DGOOGLE_GLOG_DLL_DECL=
 )
 
@@ -218,7 +217,6 @@
 
 defs = []
 
-defs.append('V3DLIB_ENABLE_SUITESPARSE')
 defs.append('GOOGLE_GLOG_DLL_DECL=')
 
 src = env.Glob("*.cpp")

Modified: trunk/blender/extern/libmv/libmv/simple_pipeline/bundle.cc
===================================================================
--- trunk/blender/extern/libmv/libmv/simple_pipeline/bundle.cc	2013-02-26 17:06:05 UTC (rev 54885)
+++ trunk/blender/extern/libmv/libmv/simple_pipeline/bundle.cc	2013-02-26 17:52:10 UTC (rev 54886)
@@ -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 @@
   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);
 

Modified: trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt
===================================================================
--- trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt	2013-02-26 17:06:05 UTC (rev 54885)
+++ trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt	2013-02-26 17:52:10 UTC (rev 54886)
@@ -261,8 +261,15 @@
 	-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 {"

Modified: trunk/blender/extern/libmv/third_party/ceres/SConscript
===================================================================
--- trunk/blender/extern/libmv/third_party/ceres/SConscript	2013-02-26 17:06:05 UTC (rev 54885)
+++ trunk/blender/extern/libmv/third_party/ceres/SConscript	2013-02-26 17:52:10 UTC (rev 54886)
@@ -23,7 +23,11 @@
 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')
 

Modified: trunk/blender/extern/libmv/third_party/ceres/bundle.sh
===================================================================
--- trunk/blender/extern/libmv/third_party/ceres/bundle.sh	2013-02-26 17:06:05 UTC (rev 54885)
+++ trunk/blender/extern/libmv/third_party/ceres/bundle.sh	2013-02-26 17:52:10 UTC (rev 54886)
@@ -162,8 +162,15 @@
 	-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,7 +220,11 @@
 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')
 




More information about the Bf-blender-cvs mailing list