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
da5b1073
Commit
da5b1073
authored
Dec 01, 2017
by
Matthieu Schaller
Browse files
Code formatting
parent
171dddb5
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/engine.c
View file @
da5b1073
...
...
@@ -4466,7 +4466,7 @@ void engine_makeproxies(struct engine *e) {
for
(
int
i
=
0
;
i
<
cdim
[
0
];
i
++
)
{
for
(
int
j
=
0
;
j
<
cdim
[
1
];
j
++
)
{
for
(
int
k
=
0
;
k
<
cdim
[
2
];
k
++
)
{
/* Get the cell ID. */
const
int
cid
=
cell_getid
(
cdim
,
i
,
j
,
k
);
...
...
@@ -4488,21 +4488,18 @@ void engine_makeproxies(struct engine *e) {
/* Get the cell ID. */
const
int
cjd
=
cell_getid
(
cdim
,
ii
,
jj
,
kk
);
/* Early abort (same cell) */
if
(
cid
==
cjd
)
continue
;
/* Early abort (same cell) */
if
(
cid
==
cjd
)
continue
;
/* Early abort (both same node) */
if
(
cells
[
cid
].
nodeID
==
nodeID
&&
cells
[
cjd
].
nodeID
==
nodeID
)
continue
;
/* Early abort (both same node) */
if
(
cells
[
cid
].
nodeID
==
nodeID
&&
cells
[
cjd
].
nodeID
==
nodeID
)
continue
;
/* Early abort (both foreign node) */
if
(
cells
[
cid
].
nodeID
!=
nodeID
&&
cells
[
cjd
].
nodeID
!=
nodeID
)
continue
;
/* Early abort (both foreign node) */
if
(
cells
[
cid
].
nodeID
!=
nodeID
&&
cells
[
cjd
].
nodeID
!=
nodeID
)
continue
;
char
proxy_type
=
proxy_cell_type_none
;
char
proxy_type
=
proxy_cell_type_none
;
/* In the gravity case, check distances using the MAC. */
if
(
with_gravity
)
{
...
...
@@ -4526,82 +4523,79 @@ void engine_makeproxies(struct engine *e) {
}
const
double
r2
=
dx
*
dx
+
dy
*
dy
+
dz
*
dz
;
/* Are we too close for M2L? */
/* Are we too close for M2L? */
if
(
!
gravity_M2L_accept
(
r_max_i
,
r_max_j
,
theta_crit2
,
r2
))
proxy_type
|=
proxy_cell_type_gravity
;
proxy_type
|=
proxy_cell_type_gravity
;
}
/* In the hydro case, only care about neighbours */
if
(
with_hydro
)
{
/* This is super-ugly but checks for direct neighbours */
/* with periodic BC */
/* This is super-ugly but checks for direct neighbours */
/* with periodic BC */
if
(((
abs
(
i
-
ii
)
<=
1
||
abs
(
i
-
ii
-
cdim
[
0
])
<=
1
||
abs
(
i
-
ii
+
cdim
[
0
])
<=
1
)
&&
(
abs
(
j
-
jj
)
<=
1
||
abs
(
j
-
jj
-
cdim
[
1
])
<=
1
||
abs
(
j
-
jj
+
cdim
[
1
])
<=
1
)
&&
(
abs
(
k
-
kk
)
<=
1
||
abs
(
k
-
kk
-
cdim
[
2
])
<=
1
||
abs
(
k
-
kk
+
cdim
[
2
])
<=
1
)))
proxy_type
|=
proxy_cell_type_hydro
;
abs
(
i
-
ii
+
cdim
[
0
])
<=
1
)
&&
(
abs
(
j
-
jj
)
<=
1
||
abs
(
j
-
jj
-
cdim
[
1
])
<=
1
||
abs
(
j
-
jj
+
cdim
[
1
])
<=
1
)
&&
(
abs
(
k
-
kk
)
<=
1
||
abs
(
k
-
kk
-
cdim
[
2
])
<=
1
||
abs
(
k
-
kk
+
cdim
[
2
])
<=
1
)))
proxy_type
|=
proxy_cell_type_hydro
;
}
/* Abort if not in range at all */
if
(
proxy_type
==
proxy_cell_type_none
)
continue
;
/* Abort if not in range at all */
if
(
proxy_type
==
proxy_cell_type_none
)
continue
;
/* Add to proxies? */
if
(
cells
[
cid
].
nodeID
==
nodeID
&&
cells
[
cjd
].
nodeID
!=
nodeID
)
{
if
(
cells
[
cid
].
nodeID
==
nodeID
&&
cells
[
cjd
].
nodeID
!=
nodeID
)
{
/* Do we already have a relationship with this node? */
/* Do we already have a relationship with this node? */
int
pid
=
e
->
proxy_ind
[
cells
[
cjd
].
nodeID
];
if
(
pid
<
0
)
{
if
(
e
->
nr_proxies
==
engine_maxproxies
)
error
(
"Maximum number of proxies exceeded."
);
/* Ok, start a new proxy for this pair of nodes */
/* Ok, start a new proxy for this pair of nodes */
proxy_init
(
&
proxies
[
e
->
nr_proxies
],
e
->
nodeID
,
cells
[
cjd
].
nodeID
);
/* Store the information */
/* Store the information */
e
->
proxy_ind
[
cells
[
cjd
].
nodeID
]
=
e
->
nr_proxies
;
pid
=
e
->
nr_proxies
;
e
->
nr_proxies
+=
1
;
}
/* Add the cell to the proxy */
/* Add the cell to the proxy */
proxy_addcell_in
(
&
proxies
[
pid
],
&
cells
[
cjd
],
proxy_type
);
proxy_addcell_out
(
&
proxies
[
pid
],
&
cells
[
cid
],
proxy_type
);
/* Store info about where to send the cell */
/* Store info about where to send the cell */
cells
[
cid
].
sendto
|=
(
1ULL
<<
pid
);
}
/* Same for the symmetric case? */
if
(
cells
[
cjd
].
nodeID
==
nodeID
&&
cells
[
cid
].
nodeID
!=
nodeID
)
{
/* Same for the symmetric case? */
if
(
cells
[
cjd
].
nodeID
==
nodeID
&&
cells
[
cid
].
nodeID
!=
nodeID
)
{
/* Do we already have a relationship with this node? */
/* Do we already have a relationship with this node? */
int
pid
=
e
->
proxy_ind
[
cells
[
cid
].
nodeID
];
if
(
pid
<
0
)
{
if
(
e
->
nr_proxies
==
engine_maxproxies
)
error
(
"Maximum number of proxies exceeded."
);
/* Ok, start a new proxy for this pair of nodes */
/* Ok, start a new proxy for this pair of nodes */
proxy_init
(
&
proxies
[
e
->
nr_proxies
],
e
->
nodeID
,
cells
[
cid
].
nodeID
);
/* Store the information */
/* Store the information */
e
->
proxy_ind
[
cells
[
cid
].
nodeID
]
=
e
->
nr_proxies
;
pid
=
e
->
nr_proxies
;
e
->
nr_proxies
+=
1
;
}
/* Add the cell to the proxy */
/* Add the cell to the proxy */
proxy_addcell_in
(
&
proxies
[
pid
],
&
cells
[
cid
],
proxy_type
);
proxy_addcell_out
(
&
proxies
[
pid
],
&
cells
[
cjd
],
proxy_type
);
/* Store info about where to send the cell */
/* Store info about where to send the cell */
cells
[
cjd
].
sendto
|=
(
1ULL
<<
pid
);
}
}
...
...
src/parallel_io.c
View file @
da5b1073
...
...
@@ -279,9 +279,9 @@ void writeArray_chunk(struct engine* e, hid_t h_data, hid_t h_plist_id,
#ifdef IO_SPEED_MEASUREMENT
MPI_Barrier
(
MPI_COMM_WORLD
);
if
(
engine_rank
==
0
)
message
(
"Copying for '%s' took %.3f %s."
,
props
.
name
,
clocks_from_ticks
(
getticks
()
-
tic
),
clocks_getunit
());
if
(
engine_rank
==
0
)
message
(
"Copying for '%s' took %.3f %s."
,
props
.
name
,
clocks_from_ticks
(
getticks
()
-
tic
),
clocks_getunit
());
#endif
/* Create data space */
...
...
@@ -324,9 +324,9 @@ void writeArray_chunk(struct engine* e, hid_t h_data, hid_t h_plist_id,
H5Sselect_none
(
h_filespace
);
}
/* message("Writing %lld '%s', %zd elements = %zd bytes (int=%d) at offset
* %zd", N, props.name, N * props.dimension, N * props.dimension * typeSize, */
/* (int)(N * props.dimension * typeSize), offset); */
/* message("Writing %lld '%s', %zd elements = %zd bytes (int=%d) at offset
* %zd", N, props.name, N * props.dimension, N * props.dimension * typeSize, */
/* (int)(N * props.dimension * typeSize), offset); */
#ifdef IO_SPEED_MEASUREMENT
MPI_Barrier
(
MPI_COMM_WORLD
);
...
...
@@ -502,9 +502,9 @@ void writeArray(struct engine* e, hid_t grp, char* fileName, FILE* xmfFile,
#ifdef IO_SPEED_MEASUREMENT
MPI_Barrier
(
MPI_COMM_WORLD
);
if
(
engine_rank
==
0
)
message
(
"'%s' took %.3f %s."
,
props
.
name
,
clocks_from_ticks
(
getticks
()
-
tic
),
clocks_getunit
());
if
(
engine_rank
==
0
)
message
(
"'%s' took %.3f %s."
,
props
.
name
,
clocks_from_ticks
(
getticks
()
-
tic
),
clocks_getunit
());
#endif
}
...
...
@@ -847,7 +847,7 @@ void write_output_parallel(struct engine* e, const char* baseName,
/* Activate parallel i/o */
hid_t
h_err
=
H5Pset_fapl_mpio
(
plist_id
,
comm
,
info
);
if
(
h_err
<
0
)
error
(
"Error setting parallel i/o"
);
/* Align on 4k pages. */
h_err
=
H5Pset_alignment
(
plist_id
,
1024
,
4096
);
if
(
h_err
<
0
)
error
(
"Error setting Hdf5 alignment"
);
...
...
src/partition.c
View file @
da5b1073
...
...
@@ -578,10 +578,11 @@ static void repart_edge_metis(int partweights, int bothweights, int timebins,
/* Different weights for different tasks. */
if
(
t
->
type
==
task_type_drift_part
||
t
->
type
==
task_type_drift_gpart
||
t
->
type
==
task_type_ghost
||
t
->
type
==
task_type_extra_ghost
||
t
->
type
==
task_type_kick1
||
t
->
type
==
task_type_kick2
||
t
->
type
==
task_type_timestep
||
t
->
type
==
task_type_init_grav
||
t
->
type
==
task_type_grav_down
||
t
->
type
==
task_type_grav_long_range
)
{
t
->
type
==
task_type_ghost
||
t
->
type
==
task_type_extra_ghost
||
t
->
type
==
task_type_kick1
||
t
->
type
==
task_type_kick2
||
t
->
type
==
task_type_timestep
||
t
->
type
==
task_type_init_grav
||
t
->
type
==
task_type_grav_down
||
t
->
type
==
task_type_grav_long_range
)
{
/* Particle updates add only to vertex weight. */
if
(
taskvweights
)
weights_v
[
cid
]
+=
w
;
...
...
src/proxy.c
View file @
da5b1073
...
...
@@ -456,8 +456,8 @@ void proxy_init(struct proxy *p, int mynodeID, int nodeID) {
if
((
p
->
cells_in
=
(
struct
cell
**
)
malloc
(
sizeof
(
void
*
)
*
p
->
size_cells_in
))
==
NULL
)
error
(
"Failed to allocate cells_in buffer."
);
if
((
p
->
cells_in_type
=
(
char
*
)
malloc
(
sizeof
(
char
)
*
p
->
size_cells_in
))
==
NULL
)
if
((
p
->
cells_in_type
=
(
char
*
)
malloc
(
sizeof
(
char
)
*
p
->
size_cells_in
))
==
NULL
)
error
(
"Failed to allocate cells_in_type buffer."
);
}
p
->
nr_cells_in
=
0
;
...
...
src/proxy.h
View file @
da5b1073
...
...
@@ -41,8 +41,8 @@
*/
enum
proxy_cell_type
{
proxy_cell_type_none
=
0
,
proxy_cell_type_hydro
=
(
1
<<
0
),
proxy_cell_type_gravity
=
(
1
<<
1
)
proxy_cell_type_hydro
=
(
1
<<
0
),
proxy_cell_type_gravity
=
(
1
<<
1
)
};
/* Data structure for the proxy. */
...
...
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