[Trilinos-Users] Problem with AztecOO constructor before or after A.FillComplete()

Heroux, Michael A maherou at sandia.gov
Tue Jul 30 21:15:11 MDT 2013


Luca,

If you have a simple example, please send it to me.

Mike

On 7/30/13 2:26 PM, "Luca Heltai" <luca.heltai at gmail.com> wrote:

>Dear mike, 
>
>Thanks for the fast reply! We construct a standard Epetra_CrsGraph, using
>a single Epetra_Map. After this we construct the Epetra_CrsMatrix using
>the constructor that takes a graph. This is the only difference we have
>with respect to the example, which generates the matrix and the graph at
>the same time. We tried that too, but things were not working either.
>Is the ordering by which one specifies the diagonal elements important? I
>our code, diagonal elements are inserted first, then all others follow
>(using a single call to ReplaceGlobalValues per row, where the first
>element of the data and indices vectors always refers to the diagonal...
>Might this be a problem?).
>
>Thanks!
>
>Luca
>
>On Jul 30, 2013, at 8:58 PM, "Heroux, Michael A" <maherou at sandia.gov>
>wrote:
>
>> Luca,
>> 
>> This is a restriction in the AztecOO data model.  On each processor
>> AztecOO needs to have columns indices exactly match the row indices.
>> Additional column indices due to off-processor needs must be ordered
>>last
>> and grouped together by MPI rank.  Epetra usually does the ordering
>> automatically for you, as long as you don¹t specify the column map when
>> calling the Epetra_CrsMatrix constructor.  If you are specifying the
>> column map, or providing your own operator then you need to make sure
>>that
>> the column indices are ordered this way.
>> 
>> If you are using the typical Epetra_CrsMatrix constructors, you probably
>> have a column on some processor that has no entries on a processor that
>> owns the corresponding row, and therefore that column ID is missing and
>> making AztecOO complain.  Often this is an error in the logic that
>> generates matrix coefficient.
>> 
>> Mike
>> 
>> 
>> On 7/30/13 10:19 AM, "Luca Heltai" <luca.heltai at gmail.com> wrote:
>> 
>>> Dear All, 
>>> 
>>> we are having some problems on a simple program that solves a linear
>>> system in parallel using AztecOO. Our program was modified from one of
>>> the examples, only to fill the matrix with "interesting" values, and it
>>> works fine in serial.
>>> 
>>> When running it in parallel, we get the following cryptic message:
>>> 
>>> 
>>> AZ_extract_comm_info: Received elements must be stored after
>>>                  all 726 local elements
>>> 
>>> 
>>> If the AztecOO solver is initialized *before* the call to FillComplete
>>> for the matrix, then the problem goes away. That is:
>>> 
>>> 
>>> A.FillComplete();
>>> AztecOO Solver(&A, &x, &b);  // Crashes
>>> 
>>> ====
>>> 
>>> AztecOO Solver(&A, &x, &b);  // Works
>>> A.FillComplete();
>>> 
>>> 
>>> Since our goal is to solve a Komplex_LinearProblem, we need to
>>> FillComplete before defining the Linear Problem, and therefore the
>>> Solver... 
>>> 
>>> We have not been able to reproduce the error on the example, so we
>>>guess
>>> there must be something wrong with our code...
>>> 
>>> Any idea on what the error above means?
>>> 
>>> Thanks, 
>>> 
>>> Luca & Ivan.
>>> 
>>> --
>>> Luca Heltai <luca.heltai at gmail.com>
>>> http://people.sissa.it/~heltai/
>>> Scuola Internazionale Superiore di Studi Avanzati
>>> Phone:  +39 040 3787 449, Office: 622
>>> --
>>> There are no answers, only cross references
>>> 
>>> 
>>> _______________________________________________
>>> 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




More information about the Trilinos-Users mailing list