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-04-22 13:25:37 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2013-04-22 13:25:37 +0400
commitd05f5da111e026c2a4dbe0432bca7b3266857893 (patch)
tree6a3aab8cbca37167aece3f7458538117bf855078 /extern/libmv/third_party/ceres/internal/ceres/suitesparse.h
parenta7f869df64136ba47cfa28327884966d6e90531f (diff)
Update Ceres to current upstream version
This brings a fixes for threading issue in BLAS making BA step more robust (there were some in-detemrinacy caused by this threading issue). Also brings some optimizations, which does not directly affect on blender.
Diffstat (limited to 'extern/libmv/third_party/ceres/internal/ceres/suitesparse.h')
-rw-r--r--extern/libmv/third_party/ceres/internal/ceres/suitesparse.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/extern/libmv/third_party/ceres/internal/ceres/suitesparse.h b/extern/libmv/third_party/ceres/internal/ceres/suitesparse.h
index 5a8ef63bd2b..a1a4f355d76 100644
--- a/extern/libmv/third_party/ceres/internal/ceres/suitesparse.h
+++ b/extern/libmv/third_party/ceres/internal/ceres/suitesparse.h
@@ -70,10 +70,8 @@ class SuiteSparse {
// Create a cholmod_sparse wrapper around the contents of A. This is
// a shallow object, which refers to the contents of A and does not
- // use the SuiteSparse machinery to allocate memory, this object
- // should be disposed off with a delete and not a call to Free as is
- // the case for objects returned by CreateSparseMatrixTranspose.
- cholmod_sparse* CreateSparseMatrixTransposeView(CompressedRowSparseMatrix* A);
+ // use the SuiteSparse machinery to allocate memory.
+ cholmod_sparse CreateSparseMatrixTransposeView(CompressedRowSparseMatrix* A);
// Given a vector x, build a cholmod_dense vector of size out_size
// with the first in_size entries copied from x. If x is NULL, then
@@ -135,6 +133,12 @@ class SuiteSparse {
cholmod_factor* AnalyzeCholeskyWithUserOrdering(cholmod_sparse* A,
const vector<int>& ordering);
+ // Perform a symbolic factorization of A without re-ordering A. No
+ // postordering of the elimination tree is performed. This ensures
+ // that the symbolic factor does not introduce an extra permutation
+ // on the matrix. See the documentation for CHOLMOD for more details.
+ cholmod_factor* AnalyzeCholeskyWithNaturalOrdering(cholmod_sparse* A);
+
// Use the symbolic factorization in L, to find the numerical
// factorization for the matrix A or AA^T. Return true if
// successful, false otherwise. L contains the numeric factorization
@@ -203,6 +207,11 @@ class SuiteSparse {
vector<int>* block_rows,
vector<int>* block_cols);
+ // Find a fill reducing approximate minimum degree
+ // ordering. ordering is expected to be large enough to hold the
+ // ordering.
+ void ApproximateMinimumDegreeOrdering(cholmod_sparse* matrix, int* ordering);
+
void Free(cholmod_sparse* m) { cholmod_free_sparse(&m, &cc_); }
void Free(cholmod_dense* m) { cholmod_free_dense(&m, &cc_); }
void Free(cholmod_factor* m) { cholmod_free_factor(&m, &cc_); }