|Re: [eigen] a few more points...|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] a few more points...
- From: "Gael Guennebaud" <gael.guennebaud@xxxxxxxxx>
- Date: Sat, 3 Jan 2009 00:15:48 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=y5caHfJP7N9Th+VN2YgKYO3c95uvwuEXYppZCyDVJdo=; b=EwzEqN/fp6DUedWTjZFCEBRfZmMvfDEytXMe/c1yxXeiupiLR4bsmof6gRg8YE85kW yc3/8SKEBxsmK7l8UJr7p3tJeSxVv71+y2UoygGoNnvqWCk5BotkG/EE7GCM9TtEvwUk kPSwgjOzJkA3UIUv2sn5DJLpoG8WrAYg28YT0=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=DM9L9ph0hbgFlDDJbo6rE1fjhRnGdoHY5slnDPoJoIAr1+RkGxwdmlCj+bG2MlUBaj a6jjw63SAPFxwjxogsFdmdmQE+sJUXsBz9k+Qc1XKRAkpna9G9gQhOcQyBGUiTzCq+Mr 4hcIw7GI7+OtXjUSellDKEKt9WyiMlX4biBDQ=
On Fri, Jan 2, 2009 at 10:28 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
> Hi List,
> 1) Should we rename Eigen/Regression to Eigen/LeastSquares?
> after all, regression analysis is only one of the things that one can
> do with least squares, currently this module is essentially providing
> raw least squares, no fancy (non-linear) regression analysis; moreover
> other modules like LU are named after the basic algo not after the
> common use case -- so naming that module Regression is a bit like
> calling the LU module "Solving" and the QR module "Spectral" etc... We
> could keep Regression as a trivial, deprecated header for now until 2.0...
I'm ok with that.
> 2) Is it a bug that ei_traits<Block>::Flags doesn't set the AlignedBit
> even if the ForceAligned option is used?
> I have a local change like this:
> - Flags = (MatrixType::Flags & (HereditaryBits |
> MaskPacketAccessBit | DirectAccessBit)) | FlagsLinearAccessBit,
> + Flags = (MatrixType::Flags & (HereditaryBits |
> MaskPacketAccessBit | DirectAccessBit)) | FlagsLinearAccessBit
> + | (int(PacketAccess)==ForceAligned ? AlignedBit : 0),
> Is this OK with you?
hm... actually ForceAligned is used when we can guarantee that the
read/write accesses to the data will be aligned even though the first
element is not aligned (e.g., m.block(...) += ... ;). The AlignedBit
means that the first element is aligned. So they are 2 different
things, and I don't think that's safe to add AlignedBit if we have
m1.block<2,2>(1,0) *= 2;
will take the "LinearVectorization with CompleteUnrolling" path and crash.
But I see your point, ForceAligned is currently only useful for
relatively large matrices for which there is no unrolling. Perhaps,
what you would like is a way to tell Block that our sub matrix
expression preserve alignment ?
> I've come across this issue while trying to get
> the 4x4 matrix inversion to really take advantage of vectorization.
> Recall it's working on 2x2 blocks. By the way, the block() methods
> don't currently expose the ForceAligned stuff, don't know yet if we
> want to expose that there or keep it internal.
I'd keep it internal for now....
> 3) I'm adding a StorageOrder enum in Matrix, to fix wrong code in LU.h
> that passed Flags as 4th templ param of Matrix. One more little thing
> to change when/if you do the change with the Compact option.
I won't have time to code till Monday evening....
> 4) I think we need a detailed wiki page explaining what we guarantee
> API stability for and what we don't -- indeed it's nontrivial to
> separate public from private stuff in a template lib. I think we
> should plainly exclude asDiagonal() from the API stability guarantee
> in 2.0 to leave us as much wiggling space as possible.
Yes, good idea, again no time to help till Monday evening...