Re: [eigen] Tiny matrix in Eigen2 |

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

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] Tiny matrix in Eigen2*From*: Rohit Garg <rpg.314@xxxxxxxxx>*Date*: Thu, 17 Sep 2009 14:23:05 +0530*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=93byPyqC43tMJX8t3KqJBs2Xp6dPSV4WTTIjqPC2KPw=; b=EFPmaQ0vdEJmdJ+HphxDUp9i499Dx+dWSx4eXsv4O7q06DyIkkuuvAhYJ2LG+Nq8E2 beCHChXbaYE7LPCbNU131HBmLJmnOoXBUBQpegsgJZKm5FmC37jZ2q8Iq/lIo1/HtsFe OdCI2QKQoEJnhsAxFexau65556lpcCPTmpM9w=*Domainkey-signature*: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=uVx898Km2wB/Qv8tg6ln96WB8Ix4OEOLvyJpf659VIzQ8mgbF3GaJcfVciA/t99fkk V7oGVHfg5wo9ERVdqL06wqGQUvNFGp3C5qaROnd9M7WdsshL+fuP+xHQM5nS+iNeDvOd Hkt1DVwuUWHATJq7BpPmBs1IINOif3ij8XUCQ=

On Thu, Sep 17, 2009 at 2:03 PM, WANG Xuewen <xuewen.wang@xxxxxxxxx> wrote: > Hi, > > We are trying to replace our home made matrix vector library with Eigen2 > which provides an unified interface between tiny matrix and medium size > matrix and sounds promising on performance. Surprisingly, it is 10% > slower for tiny matrix (with 2.0.5, not sure about the devel branch > since same code doesn't compile using it), so I wonder if there is > something wrong that I've made and anything that can help improving it. > > Our tiny matrix whose dimension limits to 7 but the exact dimension is > not known at compile time. The most costly computation on the matrix is > to compute the exponential of a real or complex matrix. We use the > method similar to MatrixExponential in unsupported. > > I've used something like > > typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, > Eigen::RowMajor | Eigen::DontAlign, > NMaxTinyMatrixDimension, NMaxTinyMatrixDimension> > TinyRMatrix; > > typedef Eigen::Matrix<std::complex<double>, Eigen::Dynamic, Eigen::Dynamic, > Eigen::RowMajor | Eigen::DontAlign, > NMaxTinyMatrixDimension, NMaxTinyMatrixDimension> > TinyCMatrix; > > typedef Eigen::Matrix<double, Eigen::Dynamic, 1, > Eigen::RowMajor | Eigen::DontAlign, > NMaxTinyMatrixDimension, 1> > TinyRVector; > > typedef Eigen::Matrix<std::complex<double>, > Eigen::Dynamic, 1, > Eigen::RowMajor | Eigen::DontAlign, > NMaxTinyMatrixDimension, 1> > TinyCVector; > > Where NMaxTinyMatrixDimension is 7. > > My questions are: > > 1. Is the chosen storage the right choice for my problem? Should I just > use Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> etc? Then your matrix would be stored in column major order. See if that affects you. If not I'd just go with this declaration. > > 2. Even if the storage is in the stack, but the dimension is not known > at compile time. Will the loop get unrolled for most operations? AFAIK, if the dimensions are not known at compile time, then it wont be stored on stack. I am not sure but I think it wont unroll. Use -funroll-loops with gcc to do it in case eigen doesn't unroll it. > > 3. We do something like M = N + scalar * Matrix::Identity(); as seen in > unsupported. Is this optimal? Does it really matter? > > 4. Our internal library stores a complex matrix by using two matrix, one > for the real part and another for the imaginary part. It seems that this > improves but is it still preferred even with Eigen2? > > Sorry that I don't know (yet) much about the internal of Eigen2 so > haven't figured out the answer to my questions myself so your > suggestions will be very appreciated. > > thanks, > > Xuewen > > P.S. I'm sorry if you have received the mail twice since apparently I used > the wrong email address the first time. > > > > > > > > > > > > > > > > -- Rohit Garg http://rpg-314.blogspot.com/ Senior Undergraduate Department of Physics Indian Institute of Technology Bombay

**Follow-Ups**:**Re: [eigen] Tiny matrix in Eigen2***From:*Benoit Jacob

**References**:**[eigen] Tiny matrix in Eigen2***From:*WANG Xuewen

**Messages sorted by:**[ date | thread ]- Prev by Date:
**[eigen] Tiny matrix in Eigen2** - Next by Date:
**Re: [eigen] Rigid Transformations in eigen: discussion thread** - Previous by thread:
**[eigen] Tiny matrix in Eigen2** - Next by thread:
**Re: [eigen] Tiny matrix in Eigen2**

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