Gromacs  2019-beta2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Short-range non-bonded interaction module
+ Collaboration diagram for Short-range non-bonded interaction module:


Computes forces and energies for short-range pair-interactions based on the Verlet algorithm. The algorithm uses pair-lists generated at fixed intervals as well as various flavors of pair interaction kernels implemented for a wide range of CPU and GPU architectures.

The module includes support for flavors of Coulomb and Lennard-Jones interaction treatment implemented for a large range of SIMD instruction sets for CPU architectures as well as in CUDA and OpenCL for GPU architectures. Additionally there is a reference CPU non-SIMD and a reference CPU for GPU pair-list setup interaction kernel.

The implementation of the kernels is based on the cluster non-bonded algorithm which in the code is referred to as the NxN algorithms ("nbnxn_" prefix); for details of the algorithm see DOI:10.1016/j.cpc.2013.06.003.

Algorithmically, the non-bonded computation has two different modes: A "classical" mode: generate a list every nstlist steps containing at least all atom pairs up to a distance of rlistOuter and compute pair interactions for all pairs that are within the interaction cut-off. A "dynamic pruning" mode: generate an "outer-list" up to cut-off rlistOuter every nstlist steps and prune the outer-list using a cut-off of rlistInner every nstlistPrune steps to obtain a, smaller, "inner-list". This results in fewer interaction computations and allows for a larger nstlist. On a GPU, this dynamic pruning is performed in a rolling fashion, pruning only a sub-part of the list each (second) step. This way it can often overlap with integration and constraints on the CPU. Currently a simple heuristic determines which mode will be used.

TODO: add a summary list and brief descriptions of the different submodules: search, CPU kernels, GPU glue code + kernels.

Berk Hess
Szilárd Páll
Mark Abraham
Anca Hamuraru
Teemu Virolainen
Dimitrios Karkoulis

TODO: add more authors!


file  nb_verlet.h
 This file contains the public interface of the non-bonded Verlet module that implements the NxN cluster non-bonded algorithm to efficiently compute pair forces.
file  nbnxn_tuning.cpp
 Implements functions for tuning adjustable parameters for the nbnxn non-bonded search and interaction kernels.
file  nbnxn_tuning.h
 Declares functions for tuning adjustable parameters for the nbnxn non-bonded search and interaction kernels.