Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
SWIFT
SWIFTsim
Commits
1adbabf9
Commit
1adbabf9
authored
May 15, 2016
by
Matthieu Schaller
Browse files
hierarchy --> ghost
parent
878e4771
Changes
8
Hide whitespace changes
Inline
Side-by-side
src/cell.h
View file @
1adbabf9
...
...
@@ -117,8 +117,8 @@ struct cell {
struct
link
*
density
,
*
force
,
*
grav
;
int
nr_density
,
nr_force
,
nr_grav
;
/* The hierarch
y task to link density to interaction
s. */
struct
task
*
hierarchy
,
*
init
,
*
drift
,
*
kick
;
/* The hierarch
ical task
s. */
struct
task
*
ghost
,
*
init
,
*
drift
,
*
kick
;
/* Task receiving data. */
struct
task
*
recv_xv
,
*
recv_rho
;
...
...
src/engine.c
View file @
1adbabf9
...
...
@@ -95,10 +95,9 @@ struct link *engine_addlink(struct engine *e, struct link *l, struct task *t) {
}
/**
* @brief Generate the hierarchical tasks for a hierarchy of cells - all the O(Npart) tasks.
* @brief Generate the hierarchical tasks for a hierarchy of cells - i.e. all
* the O(Npart) tasks.
*
* Previously this was called the ghost task but has since been renamed to reflect
* it's new more general usage.
* Tasks are only created here. The dependencies will be added later on.
*
* @param e The #engine.
...
...
@@ -107,7 +106,7 @@ struct link *engine_addlink(struct engine *e, struct link *l, struct task *t) {
*/
void
engine_make_hierarchical_tasks
(
struct
engine
*
e
,
struct
cell
*
c
,
struct
cell
*
super
)
{
struct
cell
*
super
)
{
struct
scheduler
*
s
=
&
e
->
sched
;
const
int
is_with_external_gravity
=
...
...
@@ -137,8 +136,8 @@ void engine_make_hierarchical_tasks(struct engine *e, struct cell *c,
if
(
c
->
count
>
0
)
{
/* Generate the
hierarchy task i.e.
ghost task. */
c
->
hierarchy
=
scheduler_addtask
(
s
,
task_type_
hierarchy
,
task_subtype_none
,
0
,
/* Generate the ghost task. */
c
->
ghost
=
scheduler_addtask
(
s
,
task_type_
ghost
,
task_subtype_none
,
0
,
0
,
c
,
NULL
,
0
);
}
...
...
@@ -617,14 +616,14 @@ void engine_addtasks_send(struct engine *e, struct cell *ci, struct cell *cj) {
struct
task
*
t_rho
=
scheduler_addtask
(
s
,
task_type_send
,
task_subtype_none
,
2
*
ci
->
tag
+
1
,
0
,
ci
,
cj
,
0
);
/* The send_rho task depends on the cell's
hierarchy
task. */
scheduler_addunlock
(
s
,
ci
->
super
->
hierarchy
,
t_rho
);
/* The send_rho task depends on the cell's
ghost
task. */
scheduler_addunlock
(
s
,
ci
->
super
->
ghost
,
t_rho
);
/* The send_rho task should unlock the super-cell's kick task. */
scheduler_addunlock
(
s
,
t_rho
,
ci
->
super
->
kick
);
/* The send_xv task should unlock the super-cell's
hierarchy
task. */
scheduler_addunlock
(
s
,
t_xv
,
ci
->
super
->
hierarchy
);
/* The send_xv task should unlock the super-cell's
ghost
task. */
scheduler_addunlock
(
s
,
t_xv
,
ci
->
super
->
ghost
);
}
...
...
@@ -1222,10 +1221,10 @@ static inline void engine_make_hydro_loops_dependencies(struct scheduler *sched,
struct
task
*
force
,
struct
cell
*
c
)
{
/* init --> density loop -->
hierarchy (
ghost
)
--> force loop --> kick */
/* init --> density loop --> ghost --> force loop --> kick */
scheduler_addunlock
(
sched
,
c
->
super
->
init
,
density
);
scheduler_addunlock
(
sched
,
density
,
c
->
super
->
hierarchy
);
scheduler_addunlock
(
sched
,
c
->
super
->
hierarchy
,
force
);
scheduler_addunlock
(
sched
,
density
,
c
->
super
->
ghost
);
scheduler_addunlock
(
sched
,
c
->
super
->
ghost
,
force
);
scheduler_addunlock
(
sched
,
force
,
c
->
super
->
kick
);
}
...
...
@@ -1460,7 +1459,8 @@ void engine_maketasks(struct engine *e) {
engine_make_hierarchical_tasks
(
e
,
&
cells
[
k
],
NULL
);
/* Run through the tasks and make force tasks for each density task.
Each force task depends on the cell hierarchy tasks and unlocks the kick task
Each force task depends on the cell hierarchy tasks and unlocks the kick
task
of its super-cell. */
engine_make_extra_hydroloop_tasks
(
e
);
...
...
@@ -1571,7 +1571,7 @@ int engine_marktasks(struct engine *e) {
}
/* Single-cell task? */
else
if
(
t
->
type
==
task_type_self
||
t
->
type
==
task_type_
hierarchy
||
else
if
(
t
->
type
==
task_type_self
||
t
->
type
==
task_type_
ghost
||
(
t
->
type
==
task_type_sub
&&
t
->
cj
==
NULL
))
{
/* Set this task's skip. */
...
...
@@ -1935,7 +1935,7 @@ void engine_init_particles(struct engine *e) {
mask
|=
1
<<
task_type_self
;
mask
|=
1
<<
task_type_pair
;
mask
|=
1
<<
task_type_sub
;
mask
|=
1
<<
task_type_
hierarchy
;
mask
|=
1
<<
task_type_
ghost
;
submask
|=
1
<<
task_subtype_density
;
}
...
...
@@ -2115,7 +2115,7 @@ void engine_step(struct engine *e) {
mask
|=
1
<<
task_type_self
;
mask
|=
1
<<
task_type_pair
;
mask
|=
1
<<
task_type_sub
;
mask
|=
1
<<
task_type_
hierarchy
;
mask
|=
1
<<
task_type_
ghost
;
submask
|=
1
<<
task_subtype_density
;
submask
|=
1
<<
task_subtype_force
;
...
...
src/runner.c
View file @
1adbabf9
...
...
@@ -629,7 +629,7 @@ void runner_doinit(struct runner *r, struct cell *c, int timer) {
* @param c The cell.
*/
void
runner_do_
cellhierarchy
(
struct
runner
*
r
,
struct
cell
*
c
)
{
void
runner_do_
ghost
(
struct
runner
*
r
,
struct
cell
*
c
)
{
struct
part
*
p
,
*
parts
=
c
->
parts
;
struct
xpart
*
xp
,
*
xparts
=
c
->
xparts
;
...
...
@@ -652,7 +652,7 @@ void runner_do_cellhierarchy(struct runner *r, struct cell *c) {
/* Recurse? */
if
(
c
->
split
)
{
for
(
int
k
=
0
;
k
<
8
;
k
++
)
if
(
c
->
progeny
[
k
]
!=
NULL
)
runner_do_
cellhierarchy
(
r
,
c
->
progeny
[
k
]);
if
(
c
->
progeny
[
k
]
!=
NULL
)
runner_do_
ghost
(
r
,
c
->
progeny
[
k
]);
return
;
}
...
...
@@ -774,7 +774,7 @@ void runner_do_cellhierarchy(struct runner *r, struct cell *c) {
if
(
count
)
message
(
"Smoothing length failed to converge on %i particles."
,
count
);
TIMER_TOC
(
timer_do_
cellhierarchy
);
TIMER_TOC
(
timer_do_
ghost
);
}
/**
...
...
@@ -1348,8 +1348,8 @@ void *runner_main(void *data) {
case
task_type_init
:
runner_doinit
(
r
,
ci
,
1
);
break
;
case
task_type_
hierarchy
:
runner_do_
cellhierarchy
(
r
,
ci
);
case
task_type_
ghost
:
runner_do_
ghost
(
r
,
ci
);
break
;
case
task_type_drift
:
runner_dodrift
(
r
,
ci
,
1
);
...
...
src/scheduler.c
View file @
1adbabf9
...
...
@@ -916,7 +916,7 @@ void scheduler_reweight(struct scheduler *s) {
}
else
t
->
weight
+=
1
*
wscale
*
t
->
ci
->
count
*
t
->
ci
->
count
;
break
;
case
task_type_
hierarchy
:
case
task_type_
ghost
:
if
(
t
->
ci
==
t
->
ci
->
super
)
t
->
weight
+=
wscale
*
t
->
ci
->
count
;
break
;
case
task_type_kick
:
...
...
@@ -1082,7 +1082,7 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
switch
(
t
->
type
)
{
case
task_type_self
:
case
task_type_sort
:
case
task_type_
hierarchy
:
case
task_type_
ghost
:
case
task_type_kick
:
case
task_type_drift
:
case
task_type_init
:
...
...
src/space.c
View file @
1adbabf9
...
...
@@ -350,7 +350,7 @@ void space_regrid(struct space *s, double cell_max, int verbose) {
s
->
cells
[
k
].
count
=
0
;
s
->
cells
[
k
].
gcount
=
0
;
s
->
cells
[
k
].
init
=
NULL
;
s
->
cells
[
k
].
hierarchy
=
NULL
;
s
->
cells
[
k
].
ghost
=
NULL
;
s
->
cells
[
k
].
drift
=
NULL
;
s
->
cells
[
k
].
kick
=
NULL
;
s
->
cells
[
k
].
super
=
&
s
->
cells
[
k
];
...
...
@@ -452,8 +452,7 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
const
int
t
=
ind
[
k
];
ind
[
k
]
=
ind
[
nr_parts
];
ind
[
nr_parts
]
=
t
;
}
else
{
}
else
{
/* Increment when not exchanging otherwise we need to retest "k".*/
k
++
;
}
...
...
@@ -488,8 +487,7 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
const
int
t
=
gind
[
k
];
gind
[
k
]
=
gind
[
nr_gparts
];
gind
[
nr_gparts
]
=
t
;
}
else
{
}
else
{
/* Increment when not exchanging otherwise we need to retest "k".*/
k
++
;
}
...
...
@@ -508,7 +506,6 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
}
}*/
/* Exchange the strays, note that this potentially re-allocates
the parts arrays. */
size_t
nr_parts_exchanged
=
s
->
nr_parts
-
nr_parts
;
...
...
src/task.c
View file @
1adbabf9
...
...
@@ -48,7 +48,7 @@
/* Task type names. */
const
char
*
taskID_names
[
task_type_count
]
=
{
"none"
,
"sort"
,
"self"
,
"pair"
,
"sub"
,
"init"
,
"
hierarchy
"
,
"drift"
,
"kick"
,
"send"
,
"init"
,
"
ghost
"
,
"drift"
,
"kick"
,
"send"
,
"recv"
,
"grav_pp"
,
"grav_mm"
,
"grav_up"
,
"grav_down"
,
"grav_external"
,
"part_sort"
,
"gpart_sort"
,
"split_cell"
,
"rewait"
};
...
...
src/task.h
View file @
1adbabf9
...
...
@@ -39,7 +39,7 @@ enum task_types {
task_type_pair
,
task_type_sub
,
task_type_init
,
task_type_
hierarchy
,
task_type_
ghost
,
task_type_drift
,
task_type_kick
,
task_type_send
,
...
...
src/timers.h
View file @
1adbabf9
...
...
@@ -45,7 +45,7 @@ enum {
timer_dosub_force
,
timer_dosub_grav
,
timer_dopair_subset
,
timer_do_
cellhierarchy
,
timer_do_
ghost
,
timer_dorecv_cell
,
timer_gettask
,
timer_qget
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment