Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
loadbalancing
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD 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
SLMS
loadbalancing
Commits
aa736b43
Commit
aa736b43
authored
4 years ago
by
Rene Halver
Browse files
Options
Downloads
Patches
Plain Diff
Revised new readme
parent
3bffca3d
Branches
Branches containing commit
Tags
Tags containing commit
1 merge request
!8
Refactor
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
README_new.md
+13
-13
13 additions, 13 deletions
README_new.md
with
13 additions
and
13 deletions
README_new.md
+
13
−
13
View file @
aa736b43
...
...
@@ -5,7 +5,7 @@ load balancing into particle based simulation codes. The library is
developed in the Simulation Laboratory Molecular Systems of the Jülich
Supercomputing Centre at Forschungszentrum Jülich.
It includes several load balancing schemes. The following list gives an
d
It includes several load balancing schemes. The following list gives an
overview about these schemes and short explanations.
-
**Tensor product**
: The work on all processes is reduced over the
...
...
@@ -32,7 +32,7 @@ overview about these schemes and short explanations.
than a vertex, i.e. a point defining a Voronoi cell, which describes
the domain. Consequently, the number of neighbors is not a conserved
quantity, i.e. the topology may change over time. ALL uses the Voro++
library published by the Lawrence Berkeley Laboratory for the
library published by the Lawrence Berkeley
National
Laboratory for the
generation of the Voronoi mesh.
-
**Histogram based staggered grid**
: Resulting in the same grid, as
the staggered grid scheme, this scheme uses the cumulative work
...
...
@@ -128,8 +128,8 @@ Simple (and not so simple) examples are available in the `/examples` sub
directory. The simple examples are also documented at length.
Errors are treated as exceptions that are thrown of a (sub) class of
`
ALL::CustomException
`. Likely candidates that may throw
are `
balance
`,
`
setup
`, `
printVTKoutlines
`.
`
ALL::CustomException
`. Likely candidates that may throw
exceptions
are `
balance
`,
`
setup
`, `
printVTKoutlines
`.
### ALL object
The ALL object can be constructed with
...
...
@@ -144,7 +144,7 @@ work as `W`, which are usually float or double. The load balancing
method must be one of `
ALL::LB_t::TENSOR
`, `
...STAGGERED
`,
`
...FORCEBASED
`, `
...VORONOI
`, `
...HISTOGRAM
`. Where the Voronoi
method must be enabled at compile time. There is also a second form
where the initial domain vertices are
given
:
where the initial domain vertices are
already provided
:
ALL::ALL<T,W> (
const ALL::LB_t method,
...
...
@@ -160,12 +160,12 @@ The domain boundaries are given and retrieved as a vector of
ALL::Point<T> ( const int dimension, const T *values )
ALL::Point<T> ( const std::vector<T> &values )
and accessed
via
the `
[]
` operator like a `
std::vector
`
and
its elements can be
accessed
through
the `
[]
` operator like a `
std::vector
`
### Set up
A few additional parameters must be set before the domains can be
balanced.
Exactly which are
dependent on the method used,
but in general
the following are necessary
balanced.
Which exactly need to be set, is
dependent on the method used,
but in general
the following are necessary
void ALL::ALL<T,W>::setVertices ( std::vector<ALL::Point<T>> &vertices )
void ALL::ALL<T,W>::setCommunicator ( MPI_Comm comm )
...
...
@@ -181,12 +181,12 @@ grid parameters must also be set beforehand (!) using
with the location of the current process and number of processes in each
direction.
To trace the current domain better an integer tag can be
given, that
is
To trace the current domain better an integer tag can be
provided, which
is
used in the domain output, with
void ALL::ALL<T,W>::setProcTag ( int tag )
and
the
minimal domain size in each direction can be set using
and
an observed
minimal domain size in each direction can be set using
void ALL::ALL<T,W>::setMinDomainSize (
const std::vector<T> &minSize )
...
...
@@ -195,7 +195,7 @@ Once these parameters are set call
void ALL::ALL<T,W>::setup()
so internal set up routines
can
run.
so internal set up routines
are
run.
### Balancing
To create the new domain vertices make sure the current vertices are set
...
...
@@ -203,7 +203,7 @@ using `setVertices` and the work is set using `setWork` then call
void ALL::ALL<T,W>::balance()
and then
retrieve
the new vertices using
and then the new vertices
can be retrieved by
using
std::vector<ALL::Point<T>> &ALL::ALL<T,W>::getVertices ()
...
...
@@ -271,7 +271,7 @@ Required number of vertices:
Advantages:
- topology of the system is maintained (orthogonal domains, neighbor
relations)
- no update for the neighbor relations
need to be made
in the calling
- no update for the neighbor relations
is required
in the calling
code
- if a code was able to deal with orthogonal domains, only small
changes are expected to include this strategy
...
...
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