Add Apple's Accelerate framework as a sparse linear algebra library.
- Currently DynamicSparseNormalCholeskySolver is unsupported for
Accelerate.
Change-Id: I03b5a86bb22fef249c4aecd48947a613e8eff7a5
diff --git a/internal/ceres/generate_bundle_adjustment_tests.py b/internal/ceres/generate_bundle_adjustment_tests.py
index 86452b5..2f3375a 100644
--- a/internal/ceres/generate_bundle_adjustment_tests.py
+++ b/internal/ceres/generate_bundle_adjustment_tests.py
@@ -49,15 +49,19 @@
('ITERATIVE_SCHUR', 'SUITE_SPARSE', 'CLUSTER_JACOBI'),
('ITERATIVE_SCHUR', 'EIGEN_SPARSE', 'CLUSTER_JACOBI'),
('ITERATIVE_SCHUR', 'CX_SPARSE', 'CLUSTER_JACOBI'),
+ ('ITERATIVE_SCHUR', 'ACCELERATE_SPARSE','CLUSTER_JACOBI'),
('ITERATIVE_SCHUR', 'SUITE_SPARSE', 'CLUSTER_TRIDIAGONAL'),
('ITERATIVE_SCHUR', 'EIGEN_SPARSE', 'CLUSTER_TRIDIAGONAL'),
('ITERATIVE_SCHUR', 'CX_SPARSE', 'CLUSTER_TRIDIAGONAL'),
+ ('ITERATIVE_SCHUR', 'ACCELERATE_SPARSE','CLUSTER_TRIDIAGONAL'),
('SPARSE_NORMAL_CHOLESKY', 'SUITE_SPARSE', 'IDENTITY'),
('SPARSE_NORMAL_CHOLESKY', 'EIGEN_SPARSE', 'IDENTITY'),
('SPARSE_NORMAL_CHOLESKY', 'CX_SPARSE', 'IDENTITY'),
+ ('SPARSE_NORMAL_CHOLESKY', 'ACCELERATE_SPARSE','IDENTITY'),
('SPARSE_SCHUR', 'SUITE_SPARSE', 'IDENTITY'),
('SPARSE_SCHUR', 'EIGEN_SPARSE', 'IDENTITY'),
('SPARSE_SCHUR', 'CX_SPARSE', 'IDENTITY'),
+ ('SPARSE_SCHUR', 'ACCELERATE_SPARSE','IDENTITY'),
]
FILENAME_SHORTENING_MAP = dict(
@@ -69,6 +73,7 @@
SUITE_SPARSE='suitesparse',
EIGEN_SPARSE='eigensparse',
CX_SPARSE='cxsparse',
+ ACCELERATE_SPARSE='acceleratesparse',
IDENTITY='identity',
JACOBI='jacobi',
SCHUR_JACOBI='schurjacobi',
@@ -192,6 +197,9 @@
elif sparse_backend == 'CX_SPARSE':
preprocessor_conditions_begin.append('#ifndef CERES_NO_CXSPARSE')
preprocessor_conditions_end.insert(0, '#endif // CERES_NO_CXSPARSE')
+ elif sparse_backend == 'ACCELERATE_SPARSE':
+ preprocessor_conditions_begin.append('#ifndef CERES_NO_ACCELERATE_SPARSE')
+ preprocessor_conditions_end.insert(0, '#endif // CERES_NO_ACCELERATE_SPARSE')
elif sparse_backend == 'EIGEN_SPARSE':
preprocessor_conditions_begin.append('#ifdef CERES_USE_EIGEN_SPARSE')
preprocessor_conditions_end.insert(0, '#endif // CERES_USE_EIGEN_SPARSE')