[Trilinos-Users] Beginner's problems with PyTrilinos and Anasazi

Thornquist, Heidi K hkthorn at sandia.gov
Wed Dec 17 12:15:17 MST 2008


Hi Marko,

Thanks, I think you found a bug in one of our orthogonalization methods :)
The initial vector that you pass in is initialized to zero, which is normally caught by
our orthogonalization methods, so can you generate the init vector by:

blocksize = 1
storage = Epetra.MultiVector( W.RowMap() , blocksize)
storage.Random();
eigs.setInitVec(storage)

Let me know if this helps.

Thanks,
Heidi


On 12/16/08 11:28 AM, "Marko Budisic" <mbudisic at engineering.ucsb.edu> wrote:

Hi Heidi,

thank you for your reply.

Indeed, I have intended to create a 5x5 matrix and the code snippet had
a faulty code, probably left over from when I was trying to play with
parameters to see if I understood them properly. The line

numglobals = nx*nx

should be changed to

numglobals = nx

to get a matrix with 5 rows. The matrix population code is complete.
However, this does not resolve the original problem. For additional
information, here are eigenvalues of the matrix that I would like to
compute (as computed by numpy and numpy.linalg):

1.00000000+0.j
-0.01363536+0.59362319j
-0.01363536-0.59362319j
0.06893738+0.j
0.33333333+0.j

Thank you for your help.

Best,
Marko


On Tue, 2008-12-16 at 11:09 -0700, Thornquist, Heidi K wrote:
> Hi Marko,
>
> Thanks for sending a copy of your code.  Upon inspection of the
> attached code snippet, it looks like you
> are creating a matrix with 25 rows and columns and then only filling
> the primary 5x5 block.  This gives
> the matrix a nullspace of dimension 20.  Is this the matrix you meant
> to generate, or did you omit some
> of the matrix population for brevity?  If so, could you include all
> the matrix population code.
>
> Thanks,
> Heidi
>
> ---
> Heidi K. Thornquist
> Senior Member of Technical Staff
> Electrical & Microsystem Modeling
> Sandia National Laboratories
> P.O. Box 5800, MS 0316
> Albuquerque, NM  87185-0316
> Phone: (505)284-8426
> Fax:   (505)284-5451
>
>
>
>
> On 12/15/08 9:47 PM, "Marko Budisic" <mbudisic at engineering.ucsb.edu>
> wrote:
>
>         Dear Trilinos list,
>
>         I would like to use PyTrilinos with Anasazi to compute
>         eigenvectors of
>         large non-symmetric sparse matrices. In order to familiarize
>         myself with
>         both packages, I tried to build a small example for computing
>         1-eigenvector of a probability transition matrix for a random
>         walk on a
>         graph. The solver I tried to use was BlockKrylovSchur.
>
>         I managed to successfuly build the matrix in question and even
>         perform
>         some basic operations on it (I checked by printing the
>         matrix). I also
>         managed to pass the setProblem() sanity test with the
>         Eigenproblem
>         object. However, when I try to invoke the solver, the GEES
>         subroutine
>         fails which causes the entire code to fail.
>
>         This is the traceback from Python:
>         ******************
>         Traceback (most recent call last):
>           File "src/anasazitest.py", line 56, in <module>
>             info = mngr.solve()
>           File
>         "/usr/lib/python2.5/site-packages/PyTrilinos/Anasazi.py", line
>         6456, in solve
>             return _Anasazi.BlockKrylovSchurSolMgrEpetra_solve(*args)
>         SystemError: /home/mbudisic/downloads/trilinos-9.0.1/packages/anasazi/src/AnasaziBlockKrylovSchur.hpp:1432:
>
>         Throw number = 1
>
>         Throw test that evaluated to true: info != 0
>
>         Anasazi::BlockKrylovSchur::computeSchurForm(): GEES returned
>         info != 0.
>         *******************
>
>         I am guessing that I am mismatching some options, possibly
>         related to
>         block size and sizes of auxiliary vectors but I don't know how
>         to
>         correct the problem. Below is the relevant source code.
>
>         If anyone could direct me in correcting this problem, I would
>         be very
>         thankful. Also, if you have any other suggestions, based on my
>         code,
>         those would also be very much appreciated.
>
>         Best,
>         Marko Budisic
>
>         *********************************
>         # epetra
>         nx = 5
>         numglobals = nx*nx
>         mycomm = Epetra.SerialComm()
>         mymap = Epetra.Map( numglobals, 0, mycomm )
>         W = Epetra.CrsMatrix(Epetra.Copy, mymap, 4)
>
>         # populate matrix
>         W.InsertGlobalValues( 0, [1.,2.,3.,2.], [0,1,2,4] )
>         W.InsertGlobalValues( 1, [1.,2.], [1,2] )
>         W.InsertGlobalValues( 2, [1.,2.], [2,3] )
>         W.InsertGlobalValues( 3, [3.,1.], [0,3] )
>         W.InsertGlobalValues( 4, [2.,1.], [3,4] )
>         W.FillComplete()
>
>         # normalize the matrix
>         d = Epetra.Vector( W.RowMap() )
>         W.InvRowSums(d)
>         W.LeftScale(d)
>
>         print W
>
>         eigs = Anasazi.BasicEigenproblem()
>         eigs.setA( W )
>         eigs.setHermitian(False)
>
>         Nev = 1
>         eigs.setNEV( Nev )
>
>         blocksize = 1
>         storage = Epetra.MultiVector( W.RowMap() , blocksize)
>         eigs.setInitVec(storage)
>
>         print "Problem set:", eigs.setProblem()
>
>         myPL = Teuchos.ParameterList()
>         myPL.set("Which", "LM")
>         myPL.set("Block Size",blocksize)
>         myPL.set("Verbosity", Anasazi.Errors | Anasazi.Warnings | \
>                      Anasazi.FinalSummary )
>
>         mngr = Anasazi.BlockKrylovSchurSolMgr( eigs, myPL )
>         info = mngr.solve()
>         print "Problem solved:", info
>
>         x = eigs.getSolution()
>         print x.Evecs()
>
>         *********************************
>
>
>         _______________________________________________
>         Trilinos-Users mailing list
>         Trilinos-Users at software.sandia.gov
>         http://software.sandia.gov/mailman/listinfo/trilinos-users
>
>
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> http://software.sandia.gov/mailman/listinfo/trilinos-users


_______________________________________________
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/20081217/e6c11230/attachment.html 


More information about the Trilinos-Users mailing list