[petsc-dev] Bug in MatShift_MPIAIJ ?

Eric Chamberland Eric.Chamberland at giref.ulaval.ca
Thu Oct 8 13:45:10 CDT 2015


Ok,

if I comment the following lines (added in 3.6.2), it works:

PetscErrorCode MatShift_MPIAIJ(Mat Y,PetscScalar a)
{
   PetscErrorCode ierr;
   Mat_MPIAIJ     *maij = (Mat_MPIAIJ*)Y->data;
   Mat_SeqAIJ     *aij = (Mat_SeqAIJ*)maij->A->data;

   PetscFunctionBegin;
   if (!Y->preallocated) {
     ierr = MatMPIAIJSetPreallocation(Y,1,NULL,0,NULL);CHKERRQ(ierr);
   } /*else if (!aij->nz) {
     ierr = MatSeqAIJSetPreallocation(maij->A,1,NULL);CHKERRQ(ierr);
   }*/
   ierr = MatShift_Basic(Y,a);CHKERRQ(ierr);
   PetscFunctionReturn(0);
}

Eric

On 08/10/15 09:45 AM, Eric Chamberland wrote:
> Hi!
>
> hint: For petsc 3.6.1, if I apply the patches that Patrick gave (in the
> head of this thread), it all works correctly,
>
> Eric
>
> On 07/10/15 10:11 PM, Eric Chamberland wrote:
>> Hi Jed,
>>> If I recall correctly, that patch is only checking for incorrect use by
>>> ensuring that the flags are set collectively.  If your code is correct
>>> then it doesn't affect you and if your code is incorrect, it will error
>>> now where as it would behave incorrectly before.  The implementation was
>>> done by changing some enum values, which is why it breaks the ABI.
>>>
>>> As Satish says, you can apply the patch and see if your code errors.
>>>
>>> If your example is simple, you can send it along so we can debug and add
>>> it to the test suite.
>>
>> ok, after applying the patch, the code still error at the same place.
>>
>> The fact is that doing the very same MatShift with petsc 3.5.3 was
>> working correctly...  in fact it is now hanging into one of our test
>> from our test suite...
>>
>> I will have to dig further into this...
>>
>> to be continued...
>>
>> Eric
>
>
> Hi!




More information about the petsc-dev mailing list