[petsc-dev] PetscObjectStateIncrease in MatMult*

Barry Smith bsmith at mcs.anl.gov
Sat Oct 17 15:08:26 CDT 2015


https://bitbucket.org/petsc/petsc/pull-requests/378/update-the-output-vector-state-in-pc-and/diff

On Oct 17, 2015, at 11:12 AM, Václav Hapla <vaclav.hapla at vsb.cz> wrote:
> 
> Yes, exactly, MATSHELL.
> But if I am right, MatShellSetOperation sets mat->ops->mult pointer directly to user-specified MatMult unless MatShellUseScaledMethods has been called.
> So user must keep in mind he should call PetscObjectStateIncrease in his MatMult.
> I feel like this is something one would intuitively await from the interface function...
> It would be less error-prone for future and user-implemented MatTypes.
> Vaclav
> 
> Dne 17.10.2015 v 17:58 Barry Smith napsal(a):
>>> On Oct 17, 2015, at 5:10 AM, Václav Hapla <vaclav.hapla at vsb.cz> wrote:
>>> 
>>> Hello,
>>> MatMult(), MatMultTranspose(), MatMultAdd(), MatMultTransposeAdd() and PCApply() belong to most common modifiers of Vec values.
>>> Maybe it would be nice if these routines called PetscObjectStateIncrease explicitly because of MATSHELL and such stuff.
>>> Thanks,
>>> Vaclav
>>    I assume you are suggesting this because users of MATSHELL or PCSHELL may not realize they need to call PetscObjectStateIncrease() on the output vector if they do not use VecGe/RestoretArray() to access the vector entries? (VecRestoreArray() automatically increases the state)
>> 
>>    What if we add it to MatMult_Shell(), MatMultTranspose_Shell(), PCApply_Shell() and PCApplyTranspose_Shell()?  It looks like those are the only ones where the state won't get increased automatically
>> 
>>    Thanks for the suggestion,
>> 
>>   Barry
>> 
>>> -- 
>>> 
>>> Vaclav Hapla
>>> Junior researcher
>>> IT4Innovations <http://www.it4i.eu/>
>>> 
>>> 
> 
> -- 
> 
> Vaclav Hapla
> Junior researcher
> IT4Innovations <http://www.it4i.eu/>
> 
> *office*
> phone: (+420) 597 32 9662
> room 310
> IT4Innovations building
> Studentska 6231/1B
> 708 00 Ostrava - Poruba
> Czech Republic
> 
> *contact address*
> Vaclav Hapla
> IT4Innovations
> VSB - Technical University of Ostrava
> 17. listopadu 15/2172
> 708 33 Ostrava - Poruba
> Czech Republic
> 
> 




More information about the petsc-dev mailing list