dellaert
							
						 
						
							 
							
							
							
								
							
								00d0a7b045 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'feature/BAD_stackAb' into feature/BAD  
							
							 
							
							
							
						 
						
							2014-10-15 01:20:01 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								9b1c9bbf37 
								
							
								 
							
						 
						
							
							
								
								Allocate temporary matrix on the stack rather tahn on heap, and give VerticalBlockMatrix a view on it.  
							
							 
							
							
							
						 
						
							2014-10-15 00:56:06 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								c88b2a5902 
								
							
								 
							
						 
						
							
							
								
								Fixed bizarre link erro as well as off-by-1 bug  
							
							 
							
							
							
						 
						
							2014-10-15 00:34:28 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								0f055f7910 
								
							
								 
							
						 
						
							
							
								
								Pass matrix to VerticalBlockMatrix constructor  
							
							 
							
							
							
						 
						
							2014-10-15 00:28:53 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								2092705d12 
								
							
								 
							
						 
						
							
							
								
								Allow for other Eigen matrix types  
							
							 
							
							
							
						 
						
							2014-10-15 00:27:43 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								625b939b66 
								
							
								 
							
						 
						
							
							
								
								Another very significant speed-up of reverseAD pipeline, by template specialization of the leaf case for fixed matrices. Unfortunately, while this sped up reverse AD for our SFM kernel by 300%, reverseAD was only 6%, and is now 2% of total time. So, time to look elsewhere.  
							
							 
							
							... 
							
							
							
							Oh, and, it is clear that the Identity matrix for Leaf only expressions is completely known at compile time: Eigen::Matrix<double, T::dimension, T::dimension>::Identity(). That should nicely speed up many a PriorFactor (replacement). 
							
						 
						
							2014-10-14 23:40:21 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								4894dccf5b 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'feature/BAD_linearize' into feature/BAD: Now awesome performance!  
							
							 
							
							... 
							
							
							
							In this I branch essentially implemented two things
1) I used template-meta-programming to automate adding more functional nodes
2) I overloaded "linearize" so that now reverse AD writes to Eigen::Block<Matrix> views of the VerticalBlockMatrix that will be passed to the JacobianFacor. This did wonders for performance, making the AD pipeline faster than dedicated factors. Because the latter is based on optional<Matrix> references, they cannot apply the same trick :-(
3) Finally, I removed the forward AD pipeline. Not worth keeping (this implementation) alive. 
							
						 
						
							2014-10-14 18:05:59 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								baaeaacabe 
								
							
								 
							
						 
						
							
							
								
								Made dimensions constant property. Now performance is ***blazing***, way past custom factors.  
							
							 
							
							
							
						 
						
							2014-10-14 17:46:57 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								c971207abf 
								
							
								 
							
						 
						
							
							
								
								Switched to vector for dimensions  
							
							 
							
							
							
						 
						
							2014-10-14 17:16:31 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								1c3f328fb2 
								
							
								 
							
						 
						
							
							
								
								Successful switch to Blocks !  
							
							 
							
							
							
						 
						
							2014-10-14 15:43:41 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								f3e1561105 
								
							
								 
							
						 
						
							
							
								
								Prepare VerticalBlockMatrix for filling  
							
							 
							
							
							
						 
						
							2014-10-14 11:13:49 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								027759300d 
								
							
								 
							
						 
						
							
							
								
								size_t argument for check  
							
							 
							
							
							
						 
						
							2014-10-14 11:13:09 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								4c76f39009 
								
							
								 
							
						 
						
							
							
								
								Now uses dimensions  
							
							 
							
							
							
						 
						
							2014-10-14 09:55:34 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								d8d94d0c34 
								
							
								 
							
						 
						
							
							
								
								dimensions implemented and tested  
							
							 
							
							
							
						 
						
							2014-10-14 09:53:47 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								781cc6daa9 
								
							
								 
							
						 
						
							
							
								
								keys now from expression_  
							
							 
							
							
							
						 
						
							2014-10-14 08:59:01 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								0a41b0a027 
								
							
								 
							
						 
						
							
							
								
								Moved meta-programming tests to testExpressionMeta.cpp  
							
							 
							
							
							
						 
						
							2014-10-14 08:53:16 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								ef5bf03c81 
								
							
								 
							
						 
						
							
							
								
								Clean up  
							
							 
							
							
							
						 
						
							2014-10-13 23:04:30 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								70f0caf0e3 
								
							
								 
							
						 
						
							
							
								
								Experimenting w Fusion  
							
							 
							
							
							
						 
						
							2014-10-13 22:50:47 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								dda91df6e1 
								
							
								 
							
						 
						
							
							
								
								On the way to full fusion: Optional meta-function now separate from Jacobian.  
							
							 
							
							
							
						 
						
							2014-10-13 18:32:58 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								ba0b68110f 
								
							
								 
							
						 
						
							
							
								
								Boost Fusion needed to access values :-(  
							
							 
							
							
							
						 
						
							2014-10-13 13:56:51 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								a52ff52941 
								
							
								 
							
						 
						
							
							
								
								Try some meta-transforms  
							
							 
							
							
							
						 
						
							2014-10-13 13:34:00 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								1c1695353e 
								
							
								 
							
						 
						
							
							
								
								Now we can apply ExecutionTrace and Expression as meta-functions  
							
							 
							
							
							
						 
						
							2014-10-13 13:04:37 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								c11d7885e1 
								
							
								 
							
						 
						
							
							
								
								Comments  
							
							 
							
							
							
						 
						
							2014-10-13 11:55:16 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								74269902d7 
								
							
								 
							
						 
						
							
							
								
								Big collapse now realized all the way through  
							
							 
							
							
							
						 
						
							2014-10-13 11:37:47 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								da0e5fe52f 
								
							
								 
							
						 
						
							
							
								
								The great collapse: instead of two recursively defined classes, there is now only one. The Record class is now a (recursive) inner class.  
							
							 
							
							
							
						 
						
							2014-10-13 10:50:05 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								bc9e11f43c 
								
							
								 
							
						 
						
							
							
								
								Pre-big collapse: prototype recursively defined inner Record2 type  
							
							 
							
							
							
						 
						
							2014-10-13 10:10:46 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								7fde47c48b 
								
							
								 
							
						 
						
							
							
								
								No more JacobianTA typedefs -> all use Jacobian<T,A> now.  
							
							 
							
							
							
						 
						
							2014-10-13 09:25:06 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								7848d74928 
								
							
								 
							
						 
						
							
							
								
								Detailed explanation of recursive class composition pattern.  
							
							 
							
							... 
							
							
							
							Jacobian type now defined in argument. 
							
						 
						
							2014-10-13 08:49:12 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								7f621af54a 
								
							
								 
							
						 
						
							
							
								
								Fixed bug  
							
							 
							
							
							
						 
						
							2014-10-13 00:57:11 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								2e8d868cd2 
								
							
								 
							
						 
						
							
							
								
								keys have been implemented  
							
							 
							
							
							
						 
						
							2014-10-13 00:37:46 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								a9d9fcd241 
								
							
								 
							
						 
						
							
							
								
								FunctionalNode inherited for all three functional ExpressionNode sub-classes  
							
							 
							
							
							
						 
						
							2014-10-13 00:31:03 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								8100d89094 
								
							
								 
							
						 
						
							
							
								
								So much better as methods  
							
							 
							
							
							
						 
						
							2014-10-12 23:57:08 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								55cc4ba56c 
								
							
								 
							
						 
						
							
							
								
								Switched names of fold result and meta-function that is folded over  
							
							 
							
							
							
						 
						
							2014-10-12 23:31:58 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								ef21a4ba4a 
								
							
								 
							
						 
						
							
							
								
								Major re-org in preparation of recursive Functional nodes  
							
							 
							
							
							
						 
						
							2014-10-12 23:03:33 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								408be628d2 
								
							
								 
							
						 
						
							
							
								
								Small change in meta-programming, big improvement in clarity  
							
							 
							
							
							
						 
						
							2014-10-12 22:17:21 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								107bcd8bb4 
								
							
								 
							
						 
						
							
							
								
								Going forwards, we default to reverse :-)  
							
							 
							
							
							
						 
						
							2014-10-12 22:04:40 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								4d1eb05c7d 
								
							
								 
							
						 
						
							
							
								
								Passing JacobianMap as an argument now..  
							
							 
							
							
							
						 
						
							2014-10-12 20:16:08 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								dc541f1051 
								
							
								 
							
						 
						
							
							
								
								made traceSize an instance variable  
							
							 
							
							
							
						 
						
							2014-10-12 18:52:12 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								7a5f48f6dd 
								
							
								 
							
						 
						
							
							
								
								Fixed typo in assert  
							
							 
							
							
							
						 
						
							2014-10-12 12:20:12 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								fea2eb0b5f 
								
							
								 
							
						 
						
							
							
								
								Inlined VerticalBlockMatrix construction  
							
							 
							
							
							
						 
						
							2014-10-12 11:05:43 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								ed62271f81 
								
							
								 
							
						 
						
							
							
								
								Dealing with constrained noise model  
							
							 
							
							
							
						 
						
							2014-10-12 10:52:07 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								86d3e559e6 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'feature/BAD' into feature/BAD_linearize  
							
							 
							
							
							
						 
						
							2014-10-11 23:07:40 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								c9f80536c0 
								
							
								 
							
						 
						
							
							
								
								Added a constraint model  
							
							 
							
							
							
						 
						
							2014-10-11 23:07:23 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								e46a8b05eb 
								
							
								 
							
						 
						
							
							
								
								Some mode readable matrix types  
							
							 
							
							
							
						 
						
							2014-10-11 23:06:57 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								3c6f7a42e6 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'feature/BAD' into feature/BAD_linearize: easier trace/dTdA access  
							
							 
							
							
							
						 
						
							2014-10-11 22:31:43 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								c776e87f78 
								
							
								 
							
						 
						
							
							
								
								Refactoring for readability/sanity  
							
							 
							
							
							
						 
						
							2014-10-11 21:33:07 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								0c7ea68f2f 
								
							
								 
							
						 
						
							
							
								
								Now overwriting linearize as preparation for direct VericalBlockMatrix  
							
							 
							
							
							
						 
						
							2014-10-11 17:05:53 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								1bac83381f 
								
							
								 
							
						 
						
							
							
								
								Merge remote-tracking branch 'origin/feature/BAD_meta' into feature/BAD: Now the Record structures are recursively generated using template meta-programming, basically mpl::fold  
							
							 
							
							... 
							
							
							
							Conflicts:
	gtsam_unstable/nonlinear/Expression-inl.h 
							
						 
						
							2014-10-11 15:20:12 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								88f9a423c5 
								
							
								 
							
						 
						
							
							
								
								Numbered types avoid ambiguity  
							
							 
							
							
							
						 
						
							2014-10-11 14:19:39 +02:00  
						
					 
				
					
						
							
							
								 
								dellaert
							
						 
						
							 
							
							
							
								
							
								252024cc9b 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'feature/BAD_raw' into feature/BAD: the entire allocation tree is now allocated all at once, in Expression::reverse, on the stack. the traceExecution method then takes a raw pointer, and the "placement new" is used to grab that existing memory, avoiding all mallocs altogether. The only mallocs that still happen - that are responsible for almost all time within reverse - are the leaves inserting general matrices into a map to pass back to linearize.  
							
							 
							
							
							
						 
						
							2014-10-11 13:50:49 +02:00