| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
to get EBO (Empty Base Optimization)
Note: we should probbaly get rid of this class and define a macro instead.
|
| |
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
| |
triats<Ref>::match so that the has_*ary_operator are really properly instantiated throughout the compilation unit.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
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).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
responsibilty of the assignment logic.
|
| |
|
|
|
|
| |
of aligned ones for fixed size assignement.
|
| |
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
the LinearAccessBit flag
|
|
|
|
| |
evaluator_traits::AssumeAliasing to evaluator_assume_aliasing.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- 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)
|
| |
|
| |
|
| |
|
|
|
|
| |
evaluation of nested expression
|
| |
|
| |
|
|
|
|
| |
remove the evaluator<>::nestedType indirection.
|
|
|
|
| |
temporaries do not introduce unwanted copy overhead.
|
|
|
|
| |
evaluator<>::type indirection.
|
|
|
|
| |
This is implemented by adding a PacketType template parameter to packet and writePacket members of evaluator<>.
|
|
|
|
| |
everywhere
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
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).
|
| |
|
| |
|
| |
|
|
|
|
| |
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.
|
|\
| |
| |
| | |
useless typedefs
|
| |
| |
| |
| | |
to StorageIndex, make Dense*::StorageIndex an alias to DenseIndex. Overall this commit gets rid of all Index conversion warnings.
|
|/ |
|
|
|
|
| |
case yet)
|
|
|
|
| |
Although the test passes now, there might still be some missing.
|
| |
|
| |
|
| |
|