[Trilinos-Users] Problem with AztecOO constructor before or after A.FillComplete()
Luca Heltai
luca.heltai at gmail.com
Tue Jul 30 13:26:55 MDT 2013
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
>
>
More information about the Trilinos-Users
mailing list