Re: [eigen] Cost of a map operation

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


perhaps here you don't want to copy it to an Eigen vector but directly
use *address as an Eigen vector. For that you simply declare:

Map<AddressVector_t,ForceAligned> AddressVector(address);

and use AddressVector as any other Eigen vector, e.g.:

AddressVector *= 2;

that is the same as directly modifying address:

for(int i=0; bla; bla)
 address[i] *= 2;

with all Eigen's goodies.

cheers,
gael.

On Wed, Sep 2, 2009 at 2:16 PM, Benoit Jacob<jacob.benoit.1@xxxxxxxxx> wrote:
> This is as efficient as it could be: typically, this expands to
> nothing more than:
>
> for(int i = 0; i < cordNum; ++i)
>  AddressVector[i] = address[i];
>
> and then 1) Eigen unrolls this if appropriate and 2) Eigen vectorizes
> this if possible.
>
> Basically, the Map object itself is just an expression, so its
> construction is cheap at least, and in practice the compiler is able
> to avoid actually creating it, everything gets "inlined".
>
> Tip: you could check the resulting assembly code for yourself, just
> put asm comments around this, asm("#hello"); , and use gcc -S to get
> the assembly...
>
> Benoit
>
>
>
> 2009/9/2 Rohit Garg <rpg.314@xxxxxxxxx>:
>> What is the cost of this map operation?
>>
>> AddressVector_t AddressVector = Map<AddressVector_t,ForceAligned>(address)
>>
>> where AddressVector_t itself is a typedef for
>>
>> typedef Matrix<int,cordNum,1> AddressVector_t;
>>
>> cordNum is a compile time constant.
>>
>> This map operation occurs in inner loop of my application, so I want
>> to know, how costly is it gonna be? I mean with what use in mind was
>> it written for?
>> --
>> Rohit Garg
>>
>> http://rpg-314.blogspot.com/
>>
>> Senior Undergraduate
>> Department of Physics
>> Indian Institute of Technology
>> Bombay
>>
>>
>>
>
>
>



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/