[petsc-users] [petsc-dev] MatPreallocatorPreallocate segfault with PETSC 3.16

Jed Brown jed at jedbrown.org
Tue Feb 1 10:07:39 CST 2022


Stefano Zampini <stefano.zampini at gmail.com> writes:

> Il giorno mar 1 feb 2022 alle ore 18:34 Jed Brown <jed at jedbrown.org> ha
> scritto:
>
>> Patrick Sanan <patrick.sanan at gmail.com> writes:
>>
>> > Am Di., 1. Feb. 2022 um 16:20 Uhr schrieb Jed Brown <jed at jedbrown.org>:
>> >
>> >> Patrick Sanan <patrick.sanan at gmail.com> writes:
>> >>
>> >> > Sorry about the delay on this. I can reproduce.
>> >> >
>> >> > This regression appears to be a result of this optimization:
>> >> > https://gitlab.com/petsc/petsc/-/merge_requests/4273
>> >>
>> >> Thanks for tracking this down. Is there a reason to prefer preallocating
>> >> twice
>> >>
>> >>    ierr =
>> >> MatPreallocatorPreallocate(preallocator,PETSC_TRUE,A);CHKERRQ(ierr);
>> >>    ierr =
>> >>
>> MatPreallocatorPreallocate(preallocator,PETSC_TRUE,A_duplicate);CHKERRQ(ierr);
>> >>
>> >> versus using MatDuplicate() or MatConvert()?
>> >>
>>
>
> Jed
>
> this is not the point. Suppose you pass around only a preallocator, but do
> not pass around the matrices. Reusing the preallocator should be allowed.

The current code is not okay (crashing is not okay), but we should decide whether to consume the preallocator or to retain the data structure. Peak memory use is the main reason hash-based allocation hasn't been default and wasn't adopted sooner. Retaining the hash until the preallocator is destroyed increases that peak.


More information about the petsc-users mailing list