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
5d3548a3
Commit
5d3548a3
authored
May 22, 2017
by
Matthieu Schaller
Browse files
Make GIZMO work over MPI again.
parent
f8bb52df
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/cell.c
View file @
5d3548a3
...
@@ -1385,6 +1385,9 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
...
@@ -1385,6 +1385,9 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
scheduler_activate
(
s
,
ci
->
recv_xv
);
scheduler_activate
(
s
,
ci
->
recv_xv
);
if
(
cell_is_active
(
ci
,
e
))
{
if
(
cell_is_active
(
ci
,
e
))
{
scheduler_activate
(
s
,
ci
->
recv_rho
);
scheduler_activate
(
s
,
ci
->
recv_rho
);
#ifdef EXTRA_HYDRO_LOOP
scheduler_activate
(
s
,
ci
->
recv_gradient
);
#endif
scheduler_activate
(
s
,
ci
->
recv_ti
);
scheduler_activate
(
s
,
ci
->
recv_ti
);
}
}
...
@@ -1404,12 +1407,21 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
...
@@ -1404,12 +1407,21 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
if
(
t
->
type
==
task_type_pair
)
scheduler_activate
(
s
,
cj
->
drift_part
);
if
(
t
->
type
==
task_type_pair
)
scheduler_activate
(
s
,
cj
->
drift_part
);
if
(
cell_is_active
(
cj
,
e
))
{
if
(
cell_is_active
(
cj
,
e
))
{
for
(
l
=
cj
->
send_rho
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
for
(
l
=
cj
->
send_rho
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
l
=
l
->
next
)
l
=
l
->
next
)
;
;
if
(
l
==
NULL
)
error
(
"Missing link to send_rho task."
);
if
(
l
==
NULL
)
error
(
"Missing link to send_rho task."
);
scheduler_activate
(
s
,
l
->
t
);
scheduler_activate
(
s
,
l
->
t
);
#ifdef EXTRA_HYDRO_LOOP
for
(
l
=
cj
->
send_gradient
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
l
=
l
->
next
)
;
if
(
l
==
NULL
)
error
(
"Missing link to send_gradient task."
);
scheduler_activate
(
s
,
l
->
t
);
#endif
for
(
l
=
cj
->
send_ti
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
for
(
l
=
cj
->
send_ti
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
l
=
l
->
next
)
l
=
l
->
next
)
;
;
...
@@ -1423,6 +1435,9 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
...
@@ -1423,6 +1435,9 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
scheduler_activate
(
s
,
cj
->
recv_xv
);
scheduler_activate
(
s
,
cj
->
recv_xv
);
if
(
cell_is_active
(
cj
,
e
))
{
if
(
cell_is_active
(
cj
,
e
))
{
scheduler_activate
(
s
,
cj
->
recv_rho
);
scheduler_activate
(
s
,
cj
->
recv_rho
);
#ifdef EXTRA_HYDRO_LOOP
scheduler_activate
(
s
,
cj
->
recv_gradient
);
#endif
scheduler_activate
(
s
,
cj
->
recv_ti
);
scheduler_activate
(
s
,
cj
->
recv_ti
);
}
}
...
@@ -1442,12 +1457,21 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
...
@@ -1442,12 +1457,21 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
if
(
t
->
type
==
task_type_pair
)
scheduler_activate
(
s
,
ci
->
drift_part
);
if
(
t
->
type
==
task_type_pair
)
scheduler_activate
(
s
,
ci
->
drift_part
);
if
(
cell_is_active
(
ci
,
e
))
{
if
(
cell_is_active
(
ci
,
e
))
{
for
(
l
=
ci
->
send_rho
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
cj
->
nodeID
;
for
(
l
=
ci
->
send_rho
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
cj
->
nodeID
;
l
=
l
->
next
)
l
=
l
->
next
)
;
;
if
(
l
==
NULL
)
error
(
"Missing link to send_rho task."
);
if
(
l
==
NULL
)
error
(
"Missing link to send_rho task."
);
scheduler_activate
(
s
,
l
->
t
);
scheduler_activate
(
s
,
l
->
t
);
#ifdef EXTRA_HYDRO_LOOP
for
(
l
=
ci
->
send_gradient
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
cj
->
nodeID
;
l
=
l
->
next
)
;
if
(
l
==
NULL
)
error
(
"Missing link to send_gradient task."
);
scheduler_activate
(
s
,
l
->
t
);
#endif
for
(
l
=
ci
->
send_ti
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
cj
->
nodeID
;
for
(
l
=
ci
->
send_ti
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
cj
->
nodeID
;
l
=
l
->
next
)
l
=
l
->
next
)
;
;
...
...
src/engine.c
View file @
5d3548a3
...
@@ -2584,6 +2584,9 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
...
@@ -2584,6 +2584,9 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
scheduler_activate
(
s
,
ci
->
recv_xv
);
scheduler_activate
(
s
,
ci
->
recv_xv
);
if
(
cell_is_active
(
ci
,
e
))
{
if
(
cell_is_active
(
ci
,
e
))
{
scheduler_activate
(
s
,
ci
->
recv_rho
);
scheduler_activate
(
s
,
ci
->
recv_rho
);
#ifdef EXTRA_HYDRO_LOOP
scheduler_activate
(
s
,
ci
->
recv_gradient
);
#endif
scheduler_activate
(
s
,
ci
->
recv_ti
);
scheduler_activate
(
s
,
ci
->
recv_ti
);
}
}
...
@@ -2603,12 +2606,21 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
...
@@ -2603,12 +2606,21 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
if
(
t
->
type
==
task_type_pair
)
scheduler_activate
(
s
,
cj
->
drift_part
);
if
(
t
->
type
==
task_type_pair
)
scheduler_activate
(
s
,
cj
->
drift_part
);
if
(
cell_is_active
(
cj
,
e
))
{
if
(
cell_is_active
(
cj
,
e
))
{
for
(
l
=
cj
->
send_rho
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
for
(
l
=
cj
->
send_rho
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
l
=
l
->
next
)
l
=
l
->
next
)
;
;
if
(
l
==
NULL
)
error
(
"Missing link to send_rho task."
);
if
(
l
==
NULL
)
error
(
"Missing link to send_rho task."
);
scheduler_activate
(
s
,
l
->
t
);
scheduler_activate
(
s
,
l
->
t
);
#ifdef EXTRA_HYDRO_LOOP
for
(
l
=
cj
->
send_gradient
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
l
=
l
->
next
)
;
if
(
l
==
NULL
)
error
(
"Missing link to send_gradient task."
);
scheduler_activate
(
s
,
l
->
t
);
#endif
for
(
l
=
cj
->
send_ti
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
for
(
l
=
cj
->
send_ti
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
ci
->
nodeID
;
l
=
l
->
next
)
l
=
l
->
next
)
;
;
...
@@ -2622,6 +2634,9 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
...
@@ -2622,6 +2634,9 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
scheduler_activate
(
s
,
cj
->
recv_xv
);
scheduler_activate
(
s
,
cj
->
recv_xv
);
if
(
cell_is_active
(
cj
,
e
))
{
if
(
cell_is_active
(
cj
,
e
))
{
scheduler_activate
(
s
,
cj
->
recv_rho
);
scheduler_activate
(
s
,
cj
->
recv_rho
);
#ifdef EXTRA_HYDRO_LOOP
scheduler_activate
(
s
,
cj
->
recv_gradient
);
#endif
scheduler_activate
(
s
,
cj
->
recv_ti
);
scheduler_activate
(
s
,
cj
->
recv_ti
);
}
}
...
@@ -2647,6 +2662,14 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
...
@@ -2647,6 +2662,14 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
if
(
l
==
NULL
)
error
(
"Missing link to send_rho task."
);
if
(
l
==
NULL
)
error
(
"Missing link to send_rho task."
);
scheduler_activate
(
s
,
l
->
t
);
scheduler_activate
(
s
,
l
->
t
);
#ifdef EXTRA_HYDRO_LOOP
for
(
l
=
ci
->
send_gradient
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
cj
->
nodeID
;
l
=
l
->
next
)
;
if
(
l
==
NULL
)
error
(
"Missing link to send_gradient task."
);
scheduler_activate
(
s
,
l
->
t
);
#endif
for
(
l
=
ci
->
send_ti
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
cj
->
nodeID
;
for
(
l
=
ci
->
send_ti
;
l
!=
NULL
&&
l
->
t
->
cj
->
nodeID
!=
cj
->
nodeID
;
l
=
l
->
next
)
l
=
l
->
next
)
;
;
...
...
src/runner.c
View file @
5d3548a3
...
@@ -1914,6 +1914,8 @@ void *runner_main(void *data) {
...
@@ -1914,6 +1914,8 @@ void *runner_main(void *data) {
runner_do_recv_part
(
r
,
ci
,
1
,
1
);
runner_do_recv_part
(
r
,
ci
,
1
,
1
);
}
else
if
(
t
->
subtype
==
task_subtype_rho
)
{
}
else
if
(
t
->
subtype
==
task_subtype_rho
)
{
runner_do_recv_part
(
r
,
ci
,
1
,
1
);
runner_do_recv_part
(
r
,
ci
,
1
,
1
);
}
else
if
(
t
->
subtype
==
task_subtype_gradient
)
{
runner_do_recv_part
(
r
,
ci
,
1
,
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
)
{
...
...
src/scheduler.c
View file @
5d3548a3
...
@@ -1379,7 +1379,8 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
...
@@ -1379,7 +1379,8 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
MPI_BYTE
,
t
->
ci
->
nodeID
,
t
->
flags
,
MPI_COMM_WORLD
,
MPI_BYTE
,
t
->
ci
->
nodeID
,
t
->
flags
,
MPI_COMM_WORLD
,
&
t
->
req
);
&
t
->
req
);
}
else
if
(
t
->
subtype
==
task_subtype_xv
||
}
else
if
(
t
->
subtype
==
task_subtype_xv
||
t
->
subtype
==
task_subtype_rho
)
{
t
->
subtype
==
task_subtype_rho
||
t
->
subtype
==
task_subtype_gradient
)
{
err
=
MPI_Irecv
(
t
->
ci
->
parts
,
t
->
ci
->
count
,
part_mpi_type
,
err
=
MPI_Irecv
(
t
->
ci
->
parts
,
t
->
ci
->
count
,
part_mpi_type
,
t
->
ci
->
nodeID
,
t
->
flags
,
MPI_COMM_WORLD
,
&
t
->
req
);
t
->
ci
->
nodeID
,
t
->
flags
,
MPI_COMM_WORLD
,
&
t
->
req
);
// message( "receiving %i parts with tag=%i from %i to %i." ,
// message( "receiving %i parts with tag=%i from %i to %i." ,
...
@@ -1414,7 +1415,8 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
...
@@ -1414,7 +1415,8 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
MPI_BYTE
,
t
->
cj
->
nodeID
,
t
->
flags
,
MPI_COMM_WORLD
,
MPI_BYTE
,
t
->
cj
->
nodeID
,
t
->
flags
,
MPI_COMM_WORLD
,
&
t
->
req
);
&
t
->
req
);
}
else
if
(
t
->
subtype
==
task_subtype_xv
||
}
else
if
(
t
->
subtype
==
task_subtype_xv
||
t
->
subtype
==
task_subtype_rho
)
{
t
->
subtype
==
task_subtype_rho
||
t
->
subtype
==
task_subtype_gradient
)
{
#ifdef SWIFT_DEBUG_CHECKS
#ifdef SWIFT_DEBUG_CHECKS
for
(
int
k
=
0
;
k
<
t
->
ci
->
count
;
k
++
)
for
(
int
k
=
0
;
k
<
t
->
ci
->
count
;
k
++
)
if
(
t
->
ci
->
parts
[
k
].
ti_drift
!=
s
->
space
->
e
->
ti_current
)
if
(
t
->
ci
->
parts
[
k
].
ti_drift
!=
s
->
space
->
e
->
ti_current
)
...
...
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