changed file names and added a lj12-5 function type in KOKKOS pkg.
This commit is contained in:
@ -292,8 +292,8 @@ action pair_lj_gromacs_coul_gromacs_kokkos.cpp pair_lj_gromacs_coul_gromacs.cpp
|
||||
action pair_lj_gromacs_coul_gromacs_kokkos.h pair_lj_gromacs_coul_gromacs.h
|
||||
action pair_lj_gromacs_kokkos.cpp pair_lj_gromacs.cpp
|
||||
action pair_lj_gromacs_kokkos.h pair_lj_gromacs.h
|
||||
action pair_lj_sdk_kokkos.cpp pair_lj_sdk.cpp
|
||||
action pair_lj_sdk_kokkos.h pair_lj_sdk.h
|
||||
action pair_lj_spica_kokkos.cpp pair_lj_spica.cpp
|
||||
action pair_lj_spica_kokkos.h pair_lj_spica.h
|
||||
action pair_meam_kokkos.cpp pair_meam.cpp
|
||||
action pair_meam_kokkos.h pair_meam.h
|
||||
action pair_morse_kokkos.cpp
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "pair_lj_sdk_kokkos.h"
|
||||
#include "pair_lj_spica_kokkos.h"
|
||||
|
||||
#include "atom_kokkos.h"
|
||||
#include "atom_masks.h"
|
||||
@ -26,13 +26,13 @@
|
||||
#include "respa.h"
|
||||
#include "update.h"
|
||||
|
||||
#include "lj_sdk_common.h"
|
||||
#include "lj_spica_common.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace LJSDKParms;
|
||||
using namespace LJSPICAParms;
|
||||
|
||||
#define KOKKOS_CUDA_MAX_THREADS 256
|
||||
#define KOKKOS_CUDA_MIN_BLOCKS 8
|
||||
@ -40,7 +40,7 @@ using namespace LJSDKParms;
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
PairLJSDKKokkos<DeviceType>::PairLJSDKKokkos(LAMMPS *lmp) : PairLJSDK(lmp)
|
||||
PairLJSPICAKokkos<DeviceType>::PairLJSPICAKokkos(LAMMPS *lmp) : PairLJSPICA(lmp)
|
||||
{
|
||||
respa_enable = 0;
|
||||
|
||||
@ -54,7 +54,7 @@ PairLJSDKKokkos<DeviceType>::PairLJSDKKokkos(LAMMPS *lmp) : PairLJSDK(lmp)
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
PairLJSDKKokkos<DeviceType>::~PairLJSDKKokkos()
|
||||
PairLJSPICAKokkos<DeviceType>::~PairLJSPICAKokkos()
|
||||
{
|
||||
if (copymode) return;
|
||||
|
||||
@ -68,7 +68,7 @@ PairLJSDKKokkos<DeviceType>::~PairLJSDKKokkos()
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairLJSDKKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
void PairLJSPICAKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
{
|
||||
eflag = eflag_in;
|
||||
vflag = vflag_in;
|
||||
@ -112,7 +112,7 @@ void PairLJSDKKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
|
||||
// loop over neighbors of my atoms
|
||||
|
||||
EV_FLOAT ev = pair_compute<PairLJSDKKokkos<DeviceType>,void >(this,(NeighListKokkos<DeviceType>*)list);
|
||||
EV_FLOAT ev = pair_compute<PairLJSPICAKokkos<DeviceType>,void >(this,(NeighListKokkos<DeviceType>*)list);
|
||||
|
||||
if (eflag) eng_vdwl += ev.evdwl;
|
||||
if (vflag_global) {
|
||||
@ -141,7 +141,7 @@ void PairLJSDKKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
template<class DeviceType>
|
||||
template<bool STACKPARAMS, class Specialisation>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
F_FLOAT PairLJSDKKokkos<DeviceType>::
|
||||
F_FLOAT PairLJSPICAKokkos<DeviceType>::
|
||||
compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const {
|
||||
(void) i;
|
||||
(void) j;
|
||||
@ -167,19 +167,25 @@ compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, c
|
||||
const double r6inv = r2inv*r2inv*r2inv;
|
||||
return r6inv*(lj_1*r6inv - lj_2) * r2inv;
|
||||
|
||||
} else if (ljt == LJ12_5) {
|
||||
|
||||
const F_FLOAT r5inv = r2inv*r2inv*sqrt(r2inv);
|
||||
const F_FLOAT r7inv = r5inv*r2inv;
|
||||
return r5inv*(lj_1*r7inv - lj_2) * r2inv;
|
||||
|
||||
}
|
||||
if (ljt!=LJ12_4 && ljt!=LJ9_6 && ljt!=LJ12_6) return 0.0;*/
|
||||
if (ljt!=LJ12_4 && ljt!=LJ9_6 && ljt!=LJ12_6 && ljt!=LJ12_5) return 0.0;*/
|
||||
const F_FLOAT r4inv=r2inv*r2inv;
|
||||
const F_FLOAT r6inv=r2inv*r4inv;
|
||||
const F_FLOAT a = ljt==LJ12_4?r4inv:r6inv;
|
||||
const F_FLOAT b = ljt==LJ12_4?r4inv:(ljt==LJ9_6?1.0/sqrt(r2inv):r2inv);
|
||||
const F_FLOAT a = ljt==LJ12_4?r4inv:(ljt==LJ12_5?r4inv*sqrt(r2inv):r6inv);
|
||||
const F_FLOAT b = ljt==LJ12_4?r4inv:(ljt==LJ9_6?1.0/sqrt(r2inv):(ljt==LJ12_5?r2inv*sqrt(r2inv):r2inv));
|
||||
return a* ( lj_1*r6inv*b - lj_2 * r2inv);
|
||||
}
|
||||
|
||||
template<class DeviceType>
|
||||
template<bool STACKPARAMS, class Specialisation>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
F_FLOAT PairLJSDKKokkos<DeviceType>::
|
||||
F_FLOAT PairLJSPICAKokkos<DeviceType>::
|
||||
compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const {
|
||||
(void) i;
|
||||
(void) j;
|
||||
@ -203,6 +209,11 @@ compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, c
|
||||
} else if (ljt == LJ12_6) {
|
||||
const double r6inv = r2inv*r2inv*r2inv;
|
||||
return r6inv*(lj_3*r6inv - lj_4) - offset;
|
||||
|
||||
} else if (ljt == LJ12_5) {
|
||||
const F_FLOAT r5inv = r2inv*r2inv*sqrt(r2inv);
|
||||
const F_FLOAT r7inv = r5inv*r2inv;
|
||||
return r5inv*(lj_3*r7inv - lj_4) - offset;
|
||||
} else
|
||||
return 0.0;
|
||||
}
|
||||
@ -212,15 +223,15 @@ compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, c
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairLJSDKKokkos<DeviceType>::allocate()
|
||||
void PairLJSPICAKokkos<DeviceType>::allocate()
|
||||
{
|
||||
PairLJSDK::allocate();
|
||||
PairLJSPICA::allocate();
|
||||
|
||||
int n = atom->ntypes;
|
||||
memory->destroy(cutsq);
|
||||
memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq");
|
||||
d_cutsq = k_cutsq.template view<DeviceType>();
|
||||
k_params = Kokkos::DualView<params_lj**,Kokkos::LayoutRight,DeviceType>("PairLJSDK::params",n+1,n+1);
|
||||
k_params = Kokkos::DualView<params_lj**,Kokkos::LayoutRight,DeviceType>("PairLJSPICA::params",n+1,n+1);
|
||||
params = k_params.template view<DeviceType>();
|
||||
}
|
||||
|
||||
@ -229,11 +240,11 @@ void PairLJSDKKokkos<DeviceType>::allocate()
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairLJSDKKokkos<DeviceType>::settings(int narg, char **arg)
|
||||
void PairLJSPICAKokkos<DeviceType>::settings(int narg, char **arg)
|
||||
{
|
||||
if (narg > 2) error->all(FLERR,"Illegal pair_style command");
|
||||
|
||||
PairLJSDK::settings(1,arg);
|
||||
PairLJSPICA::settings(1,arg);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
@ -241,9 +252,9 @@ void PairLJSDKKokkos<DeviceType>::settings(int narg, char **arg)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairLJSDKKokkos<DeviceType>::init_style()
|
||||
void PairLJSPICAKokkos<DeviceType>::init_style()
|
||||
{
|
||||
PairLJSDK::init_style();
|
||||
PairLJSPICA::init_style();
|
||||
|
||||
// error if rRESPA with inner levels
|
||||
|
||||
@ -270,9 +281,9 @@ void PairLJSDKKokkos<DeviceType>::init_style()
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
double PairLJSDKKokkos<DeviceType>::init_one(int i, int j)
|
||||
double PairLJSPICAKokkos<DeviceType>::init_one(int i, int j)
|
||||
{
|
||||
double cutone = PairLJSDK::init_one(i,j);
|
||||
double cutone = PairLJSPICA::init_one(i,j);
|
||||
|
||||
k_params.h_view(i,j).lj1 = lj1[i][j];
|
||||
k_params.h_view(i,j).lj2 = lj2[i][j];
|
||||
@ -297,9 +308,9 @@ double PairLJSDKKokkos<DeviceType>::init_one(int i, int j)
|
||||
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
template class PairLJSDKKokkos<LMPDeviceType>;
|
||||
template class PairLJSPICAKokkos<LMPDeviceType>;
|
||||
#ifdef LMP_KOKKOS_GPU
|
||||
template class PairLJSDKKokkos<LMPHostType>;
|
||||
template class PairLJSPICAKokkos<LMPHostType>;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -13,31 +13,34 @@
|
||||
|
||||
#ifdef PAIR_CLASS
|
||||
// clang-format off
|
||||
PairStyle(lj/sdk/kk,PairLJSDKKokkos<LMPDeviceType>);
|
||||
PairStyle(lj/sdk/kk/device,PairLJSDKKokkos<LMPDeviceType>);
|
||||
PairStyle(lj/sdk/kk/host,PairLJSDKKokkos<LMPHostType>);
|
||||
PairStyle(lj/spica/kk,PairLJSPICAKokkos<LMPDeviceType>);
|
||||
PairStyle(lj/spica/kk/device,PairLJSPICAKokkos<LMPDeviceType>);
|
||||
PairStyle(lj/spica/kk/host,PairLJSPICAKokkos<LMPHostType>);
|
||||
PairStyle(lj/sdk/kk,PairLJSPICAKokkos<LMPDeviceType>);
|
||||
PairStyle(lj/sdk/kk/device,PairLJSPICAKokkos<LMPDeviceType>);
|
||||
PairStyle(lj/sdk/kk/host,PairLJSPICAKokkos<LMPHostType>);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
// clang-format off
|
||||
#ifndef LMP_PAIR_LJ_SDK_KOKKOS_H
|
||||
#define LMP_PAIR_LJ_SDK_KOKKOS_H
|
||||
#ifndef LMP_PAIR_LJ_SPICA_KOKKOS_H
|
||||
#define LMP_PAIR_LJ_SPICA_KOKKOS_H
|
||||
|
||||
#include "pair_kokkos.h"
|
||||
#include "pair_lj_sdk.h"
|
||||
#include "pair_lj_spica.h"
|
||||
#include "neigh_list_kokkos.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
template<class DeviceType>
|
||||
class PairLJSDKKokkos : public PairLJSDK {
|
||||
class PairLJSPICAKokkos : public PairLJSPICA {
|
||||
public:
|
||||
enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF};
|
||||
enum {COUL_FLAG=0};
|
||||
typedef DeviceType device_type;
|
||||
typedef ArrayTypes<DeviceType> AT;
|
||||
PairLJSDKKokkos(class LAMMPS *);
|
||||
~PairLJSDKKokkos() override;
|
||||
PairLJSPICAKokkos(class LAMMPS *);
|
||||
~PairLJSPICAKokkos() override;
|
||||
|
||||
void compute(int, int) override;
|
||||
|
||||
@ -95,17 +98,17 @@ class PairLJSDKKokkos : public PairLJSDK {
|
||||
int nlocal,nall,eflag,vflag;
|
||||
|
||||
void allocate() override;
|
||||
friend struct PairComputeFunctor<PairLJSDKKokkos,FULL,true>;
|
||||
friend struct PairComputeFunctor<PairLJSDKKokkos,HALF,true>;
|
||||
friend struct PairComputeFunctor<PairLJSDKKokkos,HALFTHREAD,true>;
|
||||
friend struct PairComputeFunctor<PairLJSDKKokkos,FULL,false>;
|
||||
friend struct PairComputeFunctor<PairLJSDKKokkos,HALF,false>;
|
||||
friend struct PairComputeFunctor<PairLJSDKKokkos,HALFTHREAD,false>;
|
||||
friend EV_FLOAT pair_compute_neighlist<PairLJSDKKokkos,FULL,void>(PairLJSDKKokkos*,NeighListKokkos<DeviceType>*);
|
||||
friend EV_FLOAT pair_compute_neighlist<PairLJSDKKokkos,HALF,void>(PairLJSDKKokkos*,NeighListKokkos<DeviceType>*);
|
||||
friend EV_FLOAT pair_compute_neighlist<PairLJSDKKokkos,HALFTHREAD,void>(PairLJSDKKokkos*,NeighListKokkos<DeviceType>*);
|
||||
friend EV_FLOAT pair_compute<PairLJSDKKokkos,void>(PairLJSDKKokkos*,NeighListKokkos<DeviceType>*);
|
||||
friend void pair_virial_fdotr_compute<PairLJSDKKokkos>(PairLJSDKKokkos*);
|
||||
friend struct PairComputeFunctor<PairLJSPICAKokkos,FULL,true>;
|
||||
friend struct PairComputeFunctor<PairLJSPICAKokkos,HALF,true>;
|
||||
friend struct PairComputeFunctor<PairLJSPICAKokkos,HALFTHREAD,true>;
|
||||
friend struct PairComputeFunctor<PairLJSPICAKokkos,FULL,false>;
|
||||
friend struct PairComputeFunctor<PairLJSPICAKokkos,HALF,false>;
|
||||
friend struct PairComputeFunctor<PairLJSPICAKokkos,HALFTHREAD,false>;
|
||||
friend EV_FLOAT pair_compute_neighlist<PairLJSPICAKokkos,FULL,void>(PairLJSPICAKokkos*,NeighListKokkos<DeviceType>*);
|
||||
friend EV_FLOAT pair_compute_neighlist<PairLJSPICAKokkos,HALF,void>(PairLJSPICAKokkos*,NeighListKokkos<DeviceType>*);
|
||||
friend EV_FLOAT pair_compute_neighlist<PairLJSPICAKokkos,HALFTHREAD,void>(PairLJSPICAKokkos*,NeighListKokkos<DeviceType>*);
|
||||
friend EV_FLOAT pair_compute<PairLJSPICAKokkos,void>(PairLJSPICAKokkos*,NeighListKokkos<DeviceType>*);
|
||||
friend void pair_virial_fdotr_compute<PairLJSPICAKokkos>(PairLJSPICAKokkos*);
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user