[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