Commit Graph

88 Commits

Author SHA1 Message Date
Gael Guennebaud
5cc7251188 Some cleaning in evaluators 2015-10-08 15:22:04 +02:00
Gael Guennebaud
941a99ac1a Add a few missing EIGEN_DEVICE_FUNC declarations 2015-09-03 14:14:54 +02:00
Gael Guennebaud
aa768add0b Since there is no reason for evaluators to be nested by reference, let's remove the evaluator<>::nestedType indirection. 2015-09-02 22:10:39 +02:00
Gael Guennebaud
f8976fdbe0 Make evaluators non-copyable. This guarantee that evaluators storing temporaries do not introduce unwanted copy overhead. 2015-09-02 21:39:49 +02:00
Gael Guennebaud
92b9f0e102 Cleaning pass on evaluators: remove the useless and error prone evaluator<>::type indirection. 2015-09-02 21:38:40 +02:00
Gael Guennebaud
65bfa5fce7 Allow to use arbitrary packet-types during evaluation.
This is implemented by adding a PacketType template parameter to packet and writePacket members of evaluator<>.
2015-08-07 12:01:39 +02:00
Gael Guennebaud
ce57dbd937 Let unpacket_traits<> exposes the required alignment and make use of it everywhere 2015-08-07 10:44:01 +02:00
Gael Guennebaud
1f5024332e First part of a big refactoring of alignment control to enable the handling of arbitrarily aligned buffers. It includes:
- AlignedBit flag is deprecated. Alignment is now specified by the evaluator through the 'Alignment' enum, e.g., evaluator<Xpr>::Alignment. Its value is in Bytes.
 - Add several enums to specify alignment: Aligned8, Aligned16, Aligned32, Aligned64, Aligned128. AlignedMax corresponds to EIGEN_MAX_ALIGN_BYTES. Such enums are used to define the above Alignment value, and as the 'Options' template parameter of Map<> and Ref<>.
 - The Aligned enum is now deprecated. It is now an alias for Aligned16.
 - Currently, traits<Matrix<>>, traits<Array<>>, traits<Ref<>>, traits<Map<>>, and traits<Block<>> also expose the Alignment enum.
2015-08-06 15:31:07 +02:00
Gael Guennebaud
175ed636ea bug #973: update macro-level control of alignement by introducing user-controllable EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES macros. This changeset also removes EIGEN_ALIGN (replaced by EIGEN_MAX_ALIGN_BYTES>0), EIGEN_ALIGN_STATICALLY (replaced by EIGEN_MAX_STATIC_ALIGN_BYTES>0), EIGEN_USER_ALIGN*, EIGEN_ALIGN_DEFAULT (replaced by EIGEN_ALIGN_MAX). 2015-07-29 10:22:25 +02:00
Gael Guennebaud
3f6aa4cd5d Remove useless specializations of evaluator_traits 2015-06-19 14:18:29 +02:00
Gael Guennebaud
cbe3a1a83e Add missing accessors for 1D index based access to Replicate<> expressions. 2015-06-08 15:39:09 +02:00
Benoit Jacob
1dd3d89818 Fix a unused-var warning 2015-03-15 18:07:19 -04:00
Gael Guennebaud
1330f8bbd1 bug #973, improve AVX support by enabling vectorization of Vector4i-like types, and enforcing alignement of Vector4f/Vector2d-like types to preserve compatibility with SSE and future Eigen versions that will vectorize them with AVX enabled. 2015-03-13 21:15:50 +01:00
Gael Guennebaud
fe51319980 Merge Index-refactoring branch with default, fix PastixSupport, remove some useless typedefs 2015-02-13 10:03:53 +01:00
Christoph Hertzberg
e8cdbedefb bug #877, bug #572: Introduce a global Index typedef. Rename Sparse*::Index to StorageIndex, make Dense*::StorageIndex an alias to DenseIndex. Overall this commit gets rid of all Index conversion warnings. 2014-12-04 22:48:53 +01:00
Gael Guennebaud
80ed5bd90c Workaround various "returning reference to temporary" warnings. 2014-12-05 12:49:30 +01:00
Christoph Hertzberg
883168ed94 Make select CUDA compatible (comparison operators aren't yet, so no test case yet) 2014-10-30 20:16:16 +01:00
Christoph Hertzberg
d3f52debc6 Make cuda_basic test compile again by adding lots of EIGEN_DEVICE_FUNC.
Although the test passes now, there might still be some missing.
2014-10-13 17:18:26 +02:00
Christoph Hertzberg
81517eebc1 Missing explicit 2014-09-30 16:42:04 +02:00
Gael Guennebaud
abd3502e9e Introduce a generic InnerIterator classes compatible with evaluators. 2014-09-29 13:36:57 +02:00
Christoph Hertzberg
36448c9e28 Make constructors explicit if they could lead to unintended implicit conversion 2014-09-23 14:28:23 +02:00
Gael Guennebaud
466d6d41c6 Avoid a potential risk of recursive definition using traits to get he scalar type 2014-09-15 17:40:17 +02:00
Gael Guennebaud
188a13f9fe Fix compilation of coeff(Index) on sub-inner-panels 2014-09-08 09:50:03 +02:00
Gael Guennebaud
107bb308c3 Fix various small issues detected by gcc 2014-08-01 16:24:23 +02:00
Gael Guennebaud
bae2e3327b Call product_generic_impl by default, and remove lot of boilerplate code 2014-07-31 13:35:49 +02:00
Gael Guennebaud
3eba5e1101 Implement evaluator for sparse outer products 2014-07-19 14:55:56 +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
e3ba5329ff Implement evaluators for sparse Block. 2014-06-25 09:58:26 +02:00
Gael Guennebaud
3849cc65ee Implement binaryop and transpose evaluators for sparse matrices 2014-06-23 10:40:03 +02:00
Gael Guennebaud
7fa87a8b12 Backport changes from old to new expression engines 2014-06-20 16:17:57 +02:00
Gael Guennebaud
47585c8ab2 merge 2014-06-20 15:49:07 +02:00
Gael Guennebaud
78bb808337 1- Introduce sub-evaluator types for unary, binary, product, and map expressions to ease specializing them.
2- Remove a lot of code which should not be there with evaluators, in particular coeff/packet methods implemented in the expressions.
2014-06-20 15:39:38 +02:00
Jitse Niesen
ffc995c9e4 Implement evaluator<ReturnByValue>.
All supported tests pass apart from Sparse and Geometry,
except test in adjoint_4 that a = a.transpose() raises an assert.
2014-04-16 18:16:36 +01:00
Gael Guennebaud
f74ed34539 Fix regressions in redux_evaluator flags and evaluator<Block> flags 2014-03-12 18:14:08 +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
95b0a6707b evaluator<Replicate> must evaluate its argument to avoid redundant evaluations 2014-02-19 14:51:46 +01:00
Gael Guennebaud
ccc41128fb Add a Solve expression for uniform treatment of solve() methods. 2014-02-19 11:33:29 +01:00
Gael Guennebaud
1b5de5a37b Add evaluator for Ref 2014-02-18 13:30:16 +01:00
Gael Guennebaud
34694d8828 Fix evaluator<Replicate> for fixed size objects 2014-01-26 15:34:26 +01:00
Gael Guennebaud
6c5e915e9a Enable use of evaluators for noalias and lazyProduct, add conversion to scalar for inner products 2013-12-03 17:17:53 +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
fb6e32a62f Get rid of evalautor_impl 2013-11-29 16:45:47 +01:00
Gael Guennebaud
5584275325 Remove HasEvalTo and all at once eval mode 2013-11-29 13:38:59 +01:00
Gael Guennebaud
fc6ecebc69 Simplify evaluator of EvalToTemp 2013-11-27 11:32:07 +01:00
Gael Guennebaud
57327cc2d5 Drop evaluators for SwapWrapper and SelfCwiseBinaryOp 2013-11-07 14:07:27 +01:00
Gael Guennebaud
5887e82729 Clean evaluator_impl_base. It will probably be removed in the future 2013-11-07 14:02:47 +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