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

Description

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.

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se
Szilárd Páll pall..nosp@m.szil.nosp@m.ard@g.nosp@m.mail.nosp@m..com
Mark Abraham mark..nosp@m.j.ab.nosp@m.raham.nosp@m.@gma.nosp@m.il.co.nosp@m.m
Anca Hamuraru anca@.nosp@m.stre.nosp@m.amcom.nosp@m.puti.nosp@m.ng.eu
Teemu Virolainen teemu.nosp@m.@str.nosp@m.eamco.nosp@m.mput.nosp@m.ing.e.nosp@m.u
Dimitrios Karkoulis dimit.nosp@m.ris..nosp@m.karko.nosp@m.ulis.nosp@m.@gmai.nosp@m.l.co.nosp@m.m

TODO: add more authors!

Files

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.