git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@3804 f3b2605a-c512-4ea7-a41b-209d697bcdaa
81 lines
2.6 KiB
C++
81 lines
2.6 KiB
C++
/* ----------------------------------------------------------------------
|
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
http://lammps.sandia.gov, Sandia National Laboratories
|
|
Steve Plimpton, sjplimp@sandia.gov
|
|
|
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
|
certain rights in this software. This software is distributed under
|
|
the GNU General Public License.
|
|
|
|
See the README file in the top-level LAMMPS directory.
|
|
------------------------------------------------------------------------- */
|
|
|
|
/* ----------------------------------------------------------------------
|
|
Contributing authors: Mike Brown (SNL), wmbrown@sandia.gov
|
|
Peng Wang (Nvidia), penwang@nvidia.com
|
|
Paul Crozier (SNL), pscrozi@sandia.gov
|
|
------------------------------------------------------------------------- */
|
|
|
|
#ifndef PAIR_GPU_CELL_H
|
|
#define PAIR_GPU_CELL_H
|
|
|
|
#ifdef WINDLL
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
#ifdef WINDLL
|
|
#define EXTERN extern "C" __declspec(dllexport)
|
|
#else
|
|
#define EXTERN
|
|
#endif
|
|
using namespace std;
|
|
|
|
static float kernelTime = 0.0;
|
|
static int ncellx, ncelly, ncellz;
|
|
static float *energy, *d_energy;
|
|
static float3 *d_force, *f_temp, *v_temp, *d_virial;
|
|
|
|
|
|
typedef struct {
|
|
float3 *pos;
|
|
unsigned int *idx;
|
|
int *type;
|
|
int *natom;
|
|
} cell_list;
|
|
|
|
static cell_list cell_list_gpu;
|
|
|
|
__global__ void kernel_set_cell_list(unsigned int *cell_idx);
|
|
__global__ void kernel_build_cell_list(float3 *cell_list,
|
|
unsigned int *cell_idx,
|
|
int *cell_type,
|
|
int *cell_atom,
|
|
float3 *pos,
|
|
int *type,
|
|
const int inum,
|
|
const int nall);
|
|
__global__ void kernel_test_rebuild(float3 *cell_list, int *cell_atom, int *rebuild);
|
|
__global__ void kernel_copy_list(float3 *cell_list,
|
|
unsigned int *cell_idx,
|
|
int *cell_atom,
|
|
float3 *pos);
|
|
__global__ void kernel_test_overflow(int *cell_atom, int *overflow, const int ncell);
|
|
void sortBlocks(unsigned int *keys, float3 *values1, int *values2, const int size);
|
|
|
|
void init_cell_list_const(double cell_size, double skin,
|
|
double *boxlo, double *boxhi);
|
|
void init_cell_list(cell_list &cell_list_gpu,
|
|
const int nall,
|
|
const int ncell,
|
|
const int buffer);
|
|
|
|
void build_cell_list(double *atom_pos, int *atom_type,
|
|
cell_list &cell_list_gpu,
|
|
const int ncell, const int ncellx, const int ncelly, const int ncellz,
|
|
const int buffer, const int inum, const int nall, const int ago);
|
|
|
|
void clear_cell_list(cell_list &cell_list_gpu);
|
|
|
|
#endif
|