aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11/src
Commit message (Collapse)AuthorAge
...
* Added suppor for in place evaluation to simple tensor expressions.Gravatar Benoit Steiner2014-08-13
| | | | Use mempy to speedup tensor copies whenever possible.
* Reworked the TensorExecutor code to support in place evaluation.Gravatar Benoit Steiner2014-08-13
|
* The tensor assignment code now resizes the destination tensor as needed.Gravatar Benoit Steiner2014-07-31
|
* Made sure that the data stored in fixed sized tensor is aligned.Gravatar Benoit Steiner2014-07-25
|
* Fixed the assignment operator of the Tensor and TensorMap classes.Gravatar Benoit Steiner2014-07-22
|
* Added primitives to compare tensor dimensionsGravatar Benoit Steiner2014-07-10
|
* Vectorized the evaluation of expressions involving tensor slices.Gravatar Benoit Steiner2014-07-10
|
* Improved the speed of slicing operations.Gravatar Benoit Steiner2014-07-09
|
* Improved evaluation of tensor expressions when used as rvaluesGravatar Benoit Steiner2014-07-08
|
* Improved the efficiency of the tensor evaluation code on thread pools and gpus.Gravatar Benoit Steiner2014-07-08
|
* Extended the functionality of the TensorDeviceType classesGravatar Benoit Steiner2014-07-08
|
* Added support for tensor slicingGravatar Benoit Steiner2014-07-07
|
* Added support for tensor slicingGravatar Benoit Steiner2014-07-07
|
* Added support for tensor slicingGravatar Benoit Steiner2014-07-07
|
* Silenced a compilation warningGravatar Benoit Steiner2014-06-13
|
* Reworked the expression evaluation mechanism in order to make it possible to ↵Gravatar Benoit Steiner2014-06-13
| | | | | | | | efficiently compute convolutions and contractions in the future: * The scheduling of computation is moved out the the assignment code and into a new TensorExecutor class * The assignment itself is now a regular node on the expression tree * The expression evaluators start by recursively evaluating all their subexpressions if needed
* Fixed a few compilation errors.Gravatar Benoit Steiner2014-06-10
|
* Pulled latest updates from the Eigen main trunk.Gravatar Benoit Steiner2014-06-10
|\
* | TensorEval are now typed on the device: this will make it possible to use ↵Gravatar Benoit Steiner2014-06-10
| | | | | | | | | | | | partial template specialization to optimize the strategy of each evaluator for each device type. Started work on partial evaluations.
* | Fixes compilation errors triggered when compiling the tensor contraction ↵Gravatar Benoit Steiner2014-06-09
| | | | | | | | code with cxx11 enabled.
* | Improved support for rvalues in tensor expressions.Gravatar Benoit Steiner2014-06-09
| |
* | Prevent the generation of unlaunchable cuda kernels when compiling in debug ↵Gravatar Benoit Steiner2014-06-09
| | | | | | | | mode.
* | Fixed compilation errorGravatar Benoit Steiner2014-06-09
| |
* | Added support for convolution and reshaping of tensors.Gravatar Benoit Steiner2014-06-06
| |
| * unsupported/TensorSymmetry: factor out completely from Tensor moduleGravatar Christian Seiler2014-06-04
| | | | | | | | | | | | | | | | | | Remove the symCoeff() method of the the Tensor module and move the functionality into a new operator() of the symmetry classes. This makes the Tensor module now completely self-contained without symmetry support (even though previously it was only a forward declaration and a otherwise harmless trivial templated method) and also removes the inconsistency with the rest of eigen w.r.t. the method's naming scheme.
| * unsupported/TensorSymmetry: make symgroup construction autodetect number of ↵Gravatar Christian Seiler2014-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | indices When constructing a symmetry group, make the code automatically detect the number of indices required from the indices of the group's generators. Also, allow the symmetry group to be applied to lists of indices that are larger than the number of indices of the symmetry group. Before: SGroup<4, Symmetry<0, 1>, Symmetry<2,3>> group; group.apply<SomeOp, int>(std::array<int,4>{{0, 1, 2, 3}}, 0); After: SGroup<Symmetry<0, 1>, Symmetry<2,3>> group; group.apply<SomeOp, int>(std::array<int,4>{{0, 1, 2, 3}}, 0); group.apply<SomeOp, int>(std::array<int,5>{{0, 1, 2, 3, 4}}, 0); This should make the symmetry group easier to use - especially if one wants to reuse the same symmetry group for different tensors of maybe different rank. static/runtime asserts remain for the case where the length of the index list to which a symmetry group is to be applied is too small.
| * unsupported/CXX11/Core: allow gen_numeric_list to have a starting pointGravatar Christian Seiler2014-06-04
| | | | | | | | | | | | Add a template parameter to gen_numeric_list that acts as a starting point for the list, i.e. gen_numeric_list<int, 5, 4> will generate a numeric_list<int, 4, 5, 6, 7, 8>.
| * unsupported/ C++11 workarounds: don't use hack for libc++ if not requiredGravatar Christian Seiler2014-06-04
| | | | | | | | | | | | | | libc++ from 3.4 onwards supports constexpr std::get, but only if compiled with -std=c++1y. Change the detection so that libc++'s internals are only used if either -std=c++1y is not specified or the library is too old, making the whole hack a bit more future-proof.
* | Added support for tensor contractionsGravatar Benoit Steiner2014-06-04
| | | | | | | | | | Updated expression evaluation mechanism to also compute the size of the tensor result Misc fixes and improvements.
* | Added support for additional tensor operations:Gravatar Benoit Steiner2014-05-22
| | | | | | | | | | | | | | | | * comparison (<, <=, ==, !=, ...) * selection * nullary ops such as random or constant generation * misc unary ops such as log(), exp(), or a user defined unaryExpr() Cleaned up the code a little.
* | Vectorized the evaluation of tensor expression (using SSE, AVX, NEON, ...)Gravatar Benoit Steiner2014-05-16
| | | | | | | | | | Added the ability to parallelize the evaluation of a tensor expression over multiple cpu cores. Added the ability to offload the evaluation of a tensor expression to a GPU.
* | Added support for fixed sized tensors.Gravatar Benoit Steiner2014-05-06
| | | | | | | | Improved support for tensor expressions.
* | Extended support for Tensors:Gravatar Benoit Steiner2014-04-28
|/ | | | | | * Added ability to map a region of the memory to a tensor * Added basic support for unary and binary coefficient wise expressions, such as addition or square root * Provided an emulation layer to make it possible to compile the code with compilers (such as nvcc) that don't support cxx11.
* Fixed a typo in CXX11Meta.hGravatar Benoit Steiner2014-04-14
|
* C++11/Tensor: Fix copyright headersGravatar Christian Seiler2013-11-16
|
* CXX11/TensorSymmetry: add symmetry support for Tensor classGravatar Christian Seiler2013-11-14
| | | | | | | | | | | | | | | | | | | | | | | | | Add a symCoeff() method to the Tensor class template that allows the user of the class to set multiple elements of a tensor at once if they are connected by a symmetry operation with respect to the tensor's indices (symmetry/antisymmetry/hermiticity/antihermiticity under echange of two indices and combination thereof for different pairs of indices). A compile-time resolution of the required symmetry groups via meta templates is also implemented. For small enough groups this is used to unroll the loop that goes through all the elements of the Tensor that are connected by this group. For larger groups or groups where the symmetries are defined at run time, a standard run-time implementation of the same algorithm is provided. For example, the following code completely initializes all elements of the totally antisymmetric tensor in three dimensions ('epsilon tensor'): SGroup<3, AntiSymmetry<0,1>, AntiSymmetry<1,2>> sym; Eigen::Tensor<double, 3> epsilon(3,3,3); epsilon.setZero(); epsilon.symCoeff(sym, 0, 1, 2) = 1;
* CXX11/Tensor: add simple initial tensor implementationGravatar Christian Seiler2013-11-14
| | | | | | | This commit adds an initial implementation of a class template Tensor that allows for the storage of objects with more than two indices. Currently, only storing data and setting the object to zero for POD data types are implemented.
* C++11: add template metaprogramming helpersGravatar Christian Seiler2013-11-14
Create a new directory CXX11 under unsupported/Eigen that contains code that requires C++11. In that directory, add a few generic templates useful for any module relying on C++11. These templates may be included with #include <[unsupported/]Eigen/CXX11/Core>. At the moment, this will only provide templates in the Eigen::internal namespace.