[petsc-users] some problem with the VecCreateGhost.
丁老师
ztdepyahoo at 163.com
Thu Aug 15 09:12:20 CDT 2013
What the function of "restore the local form",
can i use VecDestroy to free the local form only;
在 2013-08-15 19:13:52,"Jed Brown" <jedbrown at mcs.anl.gov> 写道:
>丁老师 <ztdepyahoo at 163.com> writes:
>
>> I want to know
>> 1. What is the relationship between Vhat and LocalVhat. Is the
>> LocalVhat a copy of the Vhat plus the Ghost values. I think the
>> LocalVhat will consume more memeory than the Vhat, am i right?
>
>Logically, you should think of them as separate vectors. The global
>form contains only the global entries (non-overlapping partition) and
>the local form also contains the ghosted entries. If you want to
>operate strictly on the global entries, you can access the global form
>directly.
>
>Implementation-wise, the vectors share memory for the global part. This
>means that if you build a Krylov space with VecGhost, you have allocated
>storage for the ghosted entries for every Krylov vector, even though the
>algorithm will never use them. VecGhost is premature "optimization"
>("pessimization") in many cases, so consider just using a local work
>vector and performing a scatter from global to local. It's probably
>much cheaper than you think.
>
>> 2. can i direct call VecGetArrary to the Vhat if i do not operate on the ghost value.
>>
>>
>>
>> Vec Vhat;
>> Vec LocalVhat;
>> double* VhatVec;
>>
>> VecCreateGhost(PETSC_COMM_WORLD,aMesh->Nx*aMesh->Ny/Commsize,PETSC_DECIDE,aMesh->nghosts,&aMesh->ghosts[0],&Vhat);
>> VecGhostGetLocalForm(Vhat,&LocalVhat);
>
>Update, _then_ get the local form. Remember to restore the local form
>when you are done with it.
>
>> VecGhostUpdateBegin(Vhat,INSERT_VALUES,SCATTER_FORWARD);
>> VecGhostUpdateEnd(Vhat,INSERT_VALUES,SCATTER_FORWARD);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130815/271e5726/attachment.html>
More information about the petsc-users
mailing list