Jaime de la Cruz Rodríguez
2018-11-01 11:31:44 UTC
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:
1. 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.
2. 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
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:
1. 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.
2. 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