[petsc-dev] xlocal = da.getLocalVec() .. da.restoreLocalVec(xlocal) skip the restore
Matthew Knepley
knepley at gmail.com
Wed Feb 1 20:17:58 CST 2023
On Wed, Feb 1, 2023 at 9:06 PM Barry Smith <bsmith at petsc.dev> wrote:
>
> Hmm, When I do
>
> def somePythonfunction():
> ...
> x = da.createLocalVec()
> ....
> return
>
> The x seems to be properly "garbage collected" at some point; I was
> guessing it was at the return or some time later than the return, but it
> did not wait until PetscFinalize().
>
> So does the x above HAVE to exist until PetscFinalize()? If not then
> somehow Python realizes x is no longer referenced and VecDestroy() is
> called on it when some garbage collection takes place. I would like the
> same thing happen with the x = da.getLocalVec() but calling
> x.da.restoreLocalVec() instead of x.destroy(). Note specifically
> parallelism doesn't play a role here because x is local.
>
It can happen at a random time, so it is unsafe to structure without a
"with" since it could hold the local vector maybe after the user tries to
destroy the DA.
Matt
> Barry
>
>
> On Feb 1, 2023, at 8:07 PM, Matthew Knepley <knepley at gmail.com> wrote:
>
> On Wed, Feb 1, 2023 at 6:33 PM Barry Smith <bsmith at petsc.dev> wrote:
>
>>
>> Would it be possible to rig the xlocal obtained from
>> self.da.getLocalVec() to automatically trigger the da.restoreLocalVec()
>> when the xlocal goes out of scope so that the user does not need to
>> explicitly make the call. If so, how should I go about implementing it?
>>
>
> This would work in C++ where the object has a defined lifetime, but Python
> is garbage collected. The way it does this
> pattern is using the "with" statement.
>
> Matt
>
>
>> Barry
>>
> --
> What most experimenters take for granted before they begin their
> experiments is infinitely more interesting than any results to which their
> experiments lead.
> -- Norbert Wiener
>
> https://www.cse.buffalo.edu/~knepley/
> <http://www.cse.buffalo.edu/~knepley/>
>
>
>
--
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20230201/e608e6ec/attachment.html>
More information about the petsc-dev
mailing list