avoid communicating edge and corner boundary data? #2499
Answered
by
asalmgren
BenWibking
asked this question in
Q&A
Replies: 1 comment 4 replies
-
Hey Ben,
There's a "cross" argument for FIllBoundary that defaults to false -- I
think this would work for your question.
If you set "cross" to true then you are saying that you are effectively
only doing "cross stencils", i.e. those which are only 1d in each
direction, i.e. no cross terms, so FillBoundary won't fill those extra
ghost cells.
From AMReX_FabArray.H:
/**
* \brief Copy on intersection within a FabArray. Data is copied from
* valid regions to intersecting regions of definition. The
* purpose is to fill in the boundary regions of each FAB in
* the FabArray. If cross=true, corner cells are not filled.
* If the length of periodic is provided, periodic boundaries are
* also filled. Note that FabArray itself does not contains
* any periodicity information.
* FillBoundary expects that its cell-centered version of its BoxArray
* is non-overlapping.
*/
void FillBoundary (bool cross = false);
void FillBoundary (const Periodicity& period, bool cross = false);
void FillBoundary (const IntVect& nghost, const Periodicity& period,
bool cross = false);
//! Same as FillBoundary(), but only copies ncomp components starting
at scomp.
void FillBoundary (int scomp, int ncomp, bool cross = false);
void FillBoundary (int scomp, int ncomp, const Periodicity& period,
bool cross = false);
void FillBoundary (int scomp, int ncomp, const IntVect& nghost, const
Periodicity& period, bool cross = false);
…On Wed, Nov 24, 2021 at 10:04 PM Ben Wibking ***@***.***> wrote:
Hi all,
My Quokka code uses a stencil that is a tensor product of 1-d stencils, so
in principle, only the boxes sharing faces need to exchange boundary data.
For uniform boxes of grid_size=128 and 4 ghost cells, this leads to most
MPI messages (~77 percent) communicating edge and corner data, which is
unused by my code. Is there an straightforward way to modify AMReX to avoid
the edge/corner boundary communication during the level advance?
Thanks,
Ben
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#2499>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACRE6YXXWZSBVUEG6HKXJO3UNXGV3ANCNFSM5IXWGESQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
--
Ann Almgren
Senior Scientist; CCSE Group Lead
Pronouns: she/her/hers
|
Beta Was this translation helpful? Give feedback.
4 replies
Answer selected by
BenWibking
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi all,
My Quokka code uses a stencil that is a tensor product of 1-d stencils, so in principle, only the boxes sharing faces need to exchange boundary data. For uniform boxes of grid_size=128 and 4 ghost cells, this leads to most MPI messages (~77 percent) communicating edge and corner data (only ~6 per cent of the boundary data), which is unused by my code. Is there an straightforward way to modify AMReX to avoid the edge/corner boundary communication during the level advance?
Thanks,
Ben
Beta Was this translation helpful? Give feedback.
All reactions