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
3742104d
Commit
3742104d
authored
Mar 25, 2020
by
Matthieu Schaller
Browse files
Make the time-step limiter tasks lock-free
parent
15106d9f
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/task.c
View file @
3742104d
...
...
@@ -468,7 +468,8 @@ void task_unlock(struct task *t) {
cell_unlocktree
(
ci
);
}
else
if
(
subtype
==
task_subtype_do_bh_swallow
)
{
cell_bunlocktree
(
ci
);
}
else
{
}
else
if
(
subtype
==
task_subtype_limiter
)
{
}
else
{
/* hydro */
cell_unlocktree
(
ci
);
}
break
;
...
...
@@ -493,7 +494,8 @@ void task_unlock(struct task *t) {
}
else
if
(
subtype
==
task_subtype_do_bh_swallow
)
{
cell_bunlocktree
(
ci
);
cell_bunlocktree
(
cj
);
}
else
{
}
else
if
(
subtype
==
task_subtype_limiter
)
{
}
else
{
/* hydro */
cell_unlocktree
(
ci
);
cell_unlocktree
(
cj
);
}
...
...
@@ -625,6 +627,8 @@ int task_lock(struct task *t) {
}
else
if
(
subtype
==
task_subtype_do_bh_swallow
)
{
if
(
ci
->
black_holes
.
hold
)
return
0
;
if
(
cell_blocktree
(
ci
)
!=
0
)
return
0
;
}
else
if
(
subtype
==
task_subtype_limiter
)
{
return
1
;
}
else
{
/* subtype == hydro */
if
(
ci
->
hydro
.
hold
)
return
0
;
if
(
cell_locktree
(
ci
)
!=
0
)
return
0
;
...
...
@@ -686,6 +690,8 @@ int task_lock(struct task *t) {
cell_bunlocktree
(
ci
);
return
0
;
}
}
else
if
(
subtype
==
task_subtype_limiter
)
{
return
1
;
}
else
{
/* subtype == hydro */
/* Lock the parts in both cells */
if
(
ci
->
hydro
.
hold
||
cj
->
hydro
.
hold
)
return
0
;
...
...
src/timestep_limiter_iact.h
View file @
3742104d
...
...
@@ -88,7 +88,7 @@ __attribute__((always_inline)) INLINE static void runner_iact_nonsym_limiter(
if
(
pj
->
time_bin
>
pi
->
time_bin
+
time_bin_neighbour_max_delta_bin
)
{
/* Store the smallest time bin that woke up this particle */
pj
->
limiter_data
.
wakeup
=
max
(
pj
->
limiter_data
.
wakeup
,
-
pi
->
time_bin
);
atomic_max_c
(
&
pj
->
limiter_data
.
wakeup
,
-
pi
->
time_bin
);
}
}
...
...
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