Skip to content
Snippets Groups Projects
Commit 6b291256 authored by Matthieu Schaller's avatar Matthieu Schaller
Browse files

Do not clear the sort flag when receiving parts after the ghost. We can re-use...

Do not clear the sort flag when receiving parts after the ghost. We can re-use the sort from the density.
parent 0eaeff6e
No related branches found
No related tags found
1 merge request!335Do not clear the sort flag when receiving parts after the ghost.
...@@ -1447,9 +1447,10 @@ void runner_do_end_force(struct runner *r, struct cell *c, int timer) { ...@@ -1447,9 +1447,10 @@ void runner_do_end_force(struct runner *r, struct cell *c, int timer) {
* *
* @param r The runner thread. * @param r The runner thread.
* @param c The cell. * @param c The cell.
* @param clear_sorts Should we clear the sort flag and hence trigger a sort ?
* @param timer Are we timing this ? * @param timer Are we timing this ?
*/ */
void runner_do_recv_part(struct runner *r, struct cell *c, int timer) { void runner_do_recv_part(struct runner *r, struct cell *c, int clear_sorts, int timer) {
#ifdef WITH_MPI #ifdef WITH_MPI
...@@ -1466,7 +1467,8 @@ void runner_do_recv_part(struct runner *r, struct cell *c, int timer) { ...@@ -1466,7 +1467,8 @@ void runner_do_recv_part(struct runner *r, struct cell *c, int timer) {
float h_max = 0.f; float h_max = 0.f;
/* Clear this cell's sorted mask. */ /* Clear this cell's sorted mask. */
c->sorted = 0; if(clear_sorts)
c->sorted = 0;
/* If this cell is a leaf, collect the particle data. */ /* If this cell is a leaf, collect the particle data. */
if (!c->split) { if (!c->split) {
...@@ -1493,7 +1495,7 @@ void runner_do_recv_part(struct runner *r, struct cell *c, int timer) { ...@@ -1493,7 +1495,7 @@ void runner_do_recv_part(struct runner *r, struct cell *c, int timer) {
else { else {
for (int k = 0; k < 8; k++) { for (int k = 0; k < 8; k++) {
if (c->progeny[k] != NULL) { if (c->progeny[k] != NULL) {
runner_do_recv_part(r, c->progeny[k], 0); runner_do_recv_part(r, c->progeny[k], clear_sorts, 0);
ti_end_min = min(ti_end_min, c->progeny[k]->ti_end_min); ti_end_min = min(ti_end_min, c->progeny[k]->ti_end_min);
ti_end_max = max(ti_end_max, c->progeny[k]->ti_end_max); ti_end_max = max(ti_end_max, c->progeny[k]->ti_end_max);
h_max = max(h_max, c->progeny[k]->h_max); h_max = max(h_max, c->progeny[k]->h_max);
...@@ -1872,9 +1874,10 @@ void *runner_main(void *data) { ...@@ -1872,9 +1874,10 @@ void *runner_main(void *data) {
if (t->subtype == task_subtype_tend) { if (t->subtype == task_subtype_tend) {
cell_unpack_ti_ends(ci, t->buff); cell_unpack_ti_ends(ci, t->buff);
free(t->buff); free(t->buff);
} else if (t->subtype == task_subtype_xv || } else if (t->subtype == task_subtype_xv) {
t->subtype == task_subtype_rho) { runner_do_recv_part(r, ci, 1, 1);
runner_do_recv_part(r, ci, 1); } else if (t->subtype == task_subtype_rho) {
runner_do_recv_part(r, ci, 0, 1);
} else if (t->subtype == task_subtype_gpart) { } else if (t->subtype == task_subtype_gpart) {
runner_do_recv_gpart(r, ci, 1); runner_do_recv_gpart(r, ci, 1);
} else if (t->subtype == task_subtype_spart) { } else if (t->subtype == task_subtype_spart) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment