Re: [eigen] Merge Tensor module

[ Thread Index | Date Index | More Archives ]

A quick +1 to say I have been looking forward to seeing this in /unsupported so I can try it. Thanks to Benoit for working on it.


From: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>
Sent: 09 February 2015 08:43
To: eigen
Subject: [eigen] Merge Tensor module


I'm willing to merge Benoit Steiner's Tensor module in unsupported/. See pull-request #96 (

Feel free to object with arguments.

Basically, it supports the following features:
 - arbitrary tensor rank (up to 5 in C++03)
 - fully-dynamic or fully-fixed dimensions
 - forward or backward storage order (like row-major/column-major)
 - slicing, chipping (pick a R-1 rank sub tensor), reduction,
 - contractions using Eigen's fast matrix-matrix and matrix-vector kernels,
 - reshape, shuffling of the dimensions,
 - convolutions
- etc.

There are also a few features aiming to be integrated in Eigen core. In particular, the evaluation of expressions on CUDA and a fast CUDA matrix-matrix kernel.

Before it can be integrated within Eigen's official modules, we will have to unify everything that can be unified:
 - the evaluator mechanisms (more on that later)
 - unify Tensor and FixedSizeTensor while enabling mixed fixed-dynamic sizes
 - TensorMap -> Map<Tensor>
 - CUDA stuffs (more on that later)
 - move the documentation to Doxygen
 - clean Eigen::array, Eigen::DSizes if possible
 - fix Eigen::IndexList (it currently requires C++14)
 - etc.
and also stabilize the naming convensions (more on that later).

Additional welcome features could be:
 - Ref<Tensor>
 - Iterator based evaluation for large-rank _expression_ with complex indexing
 - cost model (could allow to switch between index-based and iterator-based evaluation
 - unify 1D/2D tensors with MatrixBase?

Nonetheless, I think this is a good timing for the merge as the current implementation is already pretty mature and this will provide the visibility this module deserves.


Mail converted by MHonArc 2.6.19+