Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
SWIFTsim
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
SWIFT
SWIFTsim
Commits
d55defab
Commit
d55defab
authored
9 years ago
by
Pedro Gonnet
Browse files
Options
Downloads
Patches
Plain Diff
tweaked section 2.
parent
d2fe743b
No related branches found
No related tags found
2 merge requests
!136
Master
,
!80
PASC paper
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
theory/paper_pasc/pasc_paper.tex
+29
-20
29 additions, 20 deletions
theory/paper_pasc/pasc_paper.tex
with
29 additions
and
20 deletions
theory/paper_pasc/pasc_paper.tex
+
29
−
20
View file @
d55defab
...
...
@@ -19,7 +19,9 @@
% Latex tricks
\newcommand
{
\oh
}
[1]
{
\mbox
{$
{
\mathcal
O
}
(
#
1
)
$}}
\newcommand
{
\eqn
}
[1]
{
(
\ref
{
eqn:#1
}
)
}
\makeatletter
\newcommand
{
\pushright
}
[1]
{
\ifmeasuring
@#1
\else\omit\hfill
$
\displaystyle
#
1
$
\fi\ignorespaces
}
\makeatother
% Some acronyms
\newcommand
{
\gadget
}{{
\sc
Gadget-2
}
\xspace
}
...
...
@@ -167,20 +169,27 @@ tackle ever {\em larger} problems, but not fixed-size problems
Although this switch from growth in speed to growth in parallelism
has been anticipated and observed for quite some time, very little
has changed in terms of how we design and implement parallel
computations, e.g.~branch-and-bound synchronous parallelism using
OpenMP
\cite
{
ref:Dagum1998
}
and MPI
\cite
{
ref:Snir1998
}
, and domain
decompositions based on space-filling curves
\cite
{
warren1993parallel
}
.
The design and implementation of
\swift
\cite
{
gonnet2013swift,
%
theuns2015swift,gonnet2015efficient
}
, a large-scale cosmological simulation
code built from scratch, provided the perfect opportunity to test some newer
computations.
Branch-and-bound synchronous parallelism using
OpenMP
\cite
{
ref:Dagum1998
}
and MPI
\cite
{
ref:Snir1998
}
, as well as domain
decompositions based on geometry or space-filling curves
\cite
{
warren1993parallel
}
are still commonplace, despite both the
architectures and problem scales having changed dramatically since
their introduction.
The design and implementation of
\swift\footnote
{
\swift
is an open-source software project and the latest version of
the source code, along with all the data needed to run the test cased
presented in this paper, can be downloaded at
\web
.
}
\cite
{
gonnet2013swift,theuns2015swift,gonnet2015efficient
}
, a large-scale
cosmological simulation code built from scratch, provided the perfect
opportunity to test some newer
approaches, i.e.~task-based parallelism, fully asynchronous communication, and
graph partition-based domain decompositions. The code is open-source and
available at the address
\web
where all the test cases
presented in this paper can also be found.
graph partition-based domain decompositions.
This paper describes these techniques, as well as the results
obtained with them on different architectures.
This paper describes these techniques, which are not exclusive to
cosmological simulations or any specific architecture, as well as
the results obtained with them.
%#####################################################################################################
...
...
@@ -221,12 +230,12 @@ Once the densities $\rho_i$ have been computed, the time derivatives of the
velocity and internal energy, which require
$
\rho
_
i
$
, are
computed as followed:
%
\begin{
eqnarray
}
\frac
{
dv
_
i
}{
dt
}
&
=
&
-
\sum
_{
j,~r
_{
ij
}
<
\hat
{
h
}_{
ij
}}
m
_
j
\left
[
\frac
{
P
_
i
}{
\Omega
_
i
\rho
_
i
^
2
}
\nabla
_
rW(r
_{
ij
}
,h
_
i)
+
\frac
{
P
_
j
}{
\Omega
_
j
\rho
_
j
^
2
}
\nabla
_
rW(r
_{
ij
}
,h
_
j)
\right
],
\
label
{
eqn:dvdt
}
\\
\frac
{
du
_
i
}{
dt
}
&
=
&
\frac
{
P
_
i
}{
\Omega
_
i
\rho
_
i
^
2
}
\sum
_{
j,~r
_{
ij
}
< h
_
i
}
m
_
j(
\mathbf
v
_
i -
\mathbf
v
_
j)
\cdot
\nabla
_
rW(r
_{
ij
}
,h
_
i),
\label
{
eqn:dudt
}
\end{
eqnarray
}
\begin{
align
}
\frac
{
dv
_
i
}{
dt
}
&
= -
\sum
_{
j,~r
_{
ij
}
<
\hat
{
h
}_{
ij
}}
m
_
j
\left
[
\frac
{
P
_
i
}{
\Omega
_
i
\rho
_
i
^
2
}
\nabla
_
rW(r
_{
ij
}
,h
_
i)
\right
. +
\label
{
eqn:dvdt
}
\\
&
\pushright
{
\left
.
\frac
{
P
_
j
}{
\Omega
_
j
\rho
_
j
^
2
}
\nabla
_
rW(r
_{
ij
}
,h
_
j)
\right
],
\
nonumber
}
\\
\frac
{
du
_
i
}{
dt
}
&
=
\frac
{
P
_
i
}{
\Omega
_
i
\rho
_
i
^
2
}
\sum
_{
j,~r
_{
ij
}
< h
_
i
}
m
_
j(
\mathbf
v
_
i -
\mathbf
v
_
j)
\cdot
\nabla
_
rW(r
_{
ij
}
,h
_
i),
\label
{
eqn:dudt
}
\end{
align
}
%
where
$
\hat
{
h
}_{
ij
}
=
\max\{
h
_
i,h
_
j
\}
$
, and the particle pressure
$
P
_
i
=
\rho
_
i
u
_
i
(
\gamma
-
1
)
$
and correction term
$
\Omega
_
i
=
1
+
...
...
@@ -256,7 +265,6 @@ separately:
Finding the interacting neighbours for each particle constitutes
the bulk of the computation.
Many codes, e.g. in Astrophysics simulations
\cite
{
Gingold1977
}
,
the above-mentioned approaches cease to work efficiently.
rely on spatial
{
\em
trees
}
for neighbour finding
\cite
{
Gingold1977,Hernquist1989,Springel2005,Wadsley2004
}
,
i.e.~
$
k
$
-d trees
\cite
{
Bentley1975
}
or octrees
\cite
{
Meagher1982
}
...
...
@@ -297,6 +305,7 @@ Finally, the necessary communication between nodes can itself be
modelled in a task-based way, interleaving communication seamlesly
with the rest of the computation.
\subsection
{
Task-based parallelism
}
Task-based parallelism is a shared-memory parallel programming
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment