-
-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(1) Change tag type (int -> uint) and (2) creation of the overlap #123
Conversation
… Adding tetra works but then fail in the analysis for now
…- not finished yet
… LS data + improve overall overlap creation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coprigent : few unformatted notes that follows the discussion we had this morning. I let you read the code and take over from Laetitia to end this work
…ck if overlap if deleted correctly
…titia feature/overlap branch the time the associated PR is merged in mmg
…he overlap as the flag is used before if the test case has a metric + add ci test overlap with metric to ensure it works
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #123 +/- ##
===========================================
+ Coverage 63.32% 63.76% +0.44%
===========================================
Files 46 47 +1
Lines 18952 19194 +242
Branches 3540 3573 +33
===========================================
+ Hits 12001 12240 +239
- Misses 6027 6030 +3
Partials 924 924 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks,
The works seems great but it is not easy to understand for an external reader. I think we can:
-
Add a 2D relevant picture of the overlap to illustrate the PR an describes:
- which points os MG_OVERLAP, which is not for each overlap;
- what the algo does on each type of point (interface points are not transferred, overlap points belonging to only 1 overlap are simply transferred, special (which?) treatment of points belonging to more than 1 overlap)
-
For comments inside the code: maybe an overview of the algo and loops before each loop will help to understand. For example:
- point beloning to 2 or more communicators are transfered by the first communacator that needs to send it. Then, we perform a double loop to match the PARBDY points that have been communicated as overlap and the list of point belonging to other pairs of communicators (get point index from the list of transferred PARBDY points and search this point index in the list of indices of points of external communicators).... (you know better than me ;-) !
/* Search into dataPBDY_AlreadyAdded to seen if it exists already */ | ||
for (r=0; r < ndataPBDY_added+1; r++) { | ||
if ( (color_out == dataPBDY_AlreadyAdded[5*r+1]) && (color_ter == dataPBDY_AlreadyAdded[5*r])) { | ||
if ( k == dataPBDY_AlreadyAdded[5*r+2] ) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess that it is mandatory that k==dataPBDY_AlreadyAdded[5*r+2]
here no ?
If yes, use an assert, not a if. If not: what is the case where it is not ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, this is not mandatory here because (color_out
-color_ter
) might have 'given' more than one node to color_in
.
dataPBDY_AlreadyAdded
is constructed such that dataPBDY_AlreadyAdded = [Pout,Pter,rPter,ipnew,ipout...]
dataPBDY_ToRecv
is constructed such that [Pter,k,ipout]
Assuming we are working on Pin
, the good couple (Pout, Pter)
(if ( (color_out == dataPBDY_AlreadyAdded[5*r+1]) && (color_ter == dataPBDY_AlreadyAdded[5*r]))
) has been identified, but potentially this couple can have given several nodes to Pin
(not only one) such that the location in the internal communicator (k
in dataPBDY_ToRecv
and rPter
in dataPBDY_AlreadyAdded
) is not necessary the same.
Thanks ! |
int
, and in now unsigned integeruint
. This was needed to be able to add the extra tagMG_OVERLAP
PMMG_Overlap
in filesrc/libparmmgtypes.h
mpi_pmmg.h
: addMPI_OVERLAP_TAG
for tag used to transfer data with mpioverlap_pmmg.c
: functions to createPMMG_create_overlap
and deletePMMG_delete_overlap
the overlap between partitions are added.PMMG_snpval_ls
in the functionPMMG_ls
in filels_pmmg.c
cmake/testing/pmmg_tests.cmake
libparmmg.c
, functionPMMG_Compute_verticesGloNum
: skip points taggedMG_OVERLAP
Following pictures illustrate the overlap on a 2D case: