diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 314205ea3e..8b83555b8c 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -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 diff --git a/src/KOKKOS/pair_lj_sdk_kokkos.cpp b/src/KOKKOS/pair_lj_spica_kokkos.cpp similarity index 84% rename from src/KOKKOS/pair_lj_sdk_kokkos.cpp rename to src/KOKKOS/pair_lj_spica_kokkos.cpp index aed03f157d..4e77edb200 100644 --- a/src/KOKKOS/pair_lj_sdk_kokkos.cpp +++ b/src/KOKKOS/pair_lj_spica_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 #include 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 -PairLJSDKKokkos::PairLJSDKKokkos(LAMMPS *lmp) : PairLJSDK(lmp) +PairLJSPICAKokkos::PairLJSPICAKokkos(LAMMPS *lmp) : PairLJSPICA(lmp) { respa_enable = 0; @@ -54,7 +54,7 @@ PairLJSDKKokkos::PairLJSDKKokkos(LAMMPS *lmp) : PairLJSDK(lmp) /* ---------------------------------------------------------------------- */ template -PairLJSDKKokkos::~PairLJSDKKokkos() +PairLJSPICAKokkos::~PairLJSPICAKokkos() { if (copymode) return; @@ -68,7 +68,7 @@ PairLJSDKKokkos::~PairLJSDKKokkos() /* ---------------------------------------------------------------------- */ template -void PairLJSDKKokkos::compute(int eflag_in, int vflag_in) +void PairLJSPICAKokkos::compute(int eflag_in, int vflag_in) { eflag = eflag_in; vflag = vflag_in; @@ -112,7 +112,7 @@ void PairLJSDKKokkos::compute(int eflag_in, int vflag_in) // loop over neighbors of my atoms - EV_FLOAT ev = pair_compute,void >(this,(NeighListKokkos*)list); + EV_FLOAT ev = pair_compute,void >(this,(NeighListKokkos*)list); if (eflag) eng_vdwl += ev.evdwl; if (vflag_global) { @@ -141,7 +141,7 @@ void PairLJSDKKokkos::compute(int eflag_in, int vflag_in) template template KOKKOS_INLINE_FUNCTION -F_FLOAT PairLJSDKKokkos:: +F_FLOAT PairLJSPICAKokkos:: 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 template KOKKOS_INLINE_FUNCTION -F_FLOAT PairLJSDKKokkos:: +F_FLOAT PairLJSPICAKokkos:: 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 -void PairLJSDKKokkos::allocate() +void PairLJSPICAKokkos::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(); - k_params = Kokkos::DualView("PairLJSDK::params",n+1,n+1); + k_params = Kokkos::DualView("PairLJSPICA::params",n+1,n+1); params = k_params.template view(); } @@ -229,11 +240,11 @@ void PairLJSDKKokkos::allocate() ------------------------------------------------------------------------- */ template -void PairLJSDKKokkos::settings(int narg, char **arg) +void PairLJSPICAKokkos::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::settings(int narg, char **arg) ------------------------------------------------------------------------- */ template -void PairLJSDKKokkos::init_style() +void PairLJSPICAKokkos::init_style() { - PairLJSDK::init_style(); + PairLJSPICA::init_style(); // error if rRESPA with inner levels @@ -270,9 +281,9 @@ void PairLJSDKKokkos::init_style() ------------------------------------------------------------------------- */ template -double PairLJSDKKokkos::init_one(int i, int j) +double PairLJSPICAKokkos::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::init_one(int i, int j) namespace LAMMPS_NS { -template class PairLJSDKKokkos; +template class PairLJSPICAKokkos; #ifdef LMP_KOKKOS_GPU -template class PairLJSDKKokkos; +template class PairLJSPICAKokkos; #endif } diff --git a/src/KOKKOS/pair_lj_sdk_kokkos.h b/src/KOKKOS/pair_lj_spica_kokkos.h similarity index 65% rename from src/KOKKOS/pair_lj_sdk_kokkos.h rename to src/KOKKOS/pair_lj_spica_kokkos.h index edc42c7f6a..ba6c996df4 100644 --- a/src/KOKKOS/pair_lj_sdk_kokkos.h +++ b/src/KOKKOS/pair_lj_spica_kokkos.h @@ -13,31 +13,34 @@ #ifdef PAIR_CLASS // clang-format off -PairStyle(lj/sdk/kk,PairLJSDKKokkos); -PairStyle(lj/sdk/kk/device,PairLJSDKKokkos); -PairStyle(lj/sdk/kk/host,PairLJSDKKokkos); +PairStyle(lj/spica/kk,PairLJSPICAKokkos); +PairStyle(lj/spica/kk/device,PairLJSPICAKokkos); +PairStyle(lj/spica/kk/host,PairLJSPICAKokkos); +PairStyle(lj/sdk/kk,PairLJSPICAKokkos); +PairStyle(lj/sdk/kk/device,PairLJSPICAKokkos); +PairStyle(lj/sdk/kk/host,PairLJSPICAKokkos); // 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 PairLJSDKKokkos : public PairLJSDK { +class PairLJSPICAKokkos : public PairLJSPICA { public: enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF}; enum {COUL_FLAG=0}; typedef DeviceType device_type; typedef ArrayTypes 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; - friend struct PairComputeFunctor; - friend struct PairComputeFunctor; - friend struct PairComputeFunctor; - friend struct PairComputeFunctor; - friend struct PairComputeFunctor; - friend EV_FLOAT pair_compute_neighlist(PairLJSDKKokkos*,NeighListKokkos*); - friend EV_FLOAT pair_compute_neighlist(PairLJSDKKokkos*,NeighListKokkos*); - friend EV_FLOAT pair_compute_neighlist(PairLJSDKKokkos*,NeighListKokkos*); - friend EV_FLOAT pair_compute(PairLJSDKKokkos*,NeighListKokkos*); - friend void pair_virial_fdotr_compute(PairLJSDKKokkos*); + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend struct PairComputeFunctor; + friend EV_FLOAT pair_compute_neighlist(PairLJSPICAKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist(PairLJSPICAKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist(PairLJSPICAKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute(PairLJSPICAKokkos*,NeighListKokkos*); + friend void pair_virial_fdotr_compute(PairLJSPICAKokkos*); }; }