Reworked the expression evaluation mechanism in order to make it possible to 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
This commit is contained in:
Benoit Steiner
2014-06-13 09:56:51 -07:00
parent aa664eabb9
commit 38ab7e6ed0
14 changed files with 695 additions and 174 deletions

View File

@@ -246,7 +246,9 @@ template<typename PlainObjectType, int Options_> class TensorMap : public Tensor
EIGEN_DEVICE_FUNC
Self& operator=(const OtherDerived& other)
{
internal::TensorAssign<Self, const OtherDerived>::run(*this, other);
typedef TensorAssignOp<Self, const OtherDerived> Assign;
Assign assign(*this, other);
internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
return *this;
}