aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/CoreEvaluators.h
Commit message (Collapse)AuthorAge
* Optimize storage layout of Cwise* and PlainObjectBase evaluator to remove ↵Gravatar Gael Guennebaud2016-12-20
| | | | | | | the functor or outer-stride if they are empty. For instance, sizeof("(A-B).cwiseAbs2()") with A,B Vector4f is now 16 bytes, instead of 48 before this optimization. In theory, evaluators should be completely optimized away by the compiler, but this might help in some cases.
* Remove common "noncopyable" base class from evaluator_base to get a chance ↵Gravatar Gael Guennebaud2016-12-20
| | | | | | to get EBO (Empty Base Optimization) Note: we should probbaly get rid of this class and define a macro instead.
* Fix warning with ICCGravatar Gael Guennebaud2016-10-26
|
* bug #1317: fix performance regression with some Block expressions and clang ↵Gravatar Gael Guennebaud2016-10-01
| | | | | | by helping it to remove dead code. The trick is to get rid of the nested expression in the evaluator by copying only the required information (here, the strides).
* Disable previous workaround.Gravatar Gael Guennebaud2016-09-06
|
* Workaround MSVC instantiation faillure of has_*ary_operator at the level of ↵Gravatar Gael Guennebaud2016-09-06
| | | | triats<Ref>::match so that the has_*ary_operator are really properly instantiated throughout the compilation unit.
* Fix shadowing wrt Eigen::IndexGravatar Gael Guennebaud2016-09-05
|
* Workaround a weird msvc 2012 compilation error.Gravatar Gael Guennebaud2016-09-05
|
* Fix for msvc 2012 and olderGravatar Gael Guennebaud2016-09-05
|
* Turned the Index type used by the nullary wrapper into a template parameter.Gravatar Benoit Steiner2016-09-02
|
* Fix compilation with nvccGravatar Gael Guennebaud2016-09-01
|
* bug #1286: automatically detect the available prototypes of functors passed ↵Gravatar Gael Guennebaud2016-08-31
| | | | | | | | | to CwiseNullaryExpr such that functors have only to implement the operators that matters among: operator()() operator()(i) operator()(i,j) Linear access is also automatically detected based on the availability of operator()(i,j).
* Add TernaryFunctors and the betainc SpecialFunction.Gravatar Eugene Brevdo2016-06-02
| | | | | | | | | | | | | | | | | | | TernaryFunctors and their executors allow operations on 3-tuples of inputs. API fully implemented for Arrays and Tensors based on binary functors. Ported the cephes betainc function (regularized incomplete beta integral) to Eigen, with support for CPU and GPU, floats, doubles, and half types. Added unit tests in array.cpp and cxx11_tensor_cuda.cu Collapsed revision * Merged helper methods for betainc across floats and doubles. * Added TensorGlobalFunctions with betainc(). Removed betainc() from TensorBase. * Clean up CwiseTernaryOp checks, change igamma_helper to cephes_helper. * betainc: merge incbcf and incbd into incbeta_cfe. and more cleanup. * Update TernaryOp and SpecialFunctions (betainc) based on review comments.
* Introduce internal's UIntPtr and IntPtr types for pointer to integer ↵Gravatar Gael Guennebaud2016-05-26
| | | | | | | | conversions. This fixes "conversion from pointer to same-sized integral type" warnings by ICC. Ideally, we would use the std::[u]intptr_t types all the time, but since they are C99/C++11 only, let's be safe.
* Block<> should not disable vectorization based on inner-size, this is the ↵Gravatar Gael Guennebaud2016-05-24
| | | | responsibilty of the assignment logic.
* DiagonalWrapper is a vector, so it must expose the LinearAccessBit flag.Gravatar Gael Guennebaud2016-05-19
|
* Fix performance regression: with AVX, unaligned stores were emitted instead ↵Gravatar Gael Guennebaud2016-05-01
| | | | of aligned ones for fixed size assignement.
* Fix shortcoming in fixed-value deduction of startRow/startColGravatar Gael Guennebaud2016-02-29
|
* bug #667: declare several critical functions as FORECE_INLINE to make ICC ↵Gravatar Gael Guennebaud2016-01-31
| | | | | | | happier. <g.gael@free.fr> HG: branch 'default' HG: changed Eigen/src/Core/ArrayBase.h HG: changed Eigen/src/Core/AssignEvaluator.h HG: changed Eigen/src/Core/CoreEvaluators.h HG: changed Eigen/src/Core/CwiseUnaryOp.h HG: changed Eigen/src/Core/DenseBase.h HG: changed Eigen/src/Core/MatrixBase.h
* bug #1158: PartialReduxExpr is a vector expression, and it thus must expose ↵Gravatar Gael Guennebaud2016-01-28
| | | | the LinearAccessBit flag
* bug #1144: fix regression in x=y+A*x (aliasing), and move ↵Gravatar Gael Guennebaud2016-01-09
| | | | evaluator_traits::AssumeAliasing to evaluator_assume_aliasing.
* Fix storage order of PartialReduxGravatar Gael Guennebaud2015-12-10
|
* Add LU::transpose().solve() and LU::adjoint().solve() API.Gravatar Gael Guennebaud2015-12-01
|
* bug #1009, part 1/2: make sure vector expressions expose LinearAccessBit flag.Gravatar Gael Guennebaud2015-11-27
|
* Refactoring of the cost model:Gravatar Gael Guennebaud2015-10-28
| | | | | | | | | | | - Dynamic is now an invalid value - introduce a HugeCost constant to be used for runtime-cost values or arbitrarily huge cost - add sanity checks for cost values: must be >=0 and not too large This change provides several benefits: - it fixes shortcoming is some cost computation where the Dynamic case was not properly handled. - it simplifies cost computation logic, and should avoid future similar shortcomings. - it allows to distinguish between different level of dynamic/huge/infinite cost - it should enable further simplifications in the computation of costs (save compilation time)
* Simplify evaluator::Flags for Map<>Gravatar Gael Guennebaud2015-10-27
|
* Re-enable vectorization of LinSpaced, plus some cleaningGravatar Gael Guennebaud2015-10-08
|
* Clean evaluator<EvalToTemp>Gravatar Gael Guennebaud2015-10-08
|
* Properly implement PartialReduxExpr on top of evaluators, and fix multiple ↵Gravatar Gael Guennebaud2015-10-08
| | | | evaluation of nested expression
* Some cleaning in evaluatorsGravatar Gael Guennebaud2015-10-08
|
* Add a few missing EIGEN_DEVICE_FUNC declarationsGravatar Gael Guennebaud2015-09-03
|
* Since there is no reason for evaluators to be nested by reference, let's ↵Gravatar Gael Guennebaud2015-09-02
| | | | remove the evaluator<>::nestedType indirection.
* Make evaluators non-copyable. This guarantee that evaluators storing ↵Gravatar Gael Guennebaud2015-09-02
| | | | temporaries do not introduce unwanted copy overhead.
* Cleaning pass on evaluators: remove the useless and error prone ↵Gravatar Gael Guennebaud2015-09-02
| | | | evaluator<>::type indirection.
* Allow to use arbitrary packet-types during evaluation.Gravatar Gael Guennebaud2015-08-07
| | | | This is implemented by adding a PacketType template parameter to packet and writePacket members of evaluator<>.
* Let unpacket_traits<> exposes the required alignment and make use of it ↵Gravatar Gael Guennebaud2015-08-07
| | | | everywhere
* First part of a big refactoring of alignment control to enable the handling ↵Gravatar Gael Guennebaud2015-08-06
| | | | | | | | | 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.
* bug #973: update macro-level control of alignement by introducing ↵Gravatar Gael Guennebaud2015-07-29
| | | | 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).
* Remove useless specializations of evaluator_traitsGravatar Gael Guennebaud2015-06-19
|
* Add missing accessors for 1D index based access to Replicate<> expressions.Gravatar Gael Guennebaud2015-06-08
|
* Fix a unused-var warningGravatar Benoit Jacob2015-03-15
|
* bug #973, improve AVX support by enabling vectorization of Vector4i-like ↵Gravatar Gael Guennebaud2015-03-13
| | | | 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.
* Merge Index-refactoring branch with default, fix PastixSupport, remove some ↵Gravatar Gael Guennebaud2015-02-13
|\ | | | | | | useless typedefs
* | bug #877, bug #572: Introduce a global Index typedef. Rename Sparse*::Index ↵Gravatar Christoph Hertzberg2014-12-04
| | | | | | | | to StorageIndex, make Dense*::StorageIndex an alias to DenseIndex. Overall this commit gets rid of all Index conversion warnings.
| * Workaround various "returning reference to temporary" warnings.Gravatar Gael Guennebaud2014-12-05
|/
* Make select CUDA compatible (comparison operators aren't yet, so no test ↵Gravatar Christoph Hertzberg2014-10-30
| | | | case yet)
* Make cuda_basic test compile again by adding lots of EIGEN_DEVICE_FUNC.Gravatar Christoph Hertzberg2014-10-13
| | | | Although the test passes now, there might still be some missing.
* Missing explicitGravatar Christoph Hertzberg2014-09-30
|
* Introduce a generic InnerIterator classes compatible with evaluators.Gravatar Gael Guennebaud2014-09-29
|
* Make constructors explicit if they could lead to unintended implicit conversionGravatar Christoph Hertzberg2014-09-23
|