51 Commits

Author SHA1 Message Date
Gael Guennebaud
62f332fc04 Make sure we evaluate into temporaries matching evaluator storage order requirements 2014-07-19 15:19:10 +02:00
Gael Guennebaud
b868bfb84a Make operator=(EigenBase<>) uses the new assignment mechanism and introduce a generic EigenBase to EigenBase assignment kind based on the previous evalTo mechanism. 2014-06-25 17:23:52 +02:00
Gael Guennebaud
3849cc65ee Implement binaryop and transpose evaluators for sparse matrices 2014-06-23 10:40:03 +02:00
Gael Guennebaud
5e26b7cf9d Extend evaluation traits debuging info 2014-03-12 18:13:18 +01:00
Gael Guennebaud
a6be1952f4 Fix a few regression when moving the flags 2014-03-12 16:18:34 +01:00
Gael Guennebaud
8dd3b716e3 Move evaluation related flags from traits to evaluator and fix evaluators of MapBase and Replicate 2014-03-12 13:34:11 +01:00
Gael Guennebaud
da6ec81282 Move CoeffReadCost mechanism to evaluators 2014-03-10 23:24:40 +01:00
Gael Guennebaud
af31b6c37a Generalize evaluator<Inverse<>> such that there is no need to specialize it 2014-02-21 15:22:08 +01:00
Gael Guennebaud
93125e372d Port LU module to evaluators (except image() and kernel()) 2014-02-20 15:26:15 +01:00
Gael Guennebaud
2eee6eaf3c Fix mixing scalar types with evaluators 2014-02-19 16:30:17 +01:00
Gael Guennebaud
68e8ddaf94 Fix vectorization logic wrt assignment functors 2014-02-19 13:26:07 +01:00
Gael Guennebaud
82c066b3c4 Cleaning 2014-02-18 15:44:32 +01:00
Gael Guennebaud
8cfb138e73 Finally, the simplest remains to deffer resizing at the latest 2014-02-18 13:31:44 +01:00
Gael Guennebaud
573c587e3d New design for handling automatic transposition 2014-02-18 10:53:14 +01:00
Gael Guennebaud
d595fd31f5 Deal with automatic transposition in call_assignment, fix a few shortcomings 2014-02-17 16:11:55 +01:00
Gael Guennebaud
ee1c55f923 Add missing template keyword 2014-01-26 14:55:25 +01:00
Gael Guennebaud
5fa7262e4c Refactor triangular assignment 2014-01-25 23:02:14 +01:00
Gael Guennebaud
34ca81b1bf Add direct assignment of products 2013-12-02 16:37:58 +01:00
Gael Guennebaud
c6f7337032 Get rid of call_dense_swap_loop 2013-12-02 14:44:13 +01:00
Gael Guennebaud
27ca9437a1 Fix usage of Dense versus DenseShape 2013-12-02 14:05:34 +01:00
Gael Guennebaud
c15c65990f First step toward the generalization of evaluators to triangular, sparse and other fancyness.
Remove product_tag template parameter to Product.
2013-11-29 17:50:59 +01:00
Gael Guennebaud
5584275325 Remove HasEvalTo and all at once eval mode 2013-11-29 13:38:59 +01:00
Gael Guennebaud
230f5c3aa9 Evaluator: introduce the main Assignment class, add call_assignment to bypass NoAlias and AssumeAliasing, and some bits of cleaning 2013-11-25 15:20:31 +01:00
Gael Guennebaud
af9851d1d7 bug #99: move the creation of the evaluator to a central place, and make generic_dense_assignment_kernel hold the destination and source evaluators 2013-11-07 12:03:12 +01:00
Gael Guennebaud
8edc964734 bug #99: refactor assignment and compound assignment mechanism through "assignment functors" and "assignement kernels".
The former is very low level and generic. The later abstarct the former for dense expressions. This refactoring permits
to get rid of the very ugly SwapWrapper and SelfCwiseBinaryOp classes.
In the future, this will also permit to simplify all these evaluation loops and perhaps to reuse them for reduxions.
That will also permit to specialize for operations like expr1 += expr2 outside Eigen, and so for any kind
of expressions (dense, sparse, tensor, etc.)
2013-11-06 18:17:59 +01:00
Gael Guennebaud
a37bdfc955 Fix static/inline order 2013-11-06 11:13:31 +01:00
Gael Guennebaud
899c0c2b6c Clean source code and unit tests with respect to -Wunused-local-typedefs 2013-04-10 22:27:35 +02:00
Gael Guennebaud
0fac91ac22 Fix "storage class is not first" warnings 2013-02-28 19:27:53 +01:00
Gael Guennebaud
fa17a6da75 Fix compilation with ICC that was unable to instanciate first_aligned 2013-02-26 17:32:42 +01:00
Benoit Jacob
69124cfca2 Automatic relicensing to MPL2 using Keirs script. Manual fixup follows. 2012-07-13 14:42:47 -04:00
Jitse Niesen
746378868a Implement A.noalias() = B * C without temporaries
* Wrap expression inside EvalToTemp in copy_using_evaluators() if we
  assume aliasing for that expression (that is, for products)
* Remove temporary kludge of evaluating expression to temporary in
  AllAtOnce traversal
* Implement EvalToTemp expression object
2012-06-29 13:54:09 +01:00
Jitse Niesen
d0b873822f Make product eval-at-once.
* Make product EvalAtOnce in cases OuterProduct, GemmProduct and
  GemvProduct
* Ensure that product evaluators are nested inside EvalToTemp
  evaluator
* As temporary kludge, evaluate expression to temporary in AllAtOnce
  traversal and pass expression operator to evalTo()
2012-06-29 13:49:25 +01:00
Jitse Niesen
2393ceb380 Implement eval-at-once in evaluator.
- Add evaluator_traits with HasEvalTo flag, which is true if evaluator
  has evalTo() function.
- Add AllAtOnce traversal, which calls evalTo() in evaluator.
- If source evaluator in copy_using_evaluator has HasEvalTo set, then
  use AllAtOnce traversal.
2012-06-29 13:32:12 +01:00
Jitse Niesen
c1eb820e50 Implement interface for NoAlias assignments.
* Rename the old copy_using_evaluators to noalias_copy_using_evaluators.
* Write a new copy_using_evaluators which strips NoAlias expression, if present,
  and calls noalias_copy_using_evaluators; in future, it will also take care of
  aliasing in products.
* Add expression() getter to NoAlias.
2012-06-29 13:24:04 +01:00
Jitse Niesen
23184527fa Resize lhs automatically in copy_using_evaluator(). 2012-06-28 15:25:25 +01:00
Jitse Niesen
d0d077b212 Fix bug in evaluators with sliced vectorization. 2012-06-24 17:33:21 +01:00
Gael Guennebaud
cc6dd55028 put the resurected files into the Eigen namespace 2012-06-22 16:35:20 +02:00
Gael Guennebaud
5fae6c7848 resurrect expression evaluators 2012-06-22 09:39:35 +02:00
Jitse Niesen
3db6455896 Remove evaluators for 2.1 release.
We plan to re-instate them when we branch 2.2 (see bug #388).
2011-12-14 21:23:43 +00:00
Jitse Niesen
06fb7cf470 Implement compound assignments using evaluator of SelfCwiseBinaryOp. 2011-04-28 16:57:35 +01:00
Jitse Niesen
3b60d2dbc4 Implement swap using evaluators. 2011-04-28 15:52:15 +01:00
Jitse Niesen
2d11041e24 Use copyCoeff/copyPacket in copy_using_evaluator. 2011-04-22 22:36:45 +01:00
Jitse Niesen
e654405900 Implement unrolling in copy_using_evaluator() . 2011-04-13 11:49:48 +01:00
Jitse Niesen
88b3116b99 Decouple AssignEvaluator.h from assign_traits from Assign.h 2011-04-12 13:35:08 +01:00
Jitse Niesen
d90a8ee8bd Evaluators: add Block evaluator as dumb wrapper, add slice vectorization. 2011-03-31 13:50:52 +01:00
Jitse Niesen
8175fe43e0 Evaluators: Make inner vectorization more similar to default traversal. 2011-03-28 21:29:47 +01:00
Jitse Niesen
b175bc464f Evaluators: Implement linear traversal, better testing. 2011-03-27 22:08:48 +01:00
Jitse Niesen
1b17a674dd Evaluators: Implement inner vectorization.
The implementation is minimal (I only wrote the functions called by
the unit test) and ugly (lots of copy and pasting).
2011-03-27 13:49:15 +01:00
Jitse Niesen
5c204d1ff7 Evaluators: Implement LinearVectorizedTraversal, packet ops in evaluators. 2011-03-25 16:30:41 +00:00
Gael Guennebaud
abc8c0821c makes evaluator test use VERIFY_IS_APPROX 2011-03-23 17:23:56 +01:00