[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