Re: [eigen] How to create a Matrix<...> without copying data ? |

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

*To*: <eigen@xxxxxxxxxxxxxxxxxxx>*Subject*: Re: [eigen] How to create a Matrix<...> without copying data ?*From*: <vincent.lejeune@xxxxxxxxxx>*Date*: Mon, 17 May 2010 14:57:34 +0200

Thx. BTW are Eigen matrix stored in column major format, as with blas/lapack, by default ? Is there a command to change storage order of a matrix ? On Mon, 17 May 2010 13:32:22 +0200, Gael Guennebaud <gael.guennebaud@xxxxxxxxx> wrote: > On Mon, May 17, 2010 at 12:30 PM, Benoit Jacob > <jacob.benoit.1@xxxxxxxxx>wrote: > >> You can do: >> >> PartialPivLU<MatrixXd> lu(matrix.block(...)); >> >> or, from your double* pointer, >> >> PartialPivLU<MatrixXd> >> lu(Map<MatrixXd>(pointer,rows,cols).block(...)); >> >> or you can even get rid of the block() call by doing a strided Map. >> >> What we don't allow at the moment is in-place LU, i.e. allowing to not >> even copy that block. >> > > well, if you are not afraid about using internal functions, and so > functions > which can be removed/changed in the future, you can use this one: > > template<typename MatrixType, typename IntVector> > void ei_partial_lu_inplace(MatrixType& lu, IntVector& row_transpositions, > int& nb_transpositions); > > e.g., > > // declare a name variable for the block because current C++ standard > sucks. > Block<MyMatrix> bl(matrix, ....); > VectorXi row_transpositions(matrix.rows()); > int nb_transpositions; > > ei_partial_lu_inplace(bl, row_transpositions, nb_transpositions); > > The problem is that now you cannot exploit this LU dec via the PartialPivLU > API, but maybe that's enough for your needs... ? > > gael > > >> >> Benoit >> >> 2010/5/17 <vincent.lejeune@xxxxxxxxxx>: >> > >> > Hi, >> > >> > >> > >> > I have a matrix stored as a double* in columnsmajor format. >> > >> > I would like to compute the LU factorisation of a part of the matrix >> (that >> > >> > is, not the whole matrix, just a sub square of it) inplace, ie I do not >> > >> > want to copy data to an temporary buffer. >> > >> > >> > >> > Is it possible using Eigen ? I saw that PartialPivLU class copy input >> > >> > matrix when constructed... >> > >> > >> > >> > Thx, >> > >> > Vincent >> > >> > >> > >> >> >>

**Follow-Ups**:**Re: [eigen] How to create a Matrix<...> without copying data ?***From:*Benoit Jacob

**References**:**[eigen] How to create a Matrix<...> without copying data ?***From:*vincent.lejeune

**Re: [eigen] How to create a Matrix<...> without copying data ?***From:*Benoit Jacob

**Re: [eigen] How to create a Matrix<...> without copying data ?***From:*Gael Guennebaud

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] Indexes: why signed instead of unsigned?** - Next by Date:
**Re: [eigen] How to create a Matrix<...> without copying data ?** - Previous by thread:
**Re: [eigen] How to create a Matrix<...> without copying data ?** - Next by thread:
**Re: [eigen] How to create a Matrix<...> without copying data ?**

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