Dissertation
Newest pdf can be downloaded here
Gliederung
Algorithm and Performance Engineering for HPC Particle Simulations
Abstract
- most optimizations on ls1-mardyn, but applicable elsewhere.
Introduction
- Motivation, warum ist das, was ich mache wichtig.
- Particle Simulations -- short range
- MD
- (SPH)
- Zeitschrittverfahren
- sehr kurz: Thermostate, Ensembles (mit Einschränkungen, also welche gibt es, was brauchen sie, ...)
- short range algorithms
- LC, VL + force calculation
- shortly mention long-range: direct/Barnes-Hut/FMM
- Domain partitioning, only sdd., mention halo+boundary particles!, more details in MN-BB-LB
- HPC-Architectures
- single node: shared-memory, but often NUMA
- multi-node: distributed memory
- also with heterogeneous architectures
- used clusters: MAC Cluster / Linux Cluster / SuperMUC 1/2 / SuperMIC / Hazel Hen -- eventually later, before results?
- Overview of this thesis / Outline
- previous implications of HPC in ls1-mardyn in next section
- New opt. of multi node in section -> MNO + AT in MN
- New opt. of node-level opt in -> Node-Level AT
Notes:
- einfach nur grundlegende Algorithmik + Domain decomp
ls1-mardyn
- what it is, what it does
- container: LC
- traversal: c08, sliced, c04
- vectorization: intrinsics up to AVX512
- with context of HPC Architectures
(Scenarios)
Scenario Descriptions
- artificial scenarios
- homogeneous particle distribution
- mksfera
- mktcts
- other
- realistic scenarios
- Expl. liquid
- droplet coalescence
- spinodal decomposition
- toffifee?
Note:
- die nicht hier einführen, sondern wenn sie gebaucht werden, also später.
Multi-Node Optimizations
Building Blocks
- MPI Overview
- P2P
- Collective
- Non-Blocking
- Load Balancing Overview
- different algorithms (kdd, diffusive, space-filling curves, ...)
- load estimation
- Überleitung: this works good for, e.g., stencil based algorithms, but for MD load estimation/calculation is also needed
- OPEN: how to handle related work here? in this section, or the next?
- Zonal Methods
Related Work
- More detailed view at Multi-Node optimizations of other software
- lammps
- Gromacs
- maybe other software?
- FDPS?
- multi-section method, <-- maybe better to introduce later, i.e., at multi-node AT...
- Sachen von vorherigen Dissertationen am Lehrstuhl
- Sachen von Steffen Hirschmann
Implementation and Results
- load estimation and k-d decomposition in ls1 mardyn
- Methods:
- heterogeneous domain
- heterogeneous arch -- Motivation: MAC cluster and other trends (new Jülich cluster?)
- vectorization tuner
- backward calculation (speed from measurements, matrix inverse, ...)
- hetero + vec tuner
- results:
- broad comparison of the different algorithms, clusters and scenarios.
- Neutral Territory/Zonal Methods
- Implementation:
- ZonalMethod classes: Specifying different import/export regions
- MP: needs to be cell-based!
- Neighbor Acquirer: Getting Neighbors from arbitrary Zonal Methods
- Matching Traversals:
- FS, ES, HS: Mainly c08
- MP: own traversal
- NT: own traversal
- Results:
- Scaling results, mostly important for large scale homogeneous experiments.
- MPI optimizations
- overlapping p2p
- overlapping globals (evtl. physik angucken)
- and new WR -> how much was overlapping useful here?
Improving Node-Level Performance using Auto-Tuning
- with context of ls1 mardyn!
Motivation
- during WR: sometimes sliced, sometimes c08 better
- idea:
- can we extend this using auto-tuning
- move force calculation of ls1 mardyn outside and make it tunable
Building Blocks
- Short overview auto-tuning
- auto-vectorization?
- algorithm-selection geht
- nachbarn
- parallelisierung
- datenstrukturen
- weiteres?
Notes:
- technisch und algorithmisch
- maybe merge this with related work, for VerletClusterLists, ...
Related Work
- What do other codes use for better node-level performance:
- lammps:
- verlet-lists
- vectorization (by intel), cuda, kokkos, evtl. andere
- Gromacs:
- Verlet-Cluster lists
- cuda
- FDPS:
- somewhat similar, but different!
- node-level: internally represents an octree
- Which software uses which containers
- Lammps: Kokkos?
- GPU in Gromacs
Implementation and Results
- General
- Grundidee / Motivation, warum nützlich?
- AutoPas library
- short outside overview
- inner workings
- verschiedene Optionen
- Container
- DS
- LC, wenige Traversals
- VL
- VCL, cuda
- Traversals
- und andere ---
- Auto-Tuning, short overview.
- Full-Search
- Full-SearchMPI
- Node-Level results
Enabling Auto-Tuning on the Multi-Node Level
mainly paper from 2020 <-- CITE THIS!
- AutoPas + ls1 + LB
Summary and Outlook
Summary
Outlook
- AutoPas
- potentially update to kokkos for performance portability
- better auto-tuning strategies in development by Fabio
- more tuning options
- multi-centered molecules support
- c++20 concepts for better error handling, ...
- lammps integration for AutoPas is in the work
- ls1-mardyn
- more load balancing libraries with autopas
- adapt everything to AutoPas
Appendix
Potentially:
- CI via Jenkins
- Funny Bug Collection: intel + rundungsfehler
Notes
- welche building blocks brauche ich --> intro
- wofür gibts schon related work
- was gibt es für vorraussetzungen?
- szenarios eher später, also erst vor den ergebnissen
- kapitelnamen anpassen, eventuell ohne Softwarenamen?
- software und algorithmen eng verzahnen, oder, alternativ, erst algo, dann software?
- wo sehe ich meine Hauptbeiträge?
- im wesentlichen bei ls1? -> eng verzahnen
- neuer algorithmus -> nicht eng verzahnen
- => mal aufschreiben, wie ich das sehe