diff --git a/configure.ac b/configure.ac index 4c547d3466dac2afc45087396977af46c9604551..dd9ca7ce23ef3a11855031a5068d334d81f7ed35 100644 --- a/configure.ac +++ b/configure.ac @@ -1504,7 +1504,6 @@ with_subgrid_pressure_floor=none with_subgrid_stars=none with_subgrid_star_formation=none with_subgrid_feedback=none -with_subgrid_task_order=default with_subgrid_sink=none case "$with_subgrid" in @@ -1521,8 +1520,7 @@ case "$with_subgrid" in with_subgrid_star_formation=GEAR with_subgrid_feedback=GEAR with_subgrid_black_holes=none - with_subgrid_task_order=GEAR - with_subgrid_sink=none + with_subgrid_sink=none enable_fof=no ;; QLA) @@ -1534,8 +1532,7 @@ case "$with_subgrid" in with_subgrid_star_formation=QLA with_subgrid_feedback=none with_subgrid_black_holes=none - with_subgrid_task_order=default - with_subgrid_sink=none + with_subgrid_sink=none enable_fof=no ;; EAGLE) @@ -1547,8 +1544,7 @@ case "$with_subgrid" in with_subgrid_star_formation=EAGLE with_subgrid_feedback=EAGLE with_subgrid_black_holes=EAGLE - with_subgrid_task_order=EAGLE - with_subgrid_sink=none + with_subgrid_sink=none enable_fof=yes ;; EAGLE-XL) @@ -1560,7 +1556,6 @@ case "$with_subgrid" in with_subgrid_star_formation=EAGLE with_subgrid_feedback=EAGLE with_subgrid_black_holes=EAGLE - with_subgrid_task_order=EAGLE with_subgrid_sink=none enable_fof=yes ;; @@ -2096,38 +2091,6 @@ case "$with_sink" in ;; esac -# Task order -AC_ARG_WITH([task-order], - [AS_HELP_STRING([--with-task-order=<model>], - [Task order to use @<:@default, EAGLE, GEAR default: default@:>@] - )], - [with_task_order="$withval"], - [with_task_order="default"] -) - -if test "$with_subgrid" != "none"; then - if test "$with_task_order" != "default"; then - AC_MSG_ERROR([Cannot provide with-subgrid and with-task-order together]) - else - with_task_order="$with_subgrid_task_order" - fi -fi - -case "$with_task_order" in - EAGLE) - AC_DEFINE([TASK_ORDER_EAGLE], [1], [EAGLE task order]) - ;; - default) - AC_DEFINE([TASK_ORDER_DEFAULT], [1], [Default (i.e. EAGLE/OWLS) task order]) - ;; - GEAR) - AC_DEFINE([TASK_ORDER_GEAR], [1], [GEAR task order]) - ;; - *) - AC_MSG_ERROR([Unknown task ordering: $with_task_order]) - ;; -esac - # External potential AC_ARG_WITH([ext-potential], [AS_HELP_STRING([--with-ext-potential=<pot>], @@ -2397,7 +2360,6 @@ AC_MSG_RESULT([ Star feedback model : $with_feedback Sink particle model : $with_sink Black holes model : $with_black_holes - Task dependencies : $with_task_order Atomic operations in tasks : $enable_atomics_within_tasks Individual timers : $enable_timers diff --git a/src/Makefile.am b/src/Makefile.am index 316d4b8c9651e7a81f4d1fc7d84abf4d24c8af7e..b813c42bd08e67033975b44080f5849715cbdf45 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -58,7 +58,7 @@ include_HEADERS = space.h runner.h queue.h task.h lock.h cell.h part.h const.h \ pressure_floor.h pressure_floor_struct.h pressure_floor_iact.h \ velociraptor_struct.h velociraptor_io.h random.h memuse.h mpiuse.h memuse_rnodes.h \ black_holes.h black_holes_io.h black_holes_properties.h black_holes_struct.h \ - feedback.h feedback_struct.h feedback_properties.h task_order.h \ + feedback.h feedback_struct.h feedback_properties.h \ space_unique_id.h line_of_sight.h io_compression.h # source files for EAGLE cooling @@ -293,7 +293,6 @@ nobase_noinst_HEADERS = align.h approx_math.h atomic.h barrier.h cycle.h error.h pressure_floor/GEAR/pressure_floor.h pressure_floor/none/pressure_floor.h \ pressure_floor/GEAR/pressure_floor_iact.h pressure_floor/none/pressure_floor_iact.h \ pressure_floor/GEAR/pressure_floor_struct.h pressure_floor/none/pressure_floor_struct.h \ - task_order/GEAR/task_order.h task_order/EAGLE/task_order.h task_order/default/task_order.h \ sink/Default/sink.h sink/Default/sink_io.h sink/Default/sink_part.h \ sink.h sink_io.h diff --git a/src/cell.c b/src/cell.c index 2d4b863c326f9aa29cb2c92c7d092aac1214f9a5..f115d4812e5aed8426a72f6d1918b7c0ed307d32 100644 --- a/src/cell.c +++ b/src/cell.c @@ -68,7 +68,6 @@ #include "space_getsid.h" #include "star_formation.h" #include "stars.h" -#include "task_order.h" #include "timers.h" #include "tools.h" #include "tracers.h" @@ -2716,7 +2715,7 @@ void cell_activate_star_formation_tasks(struct cell *c, struct scheduler *s, scheduler_activate(s, c->hydro.star_formation); /* Activate the star resort tasks at whatever level they are */ - if (task_order_star_formation_before_feedback && with_feedback) { + if (with_feedback) { cell_activate_star_resort_tasks(c, s); } } @@ -3810,16 +3809,12 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) { /* Propagating new star counts? */ if (with_star_formation && with_feedback) { if (ci_active && ci->hydro.count > 0) { - if (task_order_star_formation_before_feedback) { - scheduler_activate_recv(s, ci->mpi.recv, task_subtype_sf_counts); - } + scheduler_activate_recv(s, ci->mpi.recv, task_subtype_sf_counts); scheduler_activate_recv(s, ci->mpi.recv, task_subtype_tend_spart); } if (cj_active && cj->hydro.count > 0) { - if (task_order_star_formation_before_feedback) { - scheduler_activate_send(s, cj->mpi.send, task_subtype_sf_counts, - ci_nodeID); - } + scheduler_activate_send(s, cj->mpi.send, task_subtype_sf_counts, + ci_nodeID); scheduler_activate_send(s, cj->mpi.send, task_subtype_tend_spart, ci_nodeID); } @@ -3883,16 +3878,12 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) { /* Propagating new star counts? */ if (with_star_formation && with_feedback) { if (cj_active && cj->hydro.count > 0) { - if (task_order_star_formation_before_feedback) { - scheduler_activate_recv(s, cj->mpi.recv, task_subtype_sf_counts); - } + scheduler_activate_recv(s, cj->mpi.recv, task_subtype_sf_counts); scheduler_activate_recv(s, cj->mpi.recv, task_subtype_tend_spart); } if (ci_active && ci->hydro.count > 0) { - if (task_order_star_formation_before_feedback) { - scheduler_activate_send(s, ci->mpi.send, task_subtype_sf_counts, - cj_nodeID); - } + scheduler_activate_send(s, ci->mpi.send, task_subtype_sf_counts, + cj_nodeID); scheduler_activate_send(s, ci->mpi.send, task_subtype_tend_spart, cj_nodeID); } diff --git a/src/engine_maketasks.c b/src/engine_maketasks.c index c2fa9eef4cbace20e5b56b4477a1d37cc4ee81f0..b38cfca652f7685d943a772f334ed4e5636fff7a 100644 --- a/src/engine_maketasks.c +++ b/src/engine_maketasks.c @@ -50,7 +50,6 @@ #include "debug.h" #include "error.h" #include "proxy.h" -#include "task_order.h" #include "timers.h" extern int engine_max_parts_per_ghost; @@ -271,8 +270,7 @@ void engine_addtasks_send_stars(struct engine *e, struct cell *ci, /* Early abort (are we below the level where tasks are)? */ if (!cell_get_flag(ci, cell_flag_has_tasks)) return; - if (task_order_star_formation_before_feedback && t_sf_counts == NULL && - with_star_formation && ci->hydro.count > 0) { + if (t_sf_counts == NULL && with_star_formation && ci->hydro.count > 0) { #ifdef SWIFT_DEBUG_CHECKS if (ci->depth != 0) error( @@ -320,8 +318,7 @@ void engine_addtasks_send_stars(struct engine *e, struct cell *ci, engine_addlink(e, &ci->mpi.send, t_feedback); engine_addlink(e, &ci->mpi.send, t_ti); - if (task_order_star_formation_before_feedback && with_star_formation && - ci->hydro.count > 0) { + if (with_star_formation && ci->hydro.count > 0) { engine_addlink(e, &ci->mpi.send, t_sf_counts); } } @@ -585,8 +582,7 @@ void engine_addtasks_recv_stars(struct engine *e, struct cell *c, /* Early abort (are we below the level where tasks are)? */ if (!cell_get_flag(c, cell_flag_has_tasks)) return; - if (task_order_star_formation_before_feedback && t_sf_counts == NULL && - with_star_formation && c->hydro.count > 0) { + if (t_sf_counts == NULL && with_star_formation && c->hydro.count > 0) { #ifdef SWIFT_DEBUG_CHECKS if (c->depth != 0) error( @@ -613,8 +609,7 @@ void engine_addtasks_recv_stars(struct engine *e, struct cell *c, t_ti = scheduler_addtask(s, task_type_recv, task_subtype_tend_spart, c->mpi.tag, 0, c, NULL); - if (task_order_star_formation_before_feedback && with_star_formation && - c->hydro.count > 0) { + if (with_star_formation && c->hydro.count > 0) { /* Receive the stars only once the counts have been received */ scheduler_addunlock(s, t_sf_counts, t_feedback); @@ -624,8 +619,7 @@ void engine_addtasks_recv_stars(struct engine *e, struct cell *c, if (t_feedback != NULL) { engine_addlink(e, &c->mpi.recv, t_feedback); engine_addlink(e, &c->mpi.recv, t_ti); - if (task_order_star_formation_before_feedback && with_star_formation && - c->hydro.count > 0) { + if (with_star_formation && c->hydro.count > 0) { engine_addlink(e, &c->mpi.recv, t_sf_counts); } @@ -1113,8 +1107,7 @@ void engine_make_hierarchical_tasks_hydro(struct engine *e, struct cell *c, /* Are we are the level where we create the stars' resort tasks? * If the tree is shallow, we need to do this at the super-level if the * super-level is above the level we want */ - if (task_order_star_formation_before_feedback && (c->nodeID == e->nodeID) && - (star_resort_cell == NULL) && + if ((c->nodeID == e->nodeID) && (star_resort_cell == NULL) && (c->depth == engine_star_resort_task_depth || c->hydro.super == c)) { if (with_feedback && with_star_formation && c->hydro.count > 0) { @@ -1233,7 +1226,8 @@ void engine_make_hierarchical_tasks_hydro(struct engine *e, struct cell *c, scheduler_addunlock(s, c->stars.stars_out, c->super->timestep); if (with_feedback && with_star_formation && c->hydro.count > 0) { - task_order_addunlock_star_formation_feedback(s, c, star_resort_cell); + scheduler_addunlock(s, star_resort_cell->hydro.stars_resort, + c->stars.stars_in); } } diff --git a/src/engine_marktasks.c b/src/engine_marktasks.c index 21e85010e324b90865301c1ecb96a6958c555427..3fb51038b6296d39c70ab740c69b88eca50b5659 100644 --- a/src/engine_marktasks.c +++ b/src/engine_marktasks.c @@ -51,7 +51,6 @@ #include "debug.h" #include "error.h" #include "proxy.h" -#include "task_order.h" #include "timers.h" /** @@ -538,17 +537,12 @@ void engine_marktasks_mapper(void *map_data, int num_elements, /* Propagating new star counts? */ if (with_star_formation && with_feedback) { if (ci_active_hydro && ci->hydro.count > 0) { - if (task_order_star_formation_before_feedback) { - scheduler_activate_recv(s, ci->mpi.recv, - task_subtype_sf_counts); - } + scheduler_activate_recv(s, ci->mpi.recv, task_subtype_sf_counts); scheduler_activate_recv(s, ci->mpi.recv, task_subtype_tend_spart); } if (cj_active_hydro && cj->hydro.count > 0) { - if (task_order_star_formation_before_feedback) { - scheduler_activate_send(s, cj->mpi.send, task_subtype_sf_counts, - ci_nodeID); - } + scheduler_activate_send(s, cj->mpi.send, task_subtype_sf_counts, + ci_nodeID); scheduler_activate_send(s, cj->mpi.send, task_subtype_tend_spart, ci_nodeID); } @@ -615,17 +609,12 @@ void engine_marktasks_mapper(void *map_data, int num_elements, /* Propagating new star counts? */ if (with_star_formation && with_feedback) { if (cj_active_hydro && cj->hydro.count > 0) { - if (task_order_star_formation_before_feedback) { - scheduler_activate_recv(s, cj->mpi.recv, - task_subtype_sf_counts); - } + scheduler_activate_recv(s, cj->mpi.recv, task_subtype_sf_counts); scheduler_activate_recv(s, cj->mpi.recv, task_subtype_tend_spart); } if (ci_active_hydro && ci->hydro.count > 0) { - if (task_order_star_formation_before_feedback) { - scheduler_activate_send(s, ci->mpi.send, task_subtype_sf_counts, - cj_nodeID); - } + scheduler_activate_send(s, ci->mpi.send, task_subtype_sf_counts, + cj_nodeID); scheduler_activate_send(s, ci->mpi.send, task_subtype_tend_spart, cj_nodeID); } diff --git a/src/runner_others.c b/src/runner_others.c index 28260624642134654ff1c9da3ebbbfb7c9c17a15..b42a931a8f812ea7fb584de6ac0fca9c2e89c50b 100644 --- a/src/runner_others.c +++ b/src/runner_others.c @@ -55,7 +55,6 @@ #include "star_formation.h" #include "star_formation_logger.h" #include "stars.h" -#include "task_order.h" #include "timers.h" #include "timestep_limiter.h" #include "tracers.h" diff --git a/src/runner_sort.c b/src/runner_sort.c index b889ae337f6e1eb8f3230cad7827b567aadd1954..76a4922404f3d3a86198391ea4f91533a5f60779 100644 --- a/src/runner_sort.c +++ b/src/runner_sort.c @@ -29,7 +29,6 @@ #include "active.h" #include "cell.h" #include "engine.h" -#include "task_order.h" #include "timers.h" /** @@ -46,8 +45,6 @@ void runner_do_stars_resort(struct runner *r, struct cell *c, const int timer) { #ifdef SWIFT_DEBUG_CHECKS if (c->nodeID != r->e->nodeID) error("Task must be run locally!"); - if (!task_order_star_formation_before_feedback) - error("Resorting when not needed"); #endif TIMER_TIC; diff --git a/src/task_order.h b/src/task_order.h deleted file mode 100644 index d5d0165732d6ed2f9442b0160048a0383271edfc..0000000000000000000000000000000000000000 --- a/src/task_order.h +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * This file is part of SWIFT. - * Copyright (c) 2019 Loic Hausammann (loic.hausammann@epfl.ch) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - ******************************************************************************/ -#ifndef SWIFT_TASK_ORDER_H -#define SWIFT_TASK_ORDER_H - -#include "../config.h" - -/* Local includes */ -#include "scheduler.h" - -#ifdef TASK_ORDER_DEFAULT -#include "task_order/default/task_order.h" -#elif TASK_ORDER_GEAR -#include "task_order/GEAR/task_order.h" -#elif TASK_ORDER_EAGLE -#include "task_order/EAGLE/task_order.h" -#else -#error undefined task order -#endif - -#endif /* SWIFT_TASK_ORDER_H */ diff --git a/src/task_order/EAGLE/task_order.h b/src/task_order/EAGLE/task_order.h deleted file mode 100644 index e1910cedc402779d42d8a4cead9261b7fad88980..0000000000000000000000000000000000000000 --- a/src/task_order/EAGLE/task_order.h +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * This file is part of SWIFT. - * Copyright (c) 2019 Loic Hausammann (loic.hausammann@epfl.ch) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - ******************************************************************************/ -#ifndef SWIFT_TASK_ORDER_EAGLE_H -#define SWIFT_TASK_ORDER_EAGLE_H - -/** - * Is the star-formation task running before the feedback task? - */ -#define task_order_star_formation_before_feedback 1 - -/** - * @brief Place the star formation cell at the right place in the dependency - * graph. - * - * In EAGLE, star formation takes place before the feedback tasks (that are - * launched after the stars_in task). - * - * @param s The #scheduler. - * @param c The #cell on which to act. - * @param star_resort_cell The #cell where the stars re-sorting task is in this - * hierarchy. - */ -INLINE static void task_order_addunlock_star_formation_feedback( - struct scheduler *s, struct cell *c, struct cell *star_resort_cell) { - - scheduler_addunlock(s, star_resort_cell->hydro.stars_resort, - c->stars.stars_in); -} - -#endif /* SWIFT_TASK_ORDER_EAGLE_H */ diff --git a/src/task_order/GEAR/task_order.h b/src/task_order/GEAR/task_order.h deleted file mode 100644 index d8befa941e5adae0eb60397fb742376a27dbdda5..0000000000000000000000000000000000000000 --- a/src/task_order/GEAR/task_order.h +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * This file is part of SWIFT. - * Copyright (c) 2019 Loic Hausammann (loic.hausammann@epfl.ch) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - ******************************************************************************/ -#ifndef SWIFT_TASK_ORDER_GEAR_H -#define SWIFT_TASK_ORDER_GEAR_H - -/** - * Is the star-formation task running before the feedback task? - */ -#define task_order_star_formation_before_feedback 0 - -/** - * @brief Place the star formation cell at the right place in the dependency - * graph. - * - * In GEAR, star formation takes place after the feedback tasks (that are - * finishing with the stars_out task). - * - * @param s The #scheduler. - * @param c The #cell on which to act. - * @param star_resort_cell The #cell where the stars re-sorting task is in this - * hierarchy. - */ -INLINE static void task_order_addunlock_star_formation_feedback( - struct scheduler *s, struct cell *c, struct cell *star_resort_cell) { - - scheduler_addunlock(s, c->stars.stars_out, c->top->hydro.star_formation); -} - -#endif /* SWIFT_TASK_ORDER_GEAR_H */ diff --git a/src/task_order/default/task_order.h b/src/task_order/default/task_order.h deleted file mode 100644 index 7731b111bbd15ed54056f13eb53d51bf883b9962..0000000000000000000000000000000000000000 --- a/src/task_order/default/task_order.h +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * This file is part of SWIFT. - * Copyright (c) 2019 Loic Hausammann (loic.hausammann@epfl.ch) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - ******************************************************************************/ -#ifndef SWIFT_TASK_ORDER_DEFAULT_H -#define SWIFT_TASK_ORDER_DEFAULT_H - -/** - * @file task_order/default/task_order.h - * @brief Defines the order of the subgrid tasks when no subgrid model has - * been specified. Defaults to the EAGLE model. - */ - -/** - * Is the star-formation task running before the feedback task? - */ -#define task_order_star_formation_before_feedback 1 - -/** - * @brief Place the star formation cell at the right place in the dependency - * graph. - * - * The default model follows EAGLE. - * - * In EAGLE, star formation takes place before the feedback tasks (that are - * launched after the stars_in task). - * - * @param s The #scheduler. - * @param c The #cell on which to act. - * @param star_resort_cell The #cell where the stars re-sorting task is in this - * hierarchy. - */ -INLINE static void task_order_addunlock_star_formation_feedback( - struct scheduler *s, struct cell *c, struct cell *star_resort_cell) { - - scheduler_addunlock(s, star_resort_cell->hydro.stars_resort, - c->stars.stars_in); -} - -#endif /* SWIFT_TASK_ORDER_DEFAULT_H */