Commit Graph

51 Commits (3247751b5db8193b5fbd924b66b1e48325db7e7c)

Author SHA1 Message Date
Frank Dellaert 3247751b5d Major check-in: there are now two interchangeable implementations of VectorConfig.
VectorMap uses a straightforward stl::map of Vectors. It has O(log n)
insert and access, and is fairly fast at both. However, it has high overhead
for arithmetic operations such as +, scale, axpy etc...

VectorBTree uses a functional BTree as a way to access SubVectors
in an ordinary Vector. Inserting is O(n) and much slower, but accessing,
is O(log n) and might be a bit slower than VectorMap. Arithmetic operations
are blindingly fast, however. The cost is it is not as KISS as VectorMap.

Access to vectors is now exclusively via operator[]
Vector access in VectorMap is via a Vector reference
Vector access in VectorBtree is via the SubVector type (see Vector.h)

Feb 16 2010: FD: I made VectorMap the default, because I decided to try
and speed up conjugate gradients by using Sparse FactorGraphs all the way.
2010-02-17 03:29:12 +00:00
Frank Dellaert 5d33eb185c added SubVector type and some related routines 2010-02-15 23:53:16 +00:00
Manohar Paluri 693e13ef88 added default bool option to svd to sort the singular values and V. the default is true so pass false to avoid sorting 2010-02-14 04:54:39 +00:00
Alex Cunningham ea3b8083b0 Fixed more tests for NonlinearConstraints, inequality constraints now work. 2010-02-07 01:18:17 +00:00
Frank Dellaert 5554f6fc7e Faster non-GSL versions of BLAS 2-style calls 2010-01-31 22:56:06 +00:00
Alex Cunningham efe51c8419 Fixed typo in function name 2010-01-31 21:09:03 +00:00
Alex Cunningham c266012dcd Added GSL/ATLAS version of multiplyAdd() and transposeMultiplyAdd() 2010-01-31 18:25:03 +00:00
justinca 74dd7128ac Fixup cholesky decomposition - rename to LLt and RtR to make convention clear 2010-01-31 18:07:29 +00:00
Alex Cunningham 48d2dabe43 Added in-place insertion functions to Matrix, as well as a #define flag to enable or disable GSL code without a reconfigure. 2010-01-31 17:21:07 +00:00
Frank Dellaert 5e4b23df59 Matrix::multiplyAdd and transposeMultiplyAdd are "level 2" BLAS and speed up the numeric part of the code substantially. Alex might be able to speed them up even more by making them use real BLAS code within Matrix.cpp. 2010-01-31 16:04:24 +00:00
Frank Dellaert 4f998e5ecd Matrix::transposeMultiplyAdd 2010-01-31 02:53:03 +00:00
justinca 16c55975c1 Fix inverse_square_root, add cholesky decomposition options 2010-01-22 22:28:03 +00:00
Kai Ni 4b778a4e82 fixed a bug in matrix solve function 2010-01-22 06:45:01 +00:00
Alex Cunningham ac746ccead Improved performance of updateAb in NoiseModel with GSL/ATLAS. Various other small optimizations were made. 2010-01-21 18:51:59 +00:00
Alex Cunningham 063aa14118 Reimplemented matrix::householder_update using GSL and BLAS, you'll need to edit Makefile.am to enable the new version -- see email 2010-01-21 00:59:33 +00:00
Alex Cunningham 5f588031bc Merged NoiseQR back into trunk 2010-01-20 18:32:48 +00:00
Alex Cunningham 9c9007920a Changed the interface on Matrix::column() so that it uses the one in our library (now called column_() ) rather than the boost default. Currently, our implementation just uses the boost default, but this may change due to timing results. 2010-01-20 16:08:14 +00:00
Alex Cunningham 98b143cd22 Switched all loop indices in Matrix/Vector to size_t, with improved results in timeGaussianFactorGraph 2010-01-20 14:42:05 +00:00
Alex Cunningham 6bc0462669 Checked Matrix::collect() with different timing metric, and memcpy has approx 25% speedup over original version. Matrix_range is slower or the same speed as the original version. 2010-01-20 13:45:22 +00:00
Alex Cunningham 55e414cbdd Tried noalias() for collect(), but no real improvement 2010-01-20 03:25:55 +00:00
Alex Cunningham 03ec3e3e62 Implemented a version of collect() using matrix_range, but it had worse performance than memcpy. New version of vector_scale[column] with new pointer arithmetic implementation for approx 20% improvement. 2010-01-20 02:28:25 +00:00
Alex Cunningham 820ae5682d Optimized row version of vector_scale with approx 20% improvement 2010-01-20 02:04:25 +00:00
Alex Cunningham b860f06614 Switched Matrix::collect() over to a memcpy, but the results weren't actually an improvement 2010-01-20 01:42:36 +00:00
Alex Cunningham f577b27f52 Small optimizations on Matrix::collect(), additional timing capabilities, and now collect() can have dimensions specified to avoid need for lookup. 2010-01-19 21:49:22 +00:00
Frank Dellaert ea14959835 NoiseModel inhertance structure reversed, all constructors protected, new static "factories" 2010-01-17 17:47:23 +00:00
Richard Roberts f0ae2c064e Merging in NoiseModel, not yet used though 2010-01-16 18:39:39 +00:00
Frank Dellaert a4d61d2f23 Little performance twiddles that make little difference 2010-01-16 07:22:34 +00:00
Frank Dellaert 91a0fb23df Weighted pseudo-inverse now takes weights (1/sigma^2). Does not make a lot of performance difference. 2010-01-16 06:25:11 +00:00
Frank Dellaert fb3e38b161 25% performance increase by improving weighted_eliminate 2010-01-16 04:57:58 +00:00
Richard Roberts 8d28763339 Vector and Matrix initialization optimization 2010-01-12 16:12:31 +00:00
Frank Dellaert f1f21a8589 inverted sign of square root to make inv sqrt positive for simple covariance matrices 2010-01-10 13:53:31 +00:00
Frank Dellaert 15bb00683a transpose backsubstitute on upper-triangular matrix 2009-12-30 13:20:16 +00:00
Frank Dellaert c43cd425ab new back-substitution functions that can do unit triangular solves 2009-12-29 13:59:34 +00:00
Chris Beall a7a5e5e816 small performance improvement by using a pointer to address r 2009-12-14 16:56:50 +00:00
Chris Beall be10fc2a90 18% performance boost by using pointer to address destination matrix A 2009-12-11 23:59:37 +00:00
Alex Cunningham d7c67532bf Changed format of Matrix::vector_scale() to switch arguments 2009-12-08 21:10:38 +00:00
Frank Dellaert 16da0895a8 square_root_inverse 2009-12-08 20:48:13 +00:00
Frank Dellaert 152fa0069a fixed expected, actual nomenclature in assert_equal: always use (expected, equal) order 2009-12-08 13:53:33 +00:00
Eohan George ae9789c9ee Cleaner printing with tabs after each element 2009-12-02 23:01:49 +00:00
Frank Dellaert f5fc14c0f4 Fixed bug in revealing rank, even simpler than before. 2009-11-13 06:16:56 +00:00
Alex Cunningham 77a1754b69 Renamed LinearFactor -> GaussianFactor, LinearFactorGraph -> GaussianFactorGraph 2009-11-12 16:16:32 +00:00
Alex Cunningham f51614813e Improved weighted eliminate to handle arbitrary linear equality constraints 2009-11-11 14:42:09 +00:00
Alex Cunningham ddc0173671 Basic handling of constraints now works in factor graphs, assuming there is only one constraint on any given variable. 2009-11-10 04:36:07 +00:00
Alex Cunningham 2c37c94b5d Replaced the householder transform with the weighted system
Removed constrained components from makefile, they will disappear shortly
2009-11-09 21:34:20 +00:00
Alex Cunningham 03985d16f6 Fixed equality checking with NaNs in Matrix
removed extraneous print statement in Vector
2009-11-09 16:57:30 +00:00
Alex Cunningham 7ef9ed950b Improved performance of matrix scaling in LinearFactor::matrix_augmented
Added matrix scaling functions to scale either the rows or columns by values from a vector
2009-11-06 13:43:39 +00:00
Richard Roberts e2414561be Merged r895:900 from branch weightedQR - LinearFactorGraph now has sigmas and ConditionalGaussian now has precisions 2009-11-04 20:59:16 +00:00
Alex Cunningham 4c48bb08e1 Vector and Matrix updated with improved weighted householder operations and more tests. 2009-10-29 12:52:27 +00:00
Alex Cunningham 37bc303492 Added weighted Householder transforms that use precisions perform QDR factorization. Functions create a weighted vector pseudoinverse, and then use the pseudoinverse to substitute a solution into system. 2009-10-27 14:21:22 +00:00
Manohar Paluri 0b1b5eca67 Added const verifiers for member functions of the class which are compatible 2009-08-26 15:25:47 +00:00