[Trilinos-Users] TraceMin-Davidson failure
Alicia M Klinvex
aklinvex at purdue.edu
Mon Nov 10 10:51:30 MST 2014
Hello,
Thank you so much for giving our newest solver a try!
Anasazi calls a function called isFillComplete, which tells us whether you finished putting things in a matrix. If you did NOT finish putting things in the matrix, it breaks and outputs the error message you saw.
You may be thinking, "but I WAS finished modifying the entries of the matrix!" You need to let Anasazi know that by calling the Tpetra function fillComplete (http://trilinos.org/docs/dev/packages/tpetra/doc/html/classTpetra_1_1CrsMatrix.html#a27c06cd71c7542742a731a6cc91180d2). In your code, this will look like K->fillComplete() and M->fillComplete().
Does that answer your question?
Best wishes,
Alicia
----- Original Message -----
From: maireni at cimne.upc.edu
To: "Alicia M Klinvex" <aklinvex at purdue.edu>
Sent: Monday, November 10, 2014 2:54:46 AM
Subject: Re: [Trilinos-Users] Returned mail: see transcript for details
Hi Alicia,
At first so sorry for reply you a lot time for questions.
I am using the example you defined in the list that use
TraceMin-Davidson to solve a generalized eigenvalue problem
using Tpetra (and reading file).
The thing is i can not yet run my eigen problem.
In fact i have this mistakes and no reported in google
exist. Here it is.
Teuchos::ArrayRCP<unsigned
long>{ptr=0x46f9130,lowerOffset=0,upperOffset=8238,size=8239,node=0x4d6c7c0,strong_count=2,weak_count=0}
>> Allocating X_
>> Allocating KX_
>> Allocating MX_
>> Allocating R_
>> Allocating V_
>> Allocating KV_
>> Allocating MV_
>> done allocating.
Computing MV
terminate called after throwing an instance of 'std::runtime_error'
what():
/usr/local/trilinos-11.12.1/include/Tpetra_CrsMatrix_def.hpp:3517:
Throw number = 1
Throw test that evaluated to true: ! isFillComplete ()
What do you think i am doing wrong. I attached the code function
if you have time to check it for a while. I really interesting about
you tell me before, because i want to use any eigen-solver you defined
in anasazi.
Thanks a lot
Nelson
El 2014-11-06 22:20, Alicia M Klinvex escribió:
> Hello,
>
> a) The matrix should be the total matrix. If your matrix comes from a
> matrix-market or harwell-boeing file, we do have a function that will
> read the symmetric matrix from a file and store it as general. (I
> believe this is to optimize matrix-vector multiplications.)
> Alternatively, you can define your own matrix-vector multiplication
> operator, in which case Anasazi never needs to see your matrix.
> There's an example of this for TraceMin-Davidson.
>
> b) Are you using BKS? If you're not using block Krylov-Schur, you
> shouldn't need to create your own solver. RTR and
> TraceMin/TraceMin-Davidson have solvers built-in.
>
> c) I'm not sure I understand what you mean by the matrix being dense
> and sparse. Also, are you looking for the smallest or largest
> eigenvalues? Are you looking for interior or extreme eigenvalues?
>
> By the way, one of the cool things about Anasazi is that all of the
> eigensolvers use the same interface. If you want to try a couple of
> them, it only involves changing maybe 5 lines of code in your driver.
>
> Best wishes,
> Alicia
>
> PS: We should copy the user list in our correspondence, since some
> people are better equipped than I am to answer certain types of
> questions. For instance, I am not an Amesos developer. The Amesos
> developers can probably do a better job answering your questions about
> Amesos.
>
>
>
> ----- Original Message -----
> From: maireni at cimne.upc.edu
> To: "Alicia M Klinvex" <aklinvex at purdue.edu>
> Sent: Thursday, November 6, 2014 7:05:34 AM
> Subject: Re: [Trilinos-Users] Returned mail: see transcript for details
>
> Hello Alicia,
>
>
> Just simple questions
>
> a) When i use Anasazi with Tpetra in CSR format.
> Should be the total matrix even if it is symmetric or it is ok if i
> take
> for Anasazi the upper or lower one?. How to do that?
>
> b) I see Amesos accept now Pardiso solver. I use normally this Solver.
> My matrices is sparse and lapack is call when i use anasazi. How can i
> set amesos for use Pardiso or SuperLU(shared Memory). I see some macros
> but, i think should be another way no?
>
> c) The problem i have is symmetric dense and sparse. According
> to your experience with is the fastest method in Anasazi?
>
> Sorry again for ask you a lot, but i really excited with Trilinos.
>
> Regards
>
> Nelson
>
>
>
> El 2014-11-06 10:38, Alicia M Klinvex escribió:
>> Hello,
>>
>> Have you tried contacting the SLEPC team about your problems? They're
>> a helpful group as well. (I'm obviously not trying to tell you not to
>> use Trilinos; I just want you to be aware of the packages that can
>> solve your specific problem. We don't currently support finding all
>> eigenvalues in an interval. I should have that complete by the end of
>> the month though.)
>>
>> FEAST is slow because of its reliance on direct solvers such as
>> PARDISO and all of the factorizations it requires. You may want to
>> contact the FEAST developers to see whether it would be appropriate to
>> reduce the number of contour integration points, which can speed up
>> the code.
>>
>> Anasazi does have very powerful tools, and I'm glad you've decided to
>> give them a try. :-)
>>
>> I'm not familiar with AMLS. Are these small matrices dense or sparse?
>> Regarding the linear systems, if they are sparse, Amesos and Belos
>> are both really nice packages to use, depending on what your matrix is
>> like. Amesos contains direct solvers, and Belos is for iterative
>> solvers such as CG.
>>
>> Best wishes, and please keep us updated!
>> Alicia
>>
>>
>>
>> ----- Original Message -----
>> From: maireni at cimne.upc.edu
>> To: "Alicia M Klinvex" <aklinvex at purdue.edu>
>> Sent: Wednesday, November 5, 2014 8:57:55 PM
>> Subject: Re: [Trilinos-Users] Returned mail: see transcript for
>> details
>>
>> Hi Alicia M Klinvex,
>> Thanks for replying.
>> I was trying to use SLEPC's Krylov Schur but not successful yet.
>> I know the FEAST eigen-solver and is integrated in my code and works.
>> I call directly from MKL libraries, but is slow than other
>> eigen-solvers,
>> at least block Lanzcos method like BLZPACK. Another problem is
>> ARPACK++,
>> that when i call the AReig functions not works correctly. It use a
>> format
>> of CSC. My matrices is symmetric and could be lower or upper matrix.
>> In
>> any case,
>> the eigen-values is not ok. I saw Anasazi is inspired and have better
>> tools than ARPACK. This is why i
>> try to use Anasazi.
>>
>> Respect to size of problem, the idea is to use AMLS method. AMLS
>> method
>> is a condensation method
>> that can convert a huge matrix, millions of dofs, to just a little
>> thousands. In need to solve
>> a lot of eigen-values problems, but this eigen problems is so small
>> that
>> the corresponding one.
>> Also i need to solve a lot equations with a lot rigth hand side. I was
>> thinking in use
>> Pardiso, but trilnos have good tools and i want to explot too.
>>
>> Allow me try what you talk me and then i let you know.
>> Thanks for your help. Thanks a lot.
>>
>> Nel
>>
>>
>> El 2014-11-06 01:27, Alicia M Klinvex escribió:
>>> Hello Nelson,
>>>
>>> What you want is this constructor:
>>> http://trilinos.org/docs/r11.12/packages/tpetra/doc/html/classTpetra_1_1Map.html#aeb556362352e2ae62804601e36672a6c
>>>
>>> Map( global_size_t numGlobalElements, GlobalOrdinal indexBase, const
>>> Teuchos::RCP< const Teuchos::Comm< int > > & comm, LocalGlobal lg =
>>> GloballyDistributed, const Teuchos::RCP< Node > & node =
>>> defaultArgNode< Node >() )
>>>
>>> Here's what this constructor expects:
>>> * The number of rows of your matrix
>>> * The index base (which is generally 0)
>>> * The communicator (which we will come back to)
>>> * Whether the matrix is locally replicated or globally distributed
>>> (which we will come back to)
>>> * The node type, which defines the type of architecture you are using
>>>
>>> You may be thinking at this point, "I have to provide a communicator?
>>> But I don't want to use MPI!" You can define a serial Teuchos
>>> communicator which never communicates, as in this example:
>>> http://trilinos.org/docs/r11.12/packages/tpetra/doc/html/lesson01_no_mpi_8cpp-example.html
>>>
>>> For a sequential example, it doesn't matter whether you specify that
>>> the matrix is locally replicated or globally distributed. We can
>>> come
>>> back to this when you're ready to use MPI.
>>>
>>> Regarding finding all eigenvalues in an interval, you have several
>>> options:
>>> * You can compute the number of eigenvalues in an interval using
>>> inertia computations (meaning sparse factorizations will be
>>> involved),
>>> then call any eigensolver you want.
>>> * You can try Eric Polizzi's FEAST eigensolver (which requires an
>>> estimate of the number of eigenvalues in an interval). You can
>>> download it here: http://www.feast-solver.org/ It can also be found
>>> in certain versions of the Intel Math Kernel Library.
>>> * You can try SLEPC's Krylov Schur, which is supposed to support this
>>> feature. Just as a warning, I've personally never gotten it to work
>>> successfully.
>>>
>>> We are currently working on adding that functionality (computing all
>>> eigenvalues in an interval) to Anasazi. Just out of curiosity,
>>> roughly how many eigenvalues are there in your interval of interest?
>>> Also, how big is your matrix?
>>>
>>> Best wishes,
>>> Alicia
>>>
>>>
>>>
>>> ----- Original Message -----
>>> From: maireni at cimne.upc.edu
>>> To: "Alicia M Klinvex" <aklinvex at purdue.edu>
>>> Sent: Wednesday, November 5, 2014 1:08:00 AM
>>> Subject: Re: [Trilinos-Users] Returned mail: see transcript for
>>> details
>>>
>>> Hi Alicia M Klinvex,
>>>
>>> Thanks for reply.
>>> In my case, as in research area, i compile Trilinos for
>>> not running in MPI process, just in serial way. I know i can not
>>> exploits
>>> all tools of Trilinos, but is just for research. It have really
>>> interesting tools.
>>> When the code and the idea is working, migration to MPI is really
>>> well.
>>>
>>> For the case of column map and row map i need your help.
>>> At the moment, just a class matrix works fine in Ananazi is ok for
>>> me.
>>> Epectra or Tpectra is ok. I am using now Tpectra and i see i can
>>> define
>>> a typedef
>>> like this
>>>
>>> typedef double scalar_type;
>>> typedef Tpetra::CrsMatrix<scalar_type> TpetraCrsMatrix;
>>>
>>> the other parameters is a default values, so i assumed with they
>>> Anasazi works. My dude is in how to contruct the maps for serial
>>> code.
>>>
>>> Another thing i would like to ask you is about the eigen-solver.
>>> Anasazi can provide me the number of desired eigenvalues,
>>> but is possible it give to me an interval of eigen-values
>>> i.e [0, fecuency cuttof]?
>>>
>>>
>>> I really appreciate your help.
>>>
>>> Best wishes,
>>>
>>> Nelson
>>>
>>>
>>>
>>>
>>> El 2014-11-04 21:57, Alicia M Klinvex escribió:
>>>> Hello Nelson,
>>>>
>>>> My name is Alicia, and I am an Anasazi developer. I'm glad you've
>>>> decided to try Anasazi :-)
>>>>
>>>> I assume what you're asking is how to take your three CSR arrays and
>>>> turn them into a CrsMatrix that you can pass to an Anasazi
>>>> eigensolver. If you're using Tpetra, the constructor you're looking
>>>> for is this:
>>>> http://trilinos.org/docs/r11.10/packages/tpetra/doc/html/classTpetra_1_1CrsMatrix.html#a139a91ad9430f012bfb3bcb8fe413ae1
>>>> (If you're using Epetra instead, or want to know the difference
>>>> between Epetra and Tpetra, let me know.)
>>>>
>>>> Note that this constructor will expect the row map and column map,
>>>> which define how the data is distributed over the MPI processes. If
>>>> you don't understand how to create those maps, please let me know
>>>> and
>>>> I'll help you out.
>>>>
>>>> Does that answer your question?
>>>>
>>>> Best wishes,
>>>> Alicia Klinvex
>>>>
>>>>
>>>>
>>>> ----- Original Message -----
>>>> From: maireni at cimne.upc.edu
>>>> To: trilinos-users at software.sandia.gov
>>>> Sent: Tuesday, November 4, 2014 3:41:49 AM
>>>> Subject: Re: [Trilinos-Users] Returned mail: see transcript for
>>>> details
>>>>
>>>>
>>>> Dear Heidi Thornquist,
>>>>
>>>> Allow me introduce myself first. My name is Nelson Lafontaine,
>>>> i am a PhD student from UPC, Barcelona, Spain. Now i am Beijing
>>>> China
>>>> working with the Psor Chen Pu in the Automatic Multilevel
>>>> Substructure
>>>> Methods (AMLS).
>>>> I see you are a Anasazi developer and i write to you because i am
>>>> interested in use
>>>> this library. My installation of Trilinos (trilinos-11.12.1) was
>>>> successfully,
>>>> even i can run some test examples that you are define in Anasazi
>>>> files.
>>>>
>>>> However, like you create your own class of matrices and vector,
>>>> my data i can provided to solve my eigen problem is in the form of
>>>> a Compressed Sparse Row (CSR). My question is if exist a way to
>>>> call
>>>> the eigen-solver defined in Anasazi just providing the data of
>>>> compressed
>>>> Sparse row format, or if is possible to create the matrices types
>>>> defined
>>>> in Anasazi just using the CRS format.
>>>>
>>>> Thanks in advance for your time.
>>>>
>>>> Nelson
>>>> _______________________________________________
>>>> Trilinos-Users mailing list
>>>> Trilinos-Users at software.sandia.gov
>>>> https://software.sandia.gov/mailman/listinfo/trilinos-users
More information about the Trilinos-Users
mailing list