Got it. Thank you.


On Wed, Feb 4, 2015 at 7:25 AM, Dave May <[email protected]> wrote:

>
>
> On Wednesday, 4 February 2015, bichinhoverde <
> [email protected]> wrote:
>
>> Ok, but from a PETSc user perspective, what is the difference between
>> create and get?
>>
>> When should I use get and when should I use create?
>>
>
> It's a memory saving optimization.
> It's a cache of vectors you can use. It's clever as it lets you reuse data
> rather always create/destroying objects.
>
>>
>> Can I call create several times to create several vectors? Is it the same
>> as creating one and then duplicating?
>>
>> Yes to both
>
>
>> Can I call get several times to get several vectors? Is it the same as
>> getting one and then duplicating?
>>
>>
> Functionally, both approaches are equivalent. However duplicating always
> allocated new memory thus the total memory footprint will increase.
>
>
>
>> If I replace all gets with creates, or all creates with gets in my code,
>> what will change?
>>
>
> If you change all creates to gets, probably the most notable difference
> would be the memory usage.  Plus whatever extra time is required for
> creating which isn't incurred when you re use vectors.
>
> Note that the DMGetVec will NOT initialize the entries to zero (unlike the
> Create variants). The user is responsible for that task.
>
>
>>
>>
>>
>>
>> On Wed, Feb 4, 2015 at 5:16 AM, Jed Brown <[email protected]> wrote:
>>
>>> bichinhoverde <[email protected]> writes:
>>>
>>> > Hi. I have some questions.
>>> >
>>> > What is the difference between DMCreateGlobalVector and
>>> DMGetGlobalVector
>>> > (and the local counterparts)?
>>>
>>> Create creates a vector that the caller owns.  Get merely gets access to
>>> a vector from a managed pool (creating it if necessary), to be returned
>>> via DMRestoreGlobalVector().
>>>
>>> > What happens when one calls SNESSolve with NULL for the solution
>>> vector, as
>>> > in src/snes/examples/tutorials/ex7.c:158? SNESSolve(snes,NULL,NULL);
>>>
>>> A vector is created automatically.  You can get access to it with
>>> SNESGetSolution.
>>>
>>
>>

Reply via email to