diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-06-14 17:33:37 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-06-14 17:33:37 +0400 |
commit | 554107b6a1c4a89288e77fbf3e0d11c4ec777bfe (patch) | |
tree | c47aefbe67e9ea7e24b64af735b6402a5c31c9b8 | |
parent | 1f19bacf8ee39b779b4e2940bed758ade1191ee2 (diff) |
Disable fixed-sized specializations for schur solver
As far as i remember Keir, this should be safe for our usages of ceres
and it should save noticeable amount of time and used memory when
compiling blender with libmv support.
Quick tests with tracking went smooth after this.
-rw-r--r-- | extern/libmv/third_party/ceres/CMakeLists.txt | 36 | ||||
-rw-r--r-- | extern/libmv/third_party/ceres/SConscript | 4 | ||||
-rwxr-xr-x | extern/libmv/third_party/ceres/bundle.sh | 20 |
3 files changed, 43 insertions, 17 deletions
diff --git a/extern/libmv/third_party/ceres/CMakeLists.txt b/extern/libmv/third_party/ceres/CMakeLists.txt index 5207bddec12..e6a9e430c47 100644 --- a/extern/libmv/third_party/ceres/CMakeLists.txt +++ b/extern/libmv/third_party/ceres/CMakeLists.txt @@ -58,21 +58,6 @@ set(SRC internal/ceres/detect_structure.cc internal/ceres/evaluator.cc internal/ceres/file.cc - internal/ceres/generated/schur_eliminator_2_2_2.cc - internal/ceres/generated/schur_eliminator_2_2_3.cc - internal/ceres/generated/schur_eliminator_2_2_4.cc - internal/ceres/generated/schur_eliminator_2_2_d.cc - internal/ceres/generated/schur_eliminator_2_3_3.cc - internal/ceres/generated/schur_eliminator_2_3_4.cc - internal/ceres/generated/schur_eliminator_2_3_9.cc - internal/ceres/generated/schur_eliminator_2_3_d.cc - internal/ceres/generated/schur_eliminator_2_4_3.cc - internal/ceres/generated/schur_eliminator_2_4_4.cc - internal/ceres/generated/schur_eliminator_2_4_d.cc - internal/ceres/generated/schur_eliminator_4_4_2.cc - internal/ceres/generated/schur_eliminator_4_4_3.cc - internal/ceres/generated/schur_eliminator_4_4_4.cc - internal/ceres/generated/schur_eliminator_4_4_d.cc internal/ceres/generated/schur_eliminator_d_d_d.cc internal/ceres/gradient_checking_cost_function.cc internal/ceres/implicit_schur_complement.cc @@ -191,6 +176,26 @@ set(SRC internal/ceres/visibility.h ) +#if(FALSE) +# list(APPEND SRC +# internal/ceres/generated/schur_eliminator_2_2_2.cc +# internal/ceres/generated/schur_eliminator_2_2_3.cc +# internal/ceres/generated/schur_eliminator_2_2_4.cc +# internal/ceres/generated/schur_eliminator_2_2_d.cc +# internal/ceres/generated/schur_eliminator_2_3_3.cc +# internal/ceres/generated/schur_eliminator_2_3_4.cc +# internal/ceres/generated/schur_eliminator_2_3_9.cc +# internal/ceres/generated/schur_eliminator_2_3_d.cc +# internal/ceres/generated/schur_eliminator_2_4_3.cc +# internal/ceres/generated/schur_eliminator_2_4_4.cc +# internal/ceres/generated/schur_eliminator_2_4_d.cc +# internal/ceres/generated/schur_eliminator_4_4_2.cc +# internal/ceres/generated/schur_eliminator_4_4_3.cc +# internal/ceres/generated/schur_eliminator_4_4_4.cc +# internal/ceres/generated/schur_eliminator_4_4_d.cc +# ) +#endif() + if(WIN32) list(APPEND INC ../glog/src/windows @@ -213,6 +218,7 @@ add_definitions( -D"CERES_HASH_NAMESPACE_END=}}" -DCERES_NO_SUITESPARSE -DCERES_DONT_HAVE_PROTOCOL_BUFFERS + -DCERES_RESTRICT_SCHUR_SPECIALIZATION ) blender_add_lib(extern_ceres "${SRC}" "${INC}" "${INC_SYS}") diff --git a/extern/libmv/third_party/ceres/SConscript b/extern/libmv/third_party/ceres/SConscript index d8b2b8520d7..6b5f1b8d64d 100644 --- a/extern/libmv/third_party/ceres/SConscript +++ b/extern/libmv/third_party/ceres/SConscript @@ -13,13 +13,15 @@ src = [] defs = [] src += env.Glob('internal/ceres/*.cc') -src += env.Glob('internal/ceres/generated/*.cc') +src += env.Glob('internal/ceres/generated/schur_eliminator_d_d_d.cc') +#src += env.Glob('internal/ceres/generated/*.cc') defs.append('CERES_HAVE_PTHREAD') defs.append('CERES_HASH_NAMESPACE_START=namespace std { namespace tr1 {') defs.append('CERES_HASH_NAMESPACE_END=}}') defs.append('CERES_NO_SUITESPARSE') defs.append('CERES_DONT_HAVE_PROTOCOL_BUFFERS') +defs.append('CERES_RESTRICT_SCHUR_SPECIALIZATION') incs = '. ../../ ../../../Eigen3 ./include ./internal ../gflags' diff --git a/extern/libmv/third_party/ceres/bundle.sh b/extern/libmv/third_party/ceres/bundle.sh index f54342180db..99aaadd8d87 100755 --- a/extern/libmv/third_party/ceres/bundle.sh +++ b/extern/libmv/third_party/ceres/bundle.sh @@ -1,5 +1,6 @@ #!/bin/sh +if false; then if [ "x$1" = "x--i-really-know-what-im-doing" ] ; then echo Proceeding as requested by command line ... else @@ -36,7 +37,10 @@ done rm -rf $tmp -sources=`find ./include ./internal -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | sed -r 's/^\.\//\t/' | sort -d` +fi + +sources=`find ./include ./internal -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | sed -r 's/^\.\//\t/' | grep -v -E 'schur_eliminator_[0-9]_[0-9]_[0-9d].cc' | sort -d` +generated_sources=`find ./include ./internal -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | sed -r 's/^\.\//#\t\t/' | grep -E 'schur_eliminator_[0-9]_[0-9]_[0-9d].cc' | sort -d` headers=`find ./include ./internal -type f -iname '*.h' | sed -r 's/^\.\//\t/' | sort -d` src_dir=`find ./internal -type f -iname '*.cc' -exec dirname {} \; -or -iname '*.cpp' -exec dirname {} \; -or -iname '*.c' -exec dirname {} \; | sed -r 's/^\.\//\t/' | sort -d | uniq` @@ -48,6 +52,10 @@ for x in $src_dir $src_third_dir; do continue; fi + if test `echo "$x" | grep -c generated` -eq 1; then + continue; + fi + if stat $x/*.cpp > /dev/null 2>&1; then t="src += env.Glob('`echo $x'/*.cpp'`')" fi @@ -121,6 +129,12 @@ ${sources} ${headers} ) +#if(FALSE) +# list(APPEND SRC +${generated_sources} +# ) +#endif() + if(WIN32) list(APPEND INC ../glog/src/windows @@ -143,6 +157,7 @@ add_definitions( -D"CERES_HASH_NAMESPACE_END=}}" -DCERES_NO_SUITESPARSE -DCERES_DONT_HAVE_PROTOCOL_BUFFERS + -DCERES_RESTRICT_SCHUR_SPECIALIZATION ) blender_add_lib(extern_ceres "\${SRC}" "\${INC}" "\${INC_SYS}") @@ -164,12 +179,15 @@ src = [] defs = [] $src +src += env.Glob('internal/ceres/generated/schur_eliminator_d_d_d.cc') +#src += env.Glob('internal/ceres/generated/*.cc') defs.append('CERES_HAVE_PTHREAD') defs.append('CERES_HASH_NAMESPACE_START=namespace std { namespace tr1 {') defs.append('CERES_HASH_NAMESPACE_END=}}') defs.append('CERES_NO_SUITESPARSE') defs.append('CERES_DONT_HAVE_PROTOCOL_BUFFERS') +defs.append('CERES_RESTRICT_SCHUR_SPECIALIZATION') incs = '. ../../ ../../../Eigen3 ./include ./internal ../gflags' |