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 < [email protected]> 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 <[email protected]> > > Sent: Monday, October 21, 2019 10:15 AM > > To: [email protected] <[email protected]> > > 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: [email protected] > > > > 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: [email protected] > > 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 > ------------------------------------------------------------- > > > >
