[petsc-users] some problem with the VecCreateGhost.

Jed Brown jedbrown at mcs.anl.gov
Thu Aug 15 06:13:52 CDT 2013


丁老师 <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 --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130815/249f9fce/attachment.pgp>


More information about the petsc-users mailing list