AutoPas  3.0.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Friends | List of all members
autopas::LiveInfo Class Reference

This class is able to gather and store important information for a tuning phase from a container and functor. More...

#include <LiveInfo.h>

Public Types

using InfoType = std::variant< bool, double, size_t, ContainerOption, TraversalOption, LoadEstimatorOption, DataLayoutOption, Newton3Option >
 The type of an info.
 

Public Member Functions

 LiveInfo ()=default
 Constructor.
 
 LiveInfo (size_t numOwnedParticles, size_t numHaloParticles, double cutoff, double skin, double domainSizeX, double domainSizeY, double domainSizeZ, size_t particleSize, size_t threadCount, size_t rebuildFrequency, size_t numCells, size_t numEmptyCells, size_t minParticlesPerCell, size_t maxParticlesPerCell, size_t medianParticlesPerCell, size_t lowerQuartileParticlesPerCell, size_t upperQuartileParticlesPerCell, double meanParticlesPerCell, double particlesPerCellStdDev, double relativeParticlesPerCellStdDev, size_t estimatedNumNeighborInteractions, double particleDependentBinMaxDensity, double particleDependentBinDensityStdDev, size_t maxParticlesPerBlurredBin, size_t minParticlesPerBlurredBin, size_t medianParticlesPerBlurredBin, size_t lowerQuartileParticlesPerBlurredBin, size_t upperQuartileParticlesPerBlurredBin, double meanParticlesPerBlurredBin, double particlesPerBlurredBinStdDev, double relativeParticlesPerBlurredBinStdDev)
 Constructor for LiveInfo using the parameters.
 
template<class Particle_T >
void gather (ContainerIterator< Particle_T, true, false > particleIter, size_t rebuildFrequency, size_t numOwnedParticles, std::array< double, 3 > boxMin, std::array< double, 3 > boxMax, double cutoff, double skin)
 Gathers key statistics that define the computational profile of the simulation, in order to provide lower dimensional and human understandable inputs for the tuning strategies.
 
const auto & get () const
 Returns a map of all infos.
 
template<typename T >
get (const std::string &key) const
 Gets a single value from the infos that corresponds to the given string.
 
std::string toString () const
 Creates a string containing all live info gathered.
 
std::pair< std::string, std::string > getCSVLine () const
 Generate a csv representation containing all values from the toString() method.
 

Friends

std::ostream & operator<< (std::ostream &out, const LiveInfo &info)
 Stream operator to write the LiveInfo to a stream.
 
std::istream & operator>> (std::istream &in, LiveInfo &info)
 Stream operator to read the LiveInfo in from a stream.
 

Detailed Description

This class is able to gather and store important information for a tuning phase from a container and functor.

Infos are identified by a string. Their type is InfoType.

Constructor & Destructor Documentation

◆ LiveInfo()

autopas::LiveInfo::LiveInfo ( size_t  numOwnedParticles,
size_t  numHaloParticles,
double  cutoff,
double  skin,
double  domainSizeX,
double  domainSizeY,
double  domainSizeZ,
size_t  particleSize,
size_t  threadCount,
size_t  rebuildFrequency,
size_t  numCells,
size_t  numEmptyCells,
size_t  minParticlesPerCell,
size_t  maxParticlesPerCell,
size_t  medianParticlesPerCell,
size_t  lowerQuartileParticlesPerCell,
size_t  upperQuartileParticlesPerCell,
double  meanParticlesPerCell,
double  particlesPerCellStdDev,
double  relativeParticlesPerCellStdDev,
size_t  estimatedNumNeighborInteractions,
double  particleDependentBinMaxDensity,
double  particleDependentBinDensityStdDev,
size_t  maxParticlesPerBlurredBin,
size_t  minParticlesPerBlurredBin,
size_t  medianParticlesPerBlurredBin,
size_t  lowerQuartileParticlesPerBlurredBin,
size_t  upperQuartileParticlesPerBlurredBin,
double  meanParticlesPerBlurredBin,
double  particlesPerBlurredBinStdDev,
double  relativeParticlesPerBlurredBinStdDev 
)
inline

Constructor for LiveInfo using the parameters.

Parameters
numOwnedParticlesThe number of owned particles.
numHaloParticlesThe number of halo particles.
cutoffThe cutoff radius.
skinThe skin radius.
domainSizeXThe size of the domain in x direction.
domainSizeYThe size of the domain in y direction.
domainSizeZThe size of the domain in z direction.
particleSizeThe size of a particle in bytes.
threadCountThe number of threads used.
rebuildFrequencyThe rebuild frequency of the neighbor lists.
numCellsThe number of cells in the container.
numEmptyCellsThe number of empty cells in the container.
minParticlesPerCellThe minimum number of particles in a cell.
maxParticlesPerCellThe maximum number of particles in a cell.
medianParticlesPerCellThe median number of particles in a cell.
lowerQuartileParticlesPerCellThe lower quartile of particles per cell.
upperQuartileParticlesPerCellThe upper quartile of particles per cell.
meanParticlesPerCellThe mean number of particles per cell.
particlesPerCellStdDevThe standard deviation of particles per cell.
relativeParticlesPerCellStdDevThe relative standard deviation of particles per cell. (mean normalized)
estimatedNumNeighborInteractionsThe estimated number of neighbor interactions.
particleDependentBinMaxDensityThe maximum density of the particle-dependent bin structure.
particleDependentBinDensityStdDevThe standard deviation of the densities of the particle-dependent bin structure.
maxParticlesPerBlurredBinThe maximum number of particles in a blurred bin.
minParticlesPerBlurredBinThe minimum number of particles in a blurred bin.
medianParticlesPerBlurredBinThe median number of particles in a blurred bin.
lowerQuartileParticlesPerBlurredBinThe lower quartile of particles per blurred bin.
upperQuartileParticlesPerBlurredBinThe upper quartile of particles per blurred bin.
meanParticlesPerBlurredBinThe mean number of particles in a blurred bin.
particlesPerBlurredBinStdDevThe standard deviation of particles per blurred bin.
relativeParticlesPerBlurredBinStdDevThe relative standard deviation of particles per blurred bin. (mean normalized)

Member Function Documentation

◆ gather()

template<class Particle_T >
void autopas::LiveInfo::gather ( ContainerIterator< Particle_T, true, false >  particleIter,
size_t  rebuildFrequency,
size_t  numOwnedParticles,
std::array< double, 3 >  boxMin,
std::array< double, 3 >  boxMax,
double  cutoff,
double  skin 
)
inline

Gathers key statistics that define the computational profile of the simulation, in order to provide lower dimensional and human understandable inputs for the tuning strategies.

A lot of the information is based on a couple of different spatial bin resolutions:

  • cells: Bin dimensions are the same as cells in the Linked Cells container with CSF 1.
  • particleDependentBins: Bin dimensions are designed such that the are approximately 10 particles per bin.
  • blurredBins: The domain is divided equally into 3x3x3 "blurred" bins
Note
It is not clear how useful the statistics derived from the particleDependentBins are, as the "resolution" varies depending on the number of particles. E.g. Consider a sparse simulation with a "macroscopic" heterogeneity and a dense simulation with a "microscopic" heterogeneity but at a "macroscopic" level is rather homogeneous. These could have the same particleDependentBin homogeneity (relative std. dev. of bin counts) but would respond to traversals very differently. This could, however, provide a useful metric for homogeneity which is somewhat independent of particle density (e.g. could be useful for determining the best traversal with one statistic independently of what cell-size factor is chosen)

Currently, it provides: -— Bin Independent Statistics -—

  • numOwnedParticles: The number of particles in the container that are marked as owned.
  • numHaloParticles: The number of particles in the container that are marked as halo.
  • cutoff: The configured cutoff radius.
  • skin: The configured skin radius.
  • domainSizeX: The size of the domain on the x-axis.
  • domainSizeY: The size of the domain on the y-axis.
  • domainSizeZ: The size of the domain on the z-axis.
  • particleSize: The number of bytes one particle in AoS layout needs.
  • threadCount: The number of OMP threads that can be used.
  • rebuildFrequency: The current verlet-rebuild-frequency of the simulation. -— Cell Statistics -—
  • numCells: The number of cell-bins in the domain.
  • numEmptyCells: The number of cell-bins that are empty.
  • minParticlesPerCell: The minimum number of particles in a cell-bin.
  • maxParticlesPerCell: The maximum number of particles in a cell-bin.
  • medianParticlesPerCell: The median number of particles per cell-bin.
  • lowerQuartileParticlesPerCell: The lower quartile number of particles per cell-bin.
  • upperQuartileParticlesPerCell: The upper quartile number of particles per cell-bin.
  • meanParticlesPerCell: The average number of particles per cell-bin.
  • particlesPerCellStdDev: The standard deviation in the number of particles per cell-bin.
  • relativeParticlesPerCellStdDev: The, relative to the mean, standard deviation in the number of particles per cell-bin.
  • estimatedNumNeighborInteractions: Rough estimation of number of neighbor interactions. Assumes that neighboring cell-bins contain roughly the same number of particles. Estimation does not work well if this is not the case. -— Particle Dependent Bin Statistics -—
  • particleDependentBinMaxDensity: The maximum density of particles of a particle-dependent bin.
  • particleDependentBinDensityStdDev: The standard deviation in the density of particles per particle-dependent bin. In earlier versions of AutoPas, this was referred to as "Homogeneity". -— Blurred Bin Statistics -—
  • maxParticlesPerBlurredBin: The maximum number of particles in a blurred bin.
  • minParticlesPerBlurredBin: The minimum number of particles in a blurred bin.
  • medianParticlesPerBlurredBin: The median number of particles per blurred bin.
  • lowerQuartileParticlesPerBlurredBin: The lower quartile number of particles per blurred bin.
  • upperQuartileParticlesPerBlurredBin: The upper quartile number of particles per blurred bin.
  • meanParticlesPerBlurredBin: The mean number of particles per blurred bin.
  • particlesPerBlurredBinStdDev: The standard deviation in the number of particles per blurred bin.
  • relativeParticlesPerBlurredBinStdDev: The, relative to the mean, standard deviation in the number of particles per blurred bin.
Template Parameters
Particle_TThe type of particle the container stores.
Parameters
particleIterIterator to the first particle in the AutoPas container.
rebuildFrequencyThe current verlet rebuild frequency that is used in the simulation.
numOwnedParticlesThe number of owned particles in the container.
boxMinLower left corner of (sub)domain.
boxMaxUpper right corner of (sub)domain.
cutoffThe cutoff.
skinThe (Verlet) skin.

◆ get() [1/2]

const auto & autopas::LiveInfo::get ( ) const
inline

Returns a map of all infos.

Returns
A map of all infos.

◆ get() [2/2]

template<typename T >
T autopas::LiveInfo::get ( const std::string &  key) const
inline

Gets a single value from the infos that corresponds to the given string.

Template Parameters
Treturn type
Parameters
keystring key for the infos map
Returns

◆ getCSVLine()

std::pair< std::string, std::string > autopas::LiveInfo::getCSVLine ( ) const
inline

Generate a csv representation containing all values from the toString() method.

Since the keys are not necessarily known in advance, this method generates a CSV header and a CSV line.

Returns
A pair of strings in the form of (header, line).

◆ toString()

std::string autopas::LiveInfo::toString ( ) const
inline

Creates a string containing all live info gathered.

Returns
A string containing all live info gathered.

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  out,
const LiveInfo info 
)
friend

Stream operator to write the LiveInfo to a stream.

Parameters
out
info
Returns

◆ operator>>

std::istream & operator>> ( std::istream &  in,
LiveInfo info 
)
friend

Stream operator to read the LiveInfo in from a stream.

Parameters
in
info
Returns

The documentation for this class was generated from the following file: