[Trilinos-Users] PyTrilinos + Anasazi - Generalized eigenproblem
Chris Baker
cgbaker at gmail.com
Mon Dec 22 14:32:52 MST 2008
Hi Marko,
It looks like the problem where the solver would freeze with an auxiliary
vector is some combination of the orthogonalization routine and the small
problem size. I suggest you start running with a larger sample problem, at
least 10 x 10. For the case that the solver seems to freeze, it should be
possible to fix this via:
myPL.set("Orthogonalization","DGKS")
I played around on some row-stochastic matrices to verify that deflating
against the (normalized) ones() vector worked.
Thanks,
Chris
On Mon, Dec 22, 2008 at 13:28, Marko Budisic
<mbudisic at engineering.ucsb.edu>wrote:
> Hi Chris,
>
> thank you for all your responses, especially those over the weekend. I
> wasn't trying to rush you in my last e-mail, I was just summarizing all my
> questions because I wanted to make them clear at the end of the e-mail so
> you didn't have to decode what I was actually asking for in the end. The
> discussion with you was extremely helpful with my understanding of the code
> and it's a pleasure to have such responsive support on the other end.
>
> As for the problem, I resorted to solving the generalized eigenproblem in
> the exact way you suggested and I'm glad to say that it is working well. My
> original matrix A might end up being symmetric in some cases too, so I will
> try the Davidson solver in those cases.
>
> All of the things being said, it seems that it is only Monday and that the
> prospects are good for my problems to be resolved, thanks to you and Heidi
> in the past weeks, so I am glad that is the case.
>
> Best,
>
> Marko
>
> Chris Baker wrote:
>
>> Hello Marko,
>>
>> I am currently looking into the reason that Anasazi+PyTrilinos becomes
>> unresponsive when using Auxilliary vectors.
>>
>> Am I right to assume that one use of AuxVecs would be to used for
>> removing "known" eigenvectors from the process? In my case, I will
>> often have row-stochastic matrices. Most of the times, they will
>> have the largest eigenvalue at 1 with eigenspace being the vector
>> filled with ones (the diagonal of the vector space). Would passing a
>> vector filled with ones ( via say PutScalar(1.0) ) to AuxVecs (and
>> choosing "LM" as the sorting method) make the code return the second
>> largest evalue/evector as the result (assuming NEV = 1)?
>>
>>
>> Yes.
>>
>> In any case, I have tried working a bit more with the AuxVecs to see
>> why the code was not responsive before. It seems that AuxVecs
>> vectors have to be of length 1
>>
>>
>> Also correct. In fact, for multiple auxiliary vectors, they must form an
>> orthonormal basis.
>>
>> In this case however, this is the last thing the code prints to the
>> screen (even with all verbosity options turned on) but it still
>> continues to run at 100% CPU. I waited for some time but it never
>> exited or printed other messages so I ended up killing the process.
>>
>>
>> Yeah, I'm currently investigating this. We don't see this problem with
>> Anasazi in general, so I am leaning toward some Python issue.
>>
>> When I pass the unit length vector to AuxVecs, the code runs but
>> fails (and exits to command prompt) with
>>
>> Anasazi::SVQBOrthoManager::findBasis(): Orthogonalization
>> constraints not feasible
>>
>>
>> This is because the auxiliary vectors add another constraint on the
>> orthogonalization routine. Your 5x5 example just doesn't have enough room to
>> move around: 1 vector for the auxiliary vector plus 3 vectors minimum for
>> BKS plus 1 additional vector because the problem is non-Hermitian (this
>> gives us extra room to keep from splitting a conjugate pair).
>>
>> Having said that, I don't believe this is the cause for the problem with
>> setAuxVecs(). I ran on a larger matrix and still saw the freezing.
>>
>> To summarize, my main question is the one stated at the beginning,
>> about the use ot AuxVecs, the rest of the e-mail was more of a
>> followup to your answer. Of course, I am still interested in an
>> answer to my previous question about why the generalized
>> eigenproblem acts as the regular eigenproblem in PyTrilinos
>> (explained in my previous e-mails).
>>
>>
>> Solving generalized eigenvalue problems with BlockKrylovSchur requires a
>> little more work. I neglected to tell you this in my previous email, because
>> my brain doesn't work properly on the weekend. In short, the generalized
>> eigenvalue problem must be transformed into a standard eigenvalue problem to
>> work with BKS. (/This is not the case with the other Anasazi eigensolvers,
>> but they don't solve non-Hermitian problems, so they are not relevant to
>> you./)
>>
>> In your particular case (searching for the largest magnitude eigenvalues
>> of (W,Dsum)), construct a linear operator
>> Op = inv(Dsum) W
>> This transforms the eigenvalue problem to
>> inv(Dsum) W v = v lambda
>> The eigenvectors and eigenvalues are unchanged from the generalized
>> eigenvalue problem.
>>
>> Pass Op to the BasicEigenproblem class, either by setOp() or setA(). If a
>> matrix is passed via setM(), it is used for the inner product defining
>> orthogonality. The benefit of doing that is to restore symmetry in Op and to
>> handle certain special cases. In your case, W was not symmetric, so that
>> symmetry in inv(Dsum) W cannot be easily restored. I would not pass anything
>> to setM().
>>
>> However, in your case, because Dsum is a diagonal matrix, applying the
>> operator inv(Dsum) W serves to implicitly scale the entries of W on every
>> application of the operator. In this case, it is probably better to simply
>> scale them once in situ, as you were doing before, and consider simply the
>> standard eigenvalue problem.
>>
>> I hope this helps. Even more, I hope this is correct; after all, it is
>> only Monday.
>>
>> I'm still looking at the setAuxVecs() problem with Anasazi+PyTrilinos. I
>> will respond to you and the list when it is diagnosed.
>>
>> Chris
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Trilinos-Users mailing list
>> Trilinos-Users at software.sandia.gov
>> http://software.sandia.gov/mailman/listinfo/trilinos-users
>>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://software.sandia.gov/mailman/private/trilinos-users/attachments/20081222/060de1d7/attachment.html
More information about the Trilinos-Users
mailing list