Dear Eigen developers,
I am following very closely the development of the tensor class in Eigen3. It is extremely fast and it provides multidimensional arrays to C++ users and in particular to scientists that require very high performance in their codes (like me!).
I would like to kindly propose two features that, to my knowledge, are not yet included in the current implementation but that might be of interest to many users:
- I mentioned this one in the forum but for completeness I also mention it here: it would be great to be able to extract slices of a tensor that point to the original data-block (without performing any data copies). That way one could modify part of the data in, for example, a separate function. That sub-tensor would have to be somewhat sparse, but that is easily solvable by adjusting the stride and the offset of each dimension.
- It would be very useful to be able to start indexing some of the dimensions of the tensor at user-selected values. For example, I might want to have an array that covers a range of indexes from -10 to 10 or from 200 to 300. This feature would be useful to people that operate with domain decomposed variables among threads/processes and want to keep track of the sub-domain location in the original cube.
I understand that you are already swamped developing many different packages of the library. I can guarantee that many users in physics and mathematics could benefit from these features in the long term. I actually wrote my own array class based on templates including all these features, but I did not want to go into _expression_ template optimization, which is a big point for the tensor class in Eigen. Also, being able to include auto differentiation in the future seems very promising.
Jaime