Gromacs  2020.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Enumerations | Functions | Variables
pull_internal.h File Reference
#include "config.h"
#include <memory>
#include <vector>
#include "gromacs/domdec/localatomset.h"
#include "gromacs/mdtypes/pull_params.h"
#include "gromacs/utility/gmxmpi.h"
+ Include dependency graph for pull_internal.h:
+ This graph shows which files directly or indirectly include this file:

Description

This file contains datatypes and function declarations for internal use in the pull code.

Author
Berk Hess

Classes

struct  pull_group_work_t
 Pull group data used during pulling. More...
 

Enumerations

enum  { epgrppbcNONE, epgrppbcREFAT, epgrppbcCOS, epgrppbcPREVSTEPCOM }
 

Functions

void setPrevStepPullComFromState (struct pull_t *pull, const t_state *state)
 Copies the pull group COM of the previous step from the checkpoint state to the pull state. More...
 
void allocStatePrevStepPullCom (t_state *state, const pull_t *pull)
 Resizes the vector, in the state container, containing the COMs from the previous step. More...
 

Variables

static const int c_pullMaxNumLocalAtomsSingleThreaded = 1
 Determines up to what local atom count a pull group gets processed single-threaded. More...
 
static constexpr int c_comBufferStride = 3
 The normal COM buffer needs 3 elements per group.
 
static constexpr int c_cylinderBufferStride = 9
 The cylinder buffer needs 9 elements per group.
 

Function Documentation

void allocStatePrevStepPullCom ( t_state state,
const pull_t *  pull 
)

Resizes the vector, in the state container, containing the COMs from the previous step.

Parameters
[in]stateThe global state container
[in]pullThe COM pull force calculation data structure
void setPrevStepPullComFromState ( struct pull_t *  pull,
const t_state state 
)

Copies the pull group COM of the previous step from the checkpoint state to the pull state.

Parameters
[in]pullThe COM pull force calculation data structure
[in]stateThe global state container

Variable Documentation

const int c_pullMaxNumLocalAtomsSingleThreaded = 1
static

Determines up to what local atom count a pull group gets processed single-threaded.

We set this limit to 1 with debug to catch bugs. On Haswell with GCC 5 the cross-over point is around 400 atoms, independent of thread count and hyper-threading.