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