Hello Rasmus,
thank you very much for your answer.
I did have a look to the slice and strided slice methods.

But they are not really the same, because they assume that you have stored
the entire domain in a Tensor object and then you extract a slice from it
to perform an operation.

In my case, I am splitting a very large cube into different processors via
MPI bacause there is no way to keep all this in memory in one machine, and
I would like that the allocation of each of the processors preserves the
coordinates from the original cube.

All best!
Jaime





On Thu, Apr 18, 2019 at 8:03 PM Rasmus Munk Larsen <[email protected]>
wrote:

> Hi Jaime,
>
> I know this is sort of the opposite of what you ask, but did you consider
> the Block interface in Eigen core or the slice (and stridedSlice) methods
> in the Tensor class? They provide low-overhead views of blocks offset from
> zero.
>
> Rasmus
>
> On Thu, Apr 18, 2019 at 1:08 AM Jaime de la Cruz Rodríguez <
> [email protected]> wrote:
>
>> Hello,
>> I have been using Eigen3 in my codes, mostly the matrix class to solve
>> linear systems and to perform SVD calculations. It is great!
>>
>> Recently I have also found the Tensor class extremely useful, as it
>> provides multidimensional arrays in c++ with delayed evaluation. A feature
>> that I have been missing is the possibility of starting indexing an array
>> from any number (aka, the first element of a dimension is not index zero).
>> This feature would simplify greatly dealing with applications where domain
>> decomposition is required. We are writing a new radiative transfer code and
>> I would like to use Eigen3 to deal with arrays internally.
>>
>> Would it be possible to add such feature?
>>
>> The constructor could be such that it takes N arguments or 2*N arguments.
>> In the latter case, we would have two numbers for each dimension the
>> initial element and the final element. In the former case we would have the
>> current behavior.
>>
>> In practice implementing this feature is relatively easy and it only
>> requires storing the offset for each dimension. The linearized array offset
>> is calculated also very similarly, but removing the offset from the index
>> before multiplying by the corresponding stride.
>>
>> I have coded a simple array class with these features but it is missing
>> all the bells and whistles of Eigen, so I would prefer to use the latter.
>> https://github.com/jaimedelacruz/Arrays/blob/master/example_main.cc
>>
>> Also, I have made one of my codes publicly available and it uses Eigen,
>> in case you want to add it to the list of codes using Eigen3:
>> https://github.com/jaimedelacruz/stic
>>
>> Best regards!
>> Jaime
>>
>>
>>
>>

Reply via email to