From 554107b6a1c4a89288e77fbf3e0d11c4ec777bfe Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 14 Jun 2012 13:33:37 +0000 Subject: 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. --- extern/libmv/third_party/ceres/CMakeLists.txt | 36 ++++++++++++++++----------- extern/libmv/third_party/ceres/SConscript | 4 ++- extern/libmv/third_party/ceres/bundle.sh | 20 ++++++++++++++- 3 files changed, 43 insertions(+), 17 deletions(-) (limited to 'extern') 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' -- cgit v1.2.3