Re: [eigen] Small dynamic matrix optimization

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



Also let me add that, e.g.:

Matrix<double,Dynamic,Dynamic,0,16,16>

already allows you to use small dynamic-sized matrices with static storage up to 16x16. API-wise, we could imagine adding an option to enable larger sizes at runtimes with dynamic allocation, e.g.:

Matrix<double,Dynamic,Dynamic,WithHeapAllocFallback,16,16>



Also related to this general question, it would be interesting to implement our own stack to hold dynamic-allocated temporaries. Such temporaries would not be moveable, so we have to be very careful to use this mechanism only for temporaries we manage from birth to death.

Gaël.

On Mon, Oct 21, 2019 at 4:36 PM Christoph Hertzberg <chtz@xxxxxxxxxxxxxxxxxxxxxxxx> wrote:
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/