[petsc-users] How to correctly call MatXAIJSetPreallocation for MATIS?
Eric Chamberland
Eric.Chamberland at giref.ulaval.ca
Fri Nov 13 22:28:31 CST 2020
Hi,
ok, while doing the MWE, I finally found the problem, and it was on our
side...
Explanation: When using our "full MPI" non-zeros counting algorithm, we
do *communicate* the non-zeros to the owning processes of the lines we
count for.
Then, we do have the correct count for the call for
MatXAIJSetPreallocation(A,…..), so far so good.
*But*, just after the preallocation, we do the first assembly of the
matrix with all the non-zeros received from all processes... (which
means it is a strictly local assembly for MPIAIJ matrix)
That's where it was wrong: since we got entries on columns we don't own
in our local2global mapping , that's why we got: "Some of the column
indices can not be mapped!"
If i *may* suggest one thing, I would just change the wording of the
error and eventually adding the faulty column number, like:
"Global column indices (X) can not be mapped locally (does not appear in
given local2global mapping)!"
But now that everything is fine, I hope to never see the message again... ;)
Thanks a lot again for helping!
Eric
On 2020-11-12 3:38 a.m., Stefano Zampini wrote:
> Can you provide a MWE to show your issues? We can add it to the test
> suite and it can be educational for other users.
--
Eric Chamberland, ing., M. Ing
Professionnel de recherche
GIREF/Université Laval
(418) 656-2131 poste 41 22 42
More information about the petsc-users
mailing list