[petsc-users] partial stencil in DMDA?
Fischer, Greg A.
fischega at westinghouse.com
Fri Feb 21 13:12:10 CST 2014
Barry,
Thanks! I have another question. The user manual says:
PETSc currently provides no container for multiple arrays sharing the same distributed array communication; note, however, that the dof parameter handles many cases of interest.
In my application, each space location will have on the order of hundreds of values associated with it (which I believe translates to dof=O(100) - I don't see the "degrees of freedom" explicitly defined anywhere). However, when communicating ghost values, not all of those degrees of freedom should be exchanged at once. I need to be able to exchange one at a time.
It sounds like what I may want to do is use VecCreateGhost(), which would allow me to define exactly where the ghost points are, and then duplicate that vector using VecDuplicateVecs() for each DOF. I can then scatter the vectors individually as the need arises. Does that sound reasonable?
Greg
>-----Original Message-----
>From: Barry Smith [mailto:bsmith at mcs.anl.gov]
>Sent: Friday, February 21, 2014 12:21 PM
>To: Fischer, Greg A.
>Cc: petsc-users at mcs.anl.gov
>Subject: Re: [petsc-users] partial stencil in DMDA?
>
>
>On Feb 21, 2014, at 11:02 AM, Fischer, Greg A. <fischega at westinghouse.com<mailto:fischega at westinghouse.com>>
>wrote:
>
>> Hello,
>>
>> I'm interested in using PETSc to manage distributed arrays. Based on my
>reading about the DMDA objects, I see that ghost points can be
>communicated in box-type stencils or star-type stencils.
>>
>> For my application, assume that I have a 2D DMDA object with star-type
>stencils. For a typical local calculation, I only need to access ghost values
>from two of the four directions at a time. For example, I'd like access to ghost
>values in the South and East directions, but not in the North or West
>directions. Communicating North and West data would seem to be wasting
>bandwidth. Is there any way to accomplish this?
>
> Greg,
>
> There is not anything built in. Here is what I suggest:
>
>1) write your application code not worrying about the fact that the
>DMGlobalToLocalBegin/End() is moving values you don't need.
>
>2) when your code is running correctly for your problem and giving useful
>results if the communication times are impacting how long it takes to run you
>can provide a custom communication pattern. It would involve little
>additional coding essentially taking DMSetUp_DA_2D() which creates the list
>of ghost points and removing the unneeded ghost points. But it would be
>premature to do this optimization until you have a full working application
>code.
>
> Barry
>
>>
>> Thanks,
>> Greg
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140221/6495e102/attachment.html>
More information about the petsc-users
mailing list