| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| | |
partial template specialization to optimize the strategy of each evaluator for each device type.
Started work on partial evaluations.
|
| |
| |
| |
| | |
code with cxx11 enabled.
|
| | |
|
| |
| |
| |
| | |
mode.
|
| | |
|
|\ \ |
|
| | | |
|
|/ / |
|
| |
| |
| |
| | |
instructions.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
the inclusion of Eigen within other projects.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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>.
|
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| |
| | |
Updated expression evaluation mechanism to also compute the size of the tensor result
Misc fixes and improvements.
|
| | |
|
| |
| |
| |
| |
| | |
This was changed in 3c66bb136bf2adcb9d73d3d66850a8b907bc9264
.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
* 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.
|
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
(transplanted from 11462c1a291bdb9c0ac27db25fef364e51632484
)
|
| |
| |
| |
| |
| | |
(transplanted from e66781905586e3c438031597fae07306d47fea60
)
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |\
| | |
| | |
| | | |
Made it possible to call the assignment operator on an Eigen::Block from a CUDA kernel.
|
| | |
| | |
| | |
| | | |
CUDA kernel.
|
| | |
| | |
| | |
| | | |
Improved support for tensor expressions.
|