Gromacs  2024.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Enumerations | Variables
pairlistparams.h File Reference
#include "config.h"
#include "gromacs/mdtypes/locality.h"
#include "gromacs/utility/enumerationhelpers.h"
#include "gromacs/utility/real.h"
+ Include dependency graph for pairlistparams.h:
+ This graph shows which files directly or indirectly include this file:

Description

Declares the PairlistType enum and PairlistParams class.

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

Classes

struct  PairlistParams
 The setup for generating and pruning the nbnxn pair list. More...
 

Enumerations

enum  PairlistType : int {
  Simple4x2, Simple4x4, Simple4x8, HierarchicalNxN,
  Count
}
 The available pair list types.
 

Variables

static constexpr int c_nbnxnCpuIClusterSize = 4
 The i-cluster size for CPU kernels, always 4 atoms.
 
static constexpr int c_nbnxnGpuClusterSize = 8
 The i- and j-cluster size for GPU lists, 8 atoms for CUDA, set at configure time for OpenCL and SYCL.
 
static constexpr int c_gpuNumClusterPerCell
 The number of clusters in a pair-search grid cell for GPU lists. More...
 
static constexpr int c_nbnxnGpuClusterpairSplit = 2
 The number of sub-parts used for data storage for a GPU cluster pair. More...
 
static constexpr int c_nbnxnGpuExclSize
 The fixed size of the exclusion mask array for a half GPU cluster pair. More...
 
static constexpr
gmx::EnumerationArray
< PairlistType, int > 
IClusterSizePerListType
 Gives the i-cluster size for each pairlist type. More...
 
static constexpr
gmx::EnumerationArray
< PairlistType, int > 
JClusterSizePerListType
 Gives the j-cluster size for each pairlist type. More...
 
static constexpr
gmx::EnumerationArray
< PairlistType, bool > 
sc_isGpuPairListType
 True if given pairlist type is used on GPU, false if on CPU. More...
 
static constexpr int c_gpuNumClusterPerCellZ = GMX_GPU_NB_NUM_CLUSTER_PER_CELL_Z
 The number of clusters along a direction in a pair-search grid cell for GPU lists. More...
 
static constexpr int c_gpuNumClusterPerCellY = GMX_GPU_NB_NUM_CLUSTER_PER_CELL_Y
 
static constexpr int c_gpuNumClusterPerCellX = GMX_GPU_NB_NUM_CLUSTER_PER_CELL_X
 

Variable Documentation

constexpr int c_gpuNumClusterPerCell
static
Initial value:
=
c_gpuNumClusterPerCellZ * c_gpuNumClusterPerCellY * c_gpuNumClusterPerCellX
static constexpr int c_gpuNumClusterPerCellZ
The number of clusters along a direction in a pair-search grid cell for GPU lists.
Definition: pairlistparams.h:72

The number of clusters in a pair-search grid cell for GPU lists.

constexpr int c_gpuNumClusterPerCellZ = GMX_GPU_NB_NUM_CLUSTER_PER_CELL_Z
static

The number of clusters along a direction in a pair-search grid cell for GPU lists.

Typically all 2, but X can be 1 when targeting Intel Ponte Vecchio

constexpr int c_nbnxnGpuClusterpairSplit = 2
static

The number of sub-parts used for data storage for a GPU cluster pair.

In CUDA the number of threads in a warp is 32 and we have cluster pairs of 8*8=64 atoms, so it's convenient to store data for cluster pair halves, i.e. split in 2.

On architectures with 64-wide execution however it is better to avoid splitting (e.g. AMD GCN, CDNA and later).

constexpr int c_nbnxnGpuExclSize
static
Initial value:
=
static constexpr int c_nbnxnGpuClusterSize
The i- and j-cluster size for GPU lists, 8 atoms for CUDA, set at configure time for OpenCL and SYCL...
Definition: pairlistparams.h:65
static constexpr int c_nbnxnGpuClusterpairSplit
The number of sub-parts used for data storage for a GPU cluster pair.
Definition: pairlistparams.h:93

The fixed size of the exclusion mask array for a half GPU cluster pair.

constexpr gmx::EnumerationArray<PairlistType, int> IClusterSizePerListType
static
Initial value:
= {
}
static constexpr int c_nbnxnGpuClusterSize
The i- and j-cluster size for GPU lists, 8 atoms for CUDA, set at configure time for OpenCL and SYCL...
Definition: pairlistparams.h:65
static constexpr int c_nbnxnCpuIClusterSize
The i-cluster size for CPU kernels, always 4 atoms.
Definition: pairlistparams.h:59

Gives the i-cluster size for each pairlist type.

constexpr gmx::EnumerationArray<PairlistType, int> JClusterSizePerListType
static
Initial value:
= {
{ 2, 4, 8, c_nbnxnGpuClusterSize }
}
static constexpr int c_nbnxnGpuClusterSize
The i- and j-cluster size for GPU lists, 8 atoms for CUDA, set at configure time for OpenCL and SYCL...
Definition: pairlistparams.h:65

Gives the j-cluster size for each pairlist type.

constexpr gmx::EnumerationArray<PairlistType, bool> sc_isGpuPairListType
static
Initial value:
= {
{ false, false, false, true }
}

True if given pairlist type is used on GPU, false if on CPU.