[petsc-dev] Bug in MatShift_MPIAIJ ?

Eric Chamberland Eric.Chamberland at giref.ulaval.ca
Wed Oct 21 08:06:49 CDT 2015

Hi Barry,

if I may suggest, is it possible to have this test case added as a 
nightly test since, I don't know but... a matrix with no local lines 
may be something not widely tested...???



On 20/10/15 10:47 PM, Barry Smith wrote:
>    Eric,
>     Thanks for the test case. I have determined the problem, it is a nasty bug caused by overly convoluted code.
> The MatSeqAIJSetPreallocation() is there because if the matrix had been assembled but had no values in it the MatShift_Basic() took forever since
> a new malloc needed to be done for each local row. The problem is that MatSeqAIJSetPreallocation changed the value of the aij->nonew flag of that sequential object, BUT MatAssemblyEnd_MPIA() assumed that the value of this flag was identical on all processes. In your case since aij->nz = 0 on your matrix with no local rows the value of nonew was changed on one process but not on others triggering disaster in the MatAssemblyEnd_MPIA().
> This is now fixed in the maint, master and next branches and will be in the next patch release. I have also attached the patch to this email.
>    Barry

More information about the petsc-dev mailing list