Re: [eigen] Blocked QR algorithm - lapack compatible ?

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


Actually, pinging Thomas, because I remember he faced the exact same
issue. The conversion is not hard to do at all, but there is something
to do.

Benoit

2010/6/7 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>:
> I'm pretty sure that out householder stuff isn't LAPACK compatible:
> either our hCoeffs or our housholder vectors are different. Don't
> remember which. Since Gael says the hCoeffs are compatible, I guess
> it's the vectors then, that are different.
>
> Benoit
>
>
>
> 2010/6/7  <vincent.lejeune@xxxxxxxxxx>:
>> Hi,
>>
>>
>>
>> so there is some error in my code, but I don't see where...
>>
>>
>>
>> I wished to write a blocked-Householder applying function like DLARFB in
>>
>> Lapack.
>>
>> This routine compute C:=C-V*T*V'*C, where the i-th column of V store the
>>
>> vector that defines the i-th householder factor.
>>
>> Indeed H = H1 * H2 * H3... * Hn can be written H = I - V * T * V', where T
>>
>> is a triangular factor, whose elements depends on V and on taus factor.
>>
>> T is computed by DLARFT in Lapack.
>>
>>
>>
>> I've attached a header file that contain my implemantation of such
>>
>> functions. It seems that they return the same results than Lapack routines,
>>
>> but the result of a QR decomposition is not the same than Eigen's one.
>>
>> Maybe you could give it an eye and find where is the issue...Thanks
>>
>>
>>
>> Vincent
>>
>>
>>
>>
>>
>> On Wed, 2 Jun 2010 11:33:13 +0200, Gael Guennebaud
>>
>> <gael.guennebaud@xxxxxxxxx> wrote:
>>
>>> sorry but our householder factor should really be the same than Lapack.
>>
>> Our
>>
>>> makeHouseholder computes the same thing than the Lapack dlarfg routine.
>>
>>>
>>
>>> gael
>>
>>>
>>
>>> On Fri, May 21, 2010 at 6:30 PM, Benoit Jacob
>>
>>> <jacob.benoit.1@xxxxxxxxx>wrote:
>>
>>>
>>
>>>> True, our hCoeffs aren't quite the same as LAPACK's tau. I don't
>>
>>>> remember exactly but I'm sure Gael does, as he coded that, so, pinging
>>
>>>> him.
>>
>>>>
>>
>>>> Benoit
>>
>>>>
>>
>>>> 2010/5/21  <vincent.lejeune@xxxxxxxxxx>:
>>
>>>> >
>>
>>>> > Hi,
>>
>>>> >
>>
>>>> >
>>
>>>> >
>>
>>>> > I'm trying to implement a blocked QR algorithm, using the code from
>>
>>>> >
>>
>>>> > HouseholderQR.
>>
>>>> >
>>
>>>> > I'm using the algorithm used in lapack routine dgeqrf : first I make
>>
>>>> > the
>>
>>>> >
>>
>>>> > reduction of a panel of the input matrix, then I build the "T"
>>
>>>> > triangular
>>
>>>> >
>>
>>>> > factor in H=I-VT'V' that defines the blocked householder
>>
>>>> > transformation,
>>
>>>> >
>>
>>>> > then I apply this transformation to the trailing submatrix by a left
>>
>>>> >
>>
>>>> > multiplication. Then I iterate the process.
>>
>>>> >
>>
>>>> >
>>
>>>> >
>>
>>>> > I think that the current implemantation of householderQR does not
>>
>>>> > comply
>>
>>>> >
>>
>>>> > with lapack routine. The coefficients in hCoeffs() does actually not
>>
>>>> > have
>>
>>>> >
>>
>>>> > the same meaning than the one in the TAU vector found in dgeqrf. When
>>
>>>> >
>>
>>>> > applying dlarft and dlarfb with hCoeffs to a partially reduced
>>
>> matrix,
>>
>>>> > I
>>
>>>> >
>>
>>>> > end with mostly different results than the one furnished by a
>>
>> complete
>>
>>>> >
>>
>>>> > eigen householder decomposition (strangly the first row is correct).
>>
>>>> >
>>
>>>> >
>>
>>>> >
>>
>>>> > I suspect that the applyhousolderfrom the left use the coefficient in
>>
>> a
>>
>>>> >
>>
>>>> > different war than dlarf in lapack does.
>>
>>>> >
>>
>>>> >
>>
>>>> >
>>
>>>> > Is there some doc on how hcoeffs from eigen and tau from lapack are
>>
>>>> >
>>
>>>> > related ?
>>
>>>> >
>>
>>>> >
>>
>>>> >
>>
>>>> > Thanks, Vincent
>>
>>>> >
>>
>>>> >
>>
>>>> >
>>
>>>>
>



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