* the research papers on the package. Check out http://www.gromacs.org.
*/
-#ifndef _nbnxn_pairlist_h
-#define _nbnxn_pairlist_h
+#ifndef GMX_NBNXM_PAIRLIST_H
+#define GMX_NBNXM_PAIRLIST_H
#include "config.h"
#include "gromacs/gpu_utils/hostallocator.h"
#include "gromacs/math/vectypes.h"
-#include "gromacs/mdlib/nbnxn_consts.h"
#include "gromacs/mdtypes/nblist.h"
#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/bitmask.h"
#include "gromacs/utility/defaultinitializationallocator.h"
#include "gromacs/utility/real.h"
+// This file with constants is separate from this file to be able
+// to include it during OpenCL jitting without including config.h
+#include "gromacs/nbnxm/constants.h"
+
struct NbnxnPairlistCpuWork;
struct NbnxnPairlistGpuWork;
struct tMPI_Atomic;
static constexpr int c_gpuNumClusterPerCellX = 2;
static constexpr int c_gpuNumClusterPerCell = c_gpuNumClusterPerCellZ*c_gpuNumClusterPerCellY*c_gpuNumClusterPerCellX;
+
/* 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.
*/
gmx_cache_protect_t cp1;
};
-typedef struct {
+struct nbnxn_pairlist_set_t
+{
int nnbl; /* number of lists */
NbnxnPairlistCpu **nbl; /* lists for CPU */
NbnxnPairlistCpu **nbl_work; /* work space for rebalancing lists */
int natpair_q; /* Total number of atom pairs for Q kernel */
t_nblist **nbl_fep; /* List of free-energy atom pair interactions */
int64_t outerListCreationStep; /* Step at which the outer list was created */
-} nbnxn_pairlist_set_t;
+};
enum {
nbatXYZ, nbatXYZQ, nbatX4, nbatX8