[Trilinos-Users] Beginner's problems with PyTrilinos and Anasazi
Baker, Christopher Grover
cgbaker at sandia.gov
Tue Dec 16 12:10:56 MST 2008
Hi Marko.
I did not notice that. We are importing that matrix into a C++-only Anasazi test to investigate this behavior. We'll get back to you as soon as we have something.
Chris
On 12/16/08 12:06 PM, "Marko Budisic" <mbudisic at engineering.ucsb.edu> wrote:
Hi Chris,
those eigenvalues are right for the matrix W. However, if you look back
into the code, you'll see that immediately after populating the entries
of the matrix, I rescale the matrix rows with matrix sums to create a
row-stochastic matrix. After that eigenvalues are those that I've
included in my reply to Heidi.
Thanks,
Marko Budisic
On Tue, 2008-12-16 at 11:56 -0700, Baker, Christopher Grover wrote:
> Marko,
>
> If I am correct in reading the code below, the matrix A is:
> W =
> (1,1) 1
> (1,2) 2
> (1,3) 3
> (1,5) 2
> (2,2) 1
> (2,3) 2
> (3,3) 1
> (3,4) 2
> (4,1) 3
> (4,4) 1
> (5,4) 2
> (5,5) 1
>
> or, alternatively:
>
> 1 2 3 2
> 1 2
> W = 1 2
> 3 1
> 2 1
>
> According to MATLAB eig() and eigs(), the eigenvalues of this matrix
> are:
> 4.3379
> -0.2754 + 2.7399i
> -0.2754 - 2.7399i
> 0.2128
> 1.0000
>
> These are not the same eigenvalues that you list below. Do I have the
> matrix wrong?
>
> Chris
>
> 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
>
>
> --------------------------------------
> Christopher G. Baker, Ph.D.
> Scalable Algorithms Department (01416)
> Sandia National Laboratories
> MS 1320, P.O. Box 5800
> Albuquerque, NM 87185-1320
> email: cgbaker at sandia.gov
> phone: 505-284-6978
> --------------------------------------
>
_______________________________________________
Trilinos-Users mailing list
Trilinos-Users at software.sandia.gov
http://software.sandia.gov/mailman/listinfo/trilinos-users
--------------------------------------
Christopher G. Baker, Ph.D.
Scalable Algorithms Department (01416)
Sandia National Laboratories
MS 1320, P.O. Box 5800
Albuquerque, NM 87185-1320
email: cgbaker at sandia.gov
phone: 505-284-6978
--------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://software.sandia.gov/mailman/private/trilinos-users/attachments/20081216/8e67cc38/attachment-0001.html
More information about the Trilinos-Users
mailing list