Gromacs  2024.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Files
Spatial domain decomposition (for parallelization over MPI)
+ Collaboration diagram for Spatial domain decomposition (for parallelization over MPI):

Description

Manages the decomposition of the simulation volume over MPI ranks to try to distribute work evenly with minimal communication overheads.

Todo:
Get domdec stuff out of mdtypes/commrec.h
Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

Classes

class  gmx::LocalAtomSet
 A local atom set collects local, global and collective indices of the home atoms on a rank. The indices of the home atoms are automatically updated during domain decomposition, thus gmx::LocalAtomSet::localIndex enables iteration over local atoms properties like coordinates or forces. TODO: add a LocalAtomSet iterator. More...
 
class  gmx::LocalAtomSetManager
 Hands out handles to local atom set indices and triggers index recalculation for all sets upon domain decomposition if run in parallel. More...
 

Files

file  atomdistribution.h
 Declares the AtomDistribution struct.
 
file  box.cpp
 This file defines functions used by the domdec module for (bounding) box and pbc information generation.
 
file  box.h
 This file declares functions used by the domdec module for (bounding) box and pbc information generation.
 
file  builder.h
 This file declares a builder class for the manager of domain decomposition.
 
file  cellsizes.h
 Declares DD cell-size related functions.
 
file  collect.h
 Declares functions to collect state data to the main rank.
 
file  computemultibodycutoffs.cpp
 This file defines functions used by the domdec module while managing the construction, use and error checking for topologies local to a DD rank.
 
file  computemultibodycutoffs.h
 This file declares the function for computing the required cutoff distance for inter-domain multi-body interactions, when those exist.
 
file  distribute.h
 Declares the atom distribution function.
 
file  dlb.cpp
 This file implements functions to interact with the dynamic load balancing machinery.
 
file  dlb.h
 This file declares functions to interact with the dynamic load balancing machinery.
 
file  dlbtiming.h
 This file declares functions for timing the load imbalance due to domain decomposition.
 
file  domdec.h
 This file declares functions for mdrun to call to manage the details of its domain decomposition.
 
file  domdec_constraints.cpp
 This file implements functions for domdec to use while managing inter-atomic constraints.
 
file  domdec_constraints.h
 This file declares functions for domdec to use while managing inter-atomic constraints.
 
file  domdec_internal.h
 Declares implementation functions and types for the domain decomposition module.
 
file  domdec_network.cpp
 This file defines functions for (mostly) the domdec module to use MPI functionality.
 
file  domdec_network.h
 This file declares functions for (mostly) the domdec module to use MPI functionality.
 
file  domdec_setup.cpp
 This file defines functions used by the domdec module in its initial setup phase.
 
file  domdec_setup.h
 Declares functions for choosing the DD grid setup.
 
file  domdec_specatomcomm.cpp
 This file implements functions for domdec to use while managing inter-atomic constraints.
 
file  domdec_specatomcomm.h
 This file declares functions for domdec to use while managing communication of atoms required for special purposes.
 
file  domdec_struct.h
 Declares structures related to domain decomposition.
 
file  domdec_vsite.cpp
 This file implements functions for domdec to use while managing inter-atomic constraints.
 
file  domdec_vsite.h
 This file declares functions for domdec to use while managing virtual sites.
 
file  dump.cpp
 This file definees functions for DD to write PDB files e.g. when reporting problems.
 
file  dump.h
 This file declares functions for DD to write PDB files e.g. when reporting problems.
 
file  ga2la.cpp
 Implements functions for mapping from global to local atom indices.
 
file  ga2la.h
 Defines structures and functions for mapping from global to local atom indices. The functions are performance critical and should be inlined.
 
file  gpuhaloexchange.h
 Declaration of GPU halo exchange.
 
file  gpuhaloexchange_impl.cpp
 May be used to implement Domdec CUDA interfaces for non-GPU builds.
 
file  gpuhaloexchange_impl_gpu.cpp
 Implements shared code for GPU halo exchange.
 
file  gpuhaloexchange_impl_gpu.h
 Declares the implementation of GPU Halo Exchange.
 
file  gpuhaloexchange_impl_gpu_sycl.cpp
 Implements GPU halo exchange using SYCL.
 
file  hashedmap.h
 Defines structures and functions for mapping from keys to entries indices using a hash table. The functions are performance critical and should be inlined.
 
file  localatomset.cpp
 Implements classes in LocalAtomSet.h.
 
file  localatomset.h
 Declares gmx::LocalAtomSet.
 
file  localatomsetdata.cpp
 Declares gmx::internal::LocalAtomSetDataData.
 
file  localatomsetdata.h
 Declares gmx::internal::LocalAtomSetData.
 
file  localatomsetmanager.cpp
 Implements classes in LocalAtomSetmanager.h.
 
file  localatomsetmanager.h
 Declares gmx::LocalAtomSetManager.
 
file  localtopology.cpp
 This file defines functions used by the domdec module while building topologies local to a domain.
 
file  localtopology.h
 This file makes declarations used for building the local topology.
 
file  localtopologychecker.cpp
 This file defines functions used by the domdec module while managing the construction, use and error checking for topologies local to a DD rank.
 
file  localtopologychecker.h
 This file declares functionality for checking whether local topologies describe all bonded interactions.
 
 
 
file  mdsetup.h
 Contains functions relevant to simulation setup in MD drivers.
 
file  options.h
 This file declares command-line options for mdrun related to domain decomposition.
 
file  partition.cpp
 This file defines functions for mdrun to call to make a new domain decomposition, and check it.
 
file  partition.h
 This file declares functions for mdrun to call to make a new domain decomposition, and check it.
 
file  redistribute.h
 Declares the atom redistribution function.
 
file  reversetopology.cpp
 This file defines functions used in making the reverse topology.
 
file  reversetopology.h
 This file makes declarations used for building the reverse topology.
 
file  haloexchange_mpi.cpp
 Tests for the halo exchange.
 
file  hashedmap.cpp
 Tests for the HashedMap class.
 
file  localatomsetmanager.cpp
 Tests for general functionality in gmx::LocalAtomSetManager and gmx::LocalAtomSet, which is only accesible through the manager.
 
file  utility.cpp
 Declares utility functions used in the domain decomposition module.
 
file  utility.h
 Declares utility functions used in the domain decomposition module.