Re: [eigen] Small dynamic matrix optimization |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
If you can ensure that the allocated memory is aligned, you can use
`Map<Matrix<...>, Aligned>`. Also, we do allow vectorization of
non-aligned data (with newer CPUs there is barely a performance
difference, except when loads/store are split between cache-lines).
Btw: There is a macro `ei_declare_aligned_stack_constructed_variable` in
Eigen/src/Core/util/Memory.h which already does most of what you need to
do (grep the source code to see where/how it is used).
Cheers,
Christoph
On 21/10/2019 16.21, Rob Conde wrote:
> Thanks...I will think about this and maybe try to prototype something.
>
> Using the Map approach...I think this would disable SIMD right? Because you don't know if the mapped data is aligned?
>
> Rob
> ________________________________
> From: Christoph Hertzberg <chtz@xxxxxxxxxxxxxxxxxxxxxxxx>
> Sent: Monday, October 21, 2019 10:15 AM
> To: eigen@xxxxxxxxxxxxxxxxxxx <eigen@xxxxxxxxxxxxxxxxxxx>
> Subject: Re: [eigen] Small dynamic matrix optimization
>
> This is already done for some temporaries (like blocks in
> cache-optimized GEMM). Doing that for custom types would be interesting,
> but not trivial (e.g., move-behavior is completely different, if you
> want to move the data to an object higher in the stack).
>
> If you are ok with managing data yourself, you can manually achieve this
> by alloca/allocate-ing data yourself and use an Eigen::Map to refer to
> the data.
>
> If you have a proof-of-concept how this could be integrated into the
> Eigen API, we are open for suggestions!
>
> Another idea would be to allow custom allocators for matrices -- in that
> case the custom allocator could very easily be a stack-allocator (which
> would not even need to use the "main" stack). But that's also not too
> easy to integrate without breaking the current API (adding a new type
> would of course be an option for that).
>
> Cheers,
> Christoph
>
>
>
> On 21/10/2019 15.39, Rob Conde wrote:
>> I'm wondering if a small dynamic matrix optimization has been considered. In other words, allowing a stack allocation for matrices of unknown size up to a certain limit and using a heap allocation beyond that?
>>
>> Rob Conde
>>
>
> --
> Dr.-Ing. Christoph Hertzberg
>
> Besuchsadresse der Nebengeschäftsstelle:
> DFKI GmbH
> Robotics Innovation Center
> Robert-Hooke-Straße 5
> 28359 Bremen, Germany
>
> Postadresse der Hauptgeschäftsstelle Standort Bremen:
> DFKI GmbH
> Robotics Innovation Center
> Robert-Hooke-Straße 1
> 28359 Bremen, Germany
>
> Tel.: +49 421 178 45-4021
> Zentrale: +49 421 178 45-0
> E-Mail: christoph.hertzberg@xxxxxxx
>
> Weitere Informationen: http://www.dfki.de/robotik
> -------------------------------------------------------------
> Deutsches Forschungszentrum für Künstliche Intelligenz GmbH
> Trippstadter Strasse 122, D-67663 Kaiserslautern, Germany
>
> Geschäftsführung:
> Prof. Dr. Jana Koehler (Vorsitzende)
> Dr. Walter Olthoff
>
> Vorsitzender des Aufsichtsrats:
> Prof. Dr. h.c. Hans A. Aukes
> Amtsgericht Kaiserslautern, HRB 2313
> -------------------------------------------------------------
>
>
>
>
--
Dr.-Ing. Christoph Hertzberg
Besuchsadresse der Nebengeschäftsstelle:
DFKI GmbH
Robotics Innovation Center
Robert-Hooke-Straße 5
28359 Bremen, Germany
Postadresse der Hauptgeschäftsstelle Standort Bremen:
DFKI GmbH
Robotics Innovation Center
Robert-Hooke-Straße 1
28359 Bremen, Germany
Tel.: +49 421 178 45-4021
Zentrale: +49 421 178 45-0
E-Mail: christoph.hertzberg@xxxxxxx
Weitere Informationen: http://www.dfki.de/robotik
-------------------------------------------------------------
Deutsches Forschungszentrum für Künstliche Intelligenz GmbH
Trippstadter Strasse 122, D-67663 Kaiserslautern, Germany
Geschäftsführung:
Prof. Dr. Jana Koehler (Vorsitzende)
Dr. Walter Olthoff
Vorsitzender des Aufsichtsrats:
Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
-------------------------------------------------------------
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |