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

Bill Spotz wfspotz at sandia.gov
Thu Dec 18 13:23:41 MST 2008


Marko,

Now that this issue seems to be resolved, I'm curious about how  
PyTrilinos handled the error.  Your original message made it look like  
a python exception was raised and that the python interpreter did not  
crash.  Is this correct?

Thanks

On Dec 17, 2008, at 2:25 PM, Marko Budisic wrote:

> Hi Heidi,
>
> yes, my test problem works fine now. Thank you and Chris for your  
> help!
> I am glad that my problem has done some greater good too :)
>
> If I encounter any other problems along the way, I'll post again, but
> for now I think I am set.
>
> Best,
> Marko
>
> On Wed, 2008-12-17 at 12:15 -0700, Thornquist, Heidi K wrote:
>> 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
>>
>>
>> _______________________________________________
>> 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

** Bill Spotz                                              **
** Sandia National Laboratories  Voice: (505)845-0170      **
** P.O. Box 5800                 Fax:   (505)284-0154      **
** Albuquerque, NM 87185-0370    Email: wfspotz at sandia.gov **







More information about the Trilinos-Users mailing list