Changed default elimination algorithm to newer one with fewer matrix allocations to solve crashing bug from LM discovered in MAST

release/4.3a0
Alex Cunningham 2010-02-24 14:19:52 +00:00
parent 04f7bbf253
commit 022f706d94
2 changed files with 9 additions and 8 deletions

View File

@ -123,7 +123,7 @@ namespace gtsam {
* @param enableJoinFactor uses the older joint factor combine process when true,
* and when false uses the newer single matrix combine
*/
GaussianConditional::shared_ptr eliminateOne(const Symbol& key, bool enableJoinFactor = true);
GaussianConditional::shared_ptr eliminateOne(const Symbol& key, bool enableJoinFactor = false);
/**
* Peforms a supposedly-faster (fewer matrix copy) version of elimination
@ -138,7 +138,7 @@ namespace gtsam {
* @param enableJoinFactor uses the older joint factor combine process when true,
* and when false uses the newer single matrix combine
*/
GaussianBayesNet eliminate(const Ordering& ordering, bool enableJoinFactor = true);
GaussianBayesNet eliminate(const Ordering& ordering, bool enableJoinFactor = false);
/**
* optimize a linear factor graph
@ -146,7 +146,7 @@ namespace gtsam {
* @param enableJoinFactor uses the older joint factor combine process when true,
* and when false uses the newer single matrix combine
*/
VectorConfig optimize(const Ordering& ordering, bool enableJoinFactor = true);
VectorConfig optimize(const Ordering& ordering, bool enableJoinFactor = false);
/**
* shared pointer versions for MATLAB

View File

@ -762,11 +762,11 @@ TEST ( GaussianFactor, combine_matrix ) {
}
/* ************************************************************************* */
// FIXME: Executing this test results in a memory corruption error that
// crashes out and prints a stack trace on Ubuntu.
TEST ( GaussianFactor, exploding_MAST_factor ) {
// Test derived from a crashing error in MAST
// Works properly with the newer elimination code
// This is only a test of execution without crashing
// Tried switching to a different number, still same problem
Symbol lA2('l', 18295873486192642);
Matrix A1 = eye(2);
Vector b1 = zero(2);
@ -785,8 +785,9 @@ TEST ( GaussianFactor, exploding_MAST_factor ) {
fg.push_back(f1);
fg.push_back(f2);
// FIXME: Uncomment to cause the error
//GaussianConditional::shared_ptr cg = fg.eliminateOne(lA2);
// works when using the newer implementation of eliminate
GaussianConditional::shared_ptr cg = fg.eliminateOne(lA2);
CHECK(true);
}