From 7b4fdb92df08cb57790d76ea4458678fb1cc4a56 Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Fri, 14 May 2021 09:36:13 -0600 Subject: [PATCH] Use only copymode in Kokkos pair_styles --- src/KOKKOS/pair_buck_coul_cut_kokkos.cpp | 22 ++----- src/KOKKOS/pair_buck_coul_cut_kokkos.h | 2 - src/KOKKOS/pair_buck_coul_long_kokkos.cpp | 47 +++------------ src/KOKKOS/pair_buck_coul_long_kokkos.h | 3 - src/KOKKOS/pair_buck_kokkos.cpp | 11 ++-- src/KOKKOS/pair_buck_kokkos.h | 2 - src/KOKKOS/pair_coul_cut_kokkos.cpp | 17 ++---- src/KOKKOS/pair_coul_cut_kokkos.h | 2 - src/KOKKOS/pair_coul_debye_kokkos.cpp | 20 ++----- src/KOKKOS/pair_coul_debye_kokkos.h | 2 - src/KOKKOS/pair_coul_long_kokkos.cpp | 39 +++--------- src/KOKKOS/pair_coul_long_kokkos.h | 4 -- src/KOKKOS/pair_eam_alloy_kokkos.h | 2 - src/KOKKOS/pair_eam_fs_kokkos.h | 2 - src/KOKKOS/pair_eam_kokkos.h | 2 - src/KOKKOS/pair_kokkos.h | 4 +- ..._lj_charmm_coul_charmm_implicit_kokkos.cpp | 58 ++++-------------- ...ir_lj_charmm_coul_charmm_implicit_kokkos.h | 2 - .../pair_lj_charmm_coul_charmm_kokkos.cpp | 58 ++++-------------- .../pair_lj_charmm_coul_charmm_kokkos.h | 4 -- .../pair_lj_charmm_coul_long_kokkos.cpp | 60 ++++--------------- src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h | 4 -- src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp | 29 +++------ src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h | 2 - .../pair_lj_class2_coul_long_kokkos.cpp | 43 +++++-------- src/KOKKOS/pair_lj_class2_coul_long_kokkos.h | 3 - src/KOKKOS/pair_lj_class2_kokkos.cpp | 20 ++----- src/KOKKOS/pair_lj_class2_kokkos.h | 2 - src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp | 28 +++------ src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h | 2 - src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp | 30 +++------- src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h | 2 - src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp | 44 ++++---------- src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h | 4 -- src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp | 45 ++++---------- src/KOKKOS/pair_lj_cut_coul_long_kokkos.h | 3 - src/KOKKOS/pair_lj_cut_kokkos.cpp | 22 ++----- src/KOKKOS/pair_lj_cut_kokkos.h | 2 - src/KOKKOS/pair_lj_expand_kokkos.cpp | 23 ++----- src/KOKKOS/pair_lj_expand_kokkos.h | 2 - .../pair_lj_gromacs_coul_gromacs_kokkos.cpp | 48 +++------------ .../pair_lj_gromacs_coul_gromacs_kokkos.h | 4 -- src/KOKKOS/pair_lj_gromacs_kokkos.cpp | 30 ++-------- src/KOKKOS/pair_lj_gromacs_kokkos.h | 2 - src/KOKKOS/pair_lj_sdk_kokkos.cpp | 20 ++----- src/KOKKOS/pair_lj_sdk_kokkos.h | 2 - src/KOKKOS/pair_morse_kokkos.cpp | 20 +------ src/KOKKOS/pair_morse_kokkos.h | 2 - src/KOKKOS/pair_reaxc_kokkos.h | 1 - src/KOKKOS/pair_table_kokkos.cpp | 12 +--- src/KOKKOS/pair_table_kokkos.h | 1 - src/KOKKOS/pair_table_rx_kokkos.cpp | 10 ---- src/KOKKOS/pair_table_rx_kokkos.h | 1 - src/KOKKOS/pair_tersoff_kokkos.h | 2 - src/KOKKOS/pair_tersoff_mod_kokkos.h | 2 - src/KOKKOS/pair_tersoff_zbl_kokkos.h | 2 - src/KOKKOS/pair_yukawa_kokkos.cpp | 20 +------ src/KOKKOS/pair_yukawa_kokkos.h | 2 - src/KOKKOS/pair_zbl_kokkos.cpp | 16 ----- src/KOKKOS/pair_zbl_kokkos.h | 1 - 60 files changed, 172 insertions(+), 699 deletions(-) diff --git a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp index 975c191c3d..5ca92337ea 100644 --- a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp @@ -49,10 +49,6 @@ PairBuckCoulCutKokkos::PairBuckCoulCutKokkos(LAMMPS *lmp):PairBuckCo execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = nullptr; - } /* ---------------------------------------------------------------------- */ @@ -60,23 +56,15 @@ PairBuckCoulCutKokkos::PairBuckCoulCutKokkos(LAMMPS *lmp):PairBuckCo template PairBuckCoulCutKokkos::~PairBuckCoulCutKokkos() { + if (copymode) return; - if (!copymode) { + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - k_cut_ljsq = DAT::tdual_ffloat_2d(); - k_cut_coulsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - memory->sfree(cut_ljsq); - memory->sfree(cut_coulsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = nullptr; + memoryKK->destroy_kokkos(k_cutsq,cutsq); + memoryKK->destroy_kokkos(k_cut_ljsq,cut_ljsq); + memoryKK->destroy_kokkos(k_cut_coulsq,cut_coulsq); } - } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_buck_coul_cut_kokkos.h b/src/KOKKOS/pair_buck_coul_cut_kokkos.h index 683cb37310..962f39559e 100644 --- a/src/KOKKOS/pair_buck_coul_cut_kokkos.h +++ b/src/KOKKOS/pair_buck_coul_cut_kokkos.h @@ -53,8 +53,6 @@ class PairBuckCoulCutKokkos : public PairBuckCoulCut { }; protected: - void cleanup_copy() {} - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, diff --git a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp index 2812abb026..c51f77b8f8 100644 --- a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp @@ -56,10 +56,6 @@ PairBuckCoulLongKokkos::PairBuckCoulLongKokkos(LAMMPS *lmp):PairBuck execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = 0.0; - } /* ---------------------------------------------------------------------- */ @@ -67,37 +63,18 @@ PairBuckCoulLongKokkos::PairBuckCoulLongKokkos(LAMMPS *lmp):PairBuck template PairBuckCoulLongKokkos::~PairBuckCoulLongKokkos() { - if (!copymode) { + if (copymode) return; + + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - k_cut_ljsq = DAT::tdual_ffloat_2d(); - k_cut_coulsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - memory->sfree(cut_ljsq); - //memory->sfree(cut_coulsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; - cut_ljsq = nullptr; - //cut_coulsq = nullptr; + memoryKK->destroy_kokkos(k_cutsq,cutsq); + memoryKK->destroy_kokkos(k_cut_ljsq,cut_ljsq); } } /* ---------------------------------------------------------------------- */ -template -void PairBuckCoulLongKokkos::cleanup_copy() { - allocated = 0; - cutsq = nullptr; - cut_ljsq = nullptr; - eatom = nullptr; - vatom = nullptr; - ftable = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairBuckCoulLongKokkos::compute(int eflag_in, int vflag_in) { @@ -124,7 +101,6 @@ void PairBuckCoulLongKokkos::compute(int eflag_in, int vflag_in) atomKK->sync(execution_space,datamask_read); k_cutsq.template sync(); k_cut_ljsq.template sync(); - k_cut_coulsq.template sync(); k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -313,8 +289,8 @@ void PairBuckCoulLongKokkos::allocate() memoryKK->create_kokkos(k_cut_ljsq,cut_ljsq,n+1,n+1,"pair:cut_ljsq"); d_cut_ljsq = k_cut_ljsq.template view(); - memoryKK->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); - d_cut_coulsq = k_cut_coulsq.template view(); + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); k_params = Kokkos::DualView("PairBuckCoulLong::params",n+1,n+1); params = k_params.template view(); @@ -486,7 +462,6 @@ double PairBuckCoulLongKokkos::init_one(int i, int j) { double cutone = PairBuckCoulLong::init_one(i,j); double cut_ljsqm = cut_ljsq[i][j]; - double cut_coulsqm = cut_coulsq; k_params.h_view(i,j).a = a[i][j]; k_params.h_view(i,j).c = c[i][j]; @@ -495,29 +470,25 @@ double PairBuckCoulLongKokkos::init_one(int i, int j) k_params.h_view(i,j).buck2 = buck2[i][j]; k_params.h_view(i,j).offset = offset[i][j]; k_params.h_view(i,j).cut_ljsq = cut_ljsqm; - k_params.h_view(i,j).cut_coulsq = cut_coulsqm; + k_params.h_view(i,j).cut_coulsq = cut_coulsq; k_params.h_view(j,i) = k_params.h_view(i,j); if (i(); k_cut_ljsq.h_view(i,j) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; - k_cut_coulsq.template modify(); k_params.template modify(); return cutone; - } - namespace LAMMPS_NS { template class PairBuckCoulLongKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/pair_buck_coul_long_kokkos.h b/src/KOKKOS/pair_buck_coul_long_kokkos.h index c383a64081..f1f088894f 100644 --- a/src/KOKKOS/pair_buck_coul_long_kokkos.h +++ b/src/KOKKOS/pair_buck_coul_long_kokkos.h @@ -54,8 +54,6 @@ class PairBuckCoulLongKokkos : public PairBuckCoulLong { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, @@ -102,7 +100,6 @@ class PairBuckCoulLongKokkos : public PairBuckCoulLong { typename AT::t_ffloat_2d d_cutsq; typename AT::tdual_ffloat_2d k_cut_ljsq; typename AT::t_ffloat_2d d_cut_ljsq; - typename AT::tdual_ffloat_2d k_cut_coulsq; typename AT::t_ffloat_2d d_cut_coulsq; typename AT::t_ffloat_1d_randomread diff --git a/src/KOKKOS/pair_buck_kokkos.cpp b/src/KOKKOS/pair_buck_kokkos.cpp index b51bde119c..0045f2bed4 100644 --- a/src/KOKKOS/pair_buck_kokkos.cpp +++ b/src/KOKKOS/pair_buck_kokkos.cpp @@ -47,7 +47,6 @@ PairBuckKokkos::PairBuckKokkos(LAMMPS *lmp) : PairBuck(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; } /* ---------------------------------------------------------------------- */ @@ -55,14 +54,12 @@ PairBuckKokkos::PairBuckKokkos(LAMMPS *lmp) : PairBuck(lmp) template PairBuckKokkos::~PairBuckKokkos() { - if (!copymode) { + if (copymode) return; + + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } diff --git a/src/KOKKOS/pair_buck_kokkos.h b/src/KOKKOS/pair_buck_kokkos.h index 8bd8fc9ffe..3257b05582 100644 --- a/src/KOKKOS/pair_buck_kokkos.h +++ b/src/KOKKOS/pair_buck_kokkos.h @@ -52,8 +52,6 @@ class PairBuckKokkos : public PairBuck { }; protected: - void cleanup_copy() {} - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; diff --git a/src/KOKKOS/pair_coul_cut_kokkos.cpp b/src/KOKKOS/pair_coul_cut_kokkos.cpp index 2dcd8a5532..407c1a1645 100644 --- a/src/KOKKOS/pair_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_coul_cut_kokkos.cpp @@ -38,7 +38,6 @@ PairCoulCutKokkos::PairCoulCutKokkos(LAMMPS *lmp) : PairCoulCut(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; } /* ---------------------------------------------------------------------- */ @@ -46,25 +45,17 @@ PairCoulCutKokkos::PairCoulCutKokkos(LAMMPS *lmp) : PairCoulCut(lmp) template PairCoulCutKokkos::~PairCoulCutKokkos() { + if (copymode) return; + if (allocated) { + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); memoryKK->destroy_kokkos(k_cutsq, cutsq); - cleanup_copy(); } } /* ---------------------------------------------------------------------- */ -template -void PairCoulCutKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairCoulCutKokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_coul_cut_kokkos.h b/src/KOKKOS/pair_coul_cut_kokkos.h index 6fb5334cb4..0710abd329 100644 --- a/src/KOKKOS/pair_coul_cut_kokkos.h +++ b/src/KOKKOS/pair_coul_cut_kokkos.h @@ -53,8 +53,6 @@ class PairCoulCutKokkos : public PairCoulCut { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& /*rsq*/, const int& /*i*/, const int& /*j*/, diff --git a/src/KOKKOS/pair_coul_debye_kokkos.cpp b/src/KOKKOS/pair_coul_debye_kokkos.cpp index 280c447210..fc891f8a3e 100644 --- a/src/KOKKOS/pair_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_coul_debye_kokkos.cpp @@ -47,8 +47,6 @@ PairCoulDebyeKokkos::PairCoulDebyeKokkos(LAMMPS *lmp):PairCoulDebye( execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - } /* ---------------------------------------------------------------------- */ @@ -56,25 +54,17 @@ PairCoulDebyeKokkos::PairCoulDebyeKokkos(LAMMPS *lmp):PairCoulDebye( template PairCoulDebyeKokkos::~PairCoulDebyeKokkos() { + if (copymode) return; + if (allocated) { - memoryKK->destroy_kokkos(k_cutsq, cutsq); - cleanup_copy(); + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairCoulDebyeKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairCoulDebyeKokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_coul_debye_kokkos.h b/src/KOKKOS/pair_coul_debye_kokkos.h index b5dc2eaed4..a72e92af2e 100644 --- a/src/KOKKOS/pair_coul_debye_kokkos.h +++ b/src/KOKKOS/pair_coul_debye_kokkos.h @@ -53,8 +53,6 @@ class PairCoulDebyeKokkos : public PairCoulDebye { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& /*rsq*/, const int& /*i*/, const int& /*j*/, diff --git a/src/KOKKOS/pair_coul_long_kokkos.cpp b/src/KOKKOS/pair_coul_long_kokkos.cpp index 4075108823..e123942bc9 100644 --- a/src/KOKKOS/pair_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_coul_long_kokkos.cpp @@ -56,9 +56,6 @@ PairCoulLongKokkos::PairCoulLongKokkos(LAMMPS *lmp):PairCoulLong(lmp execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_coulsq = 0.0; - } /* ---------------------------------------------------------------------- */ @@ -66,31 +63,17 @@ PairCoulLongKokkos::PairCoulLongKokkos(LAMMPS *lmp):PairCoulLong(lmp template PairCoulLongKokkos::~PairCoulLongKokkos() { - if (!copymode) { + if (copymode) return; + + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - k_cut_coulsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairCoulLongKokkos::cleanup_copy() { - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; - ftable = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairCoulLongKokkos::compute(int eflag_in, int vflag_in) { @@ -116,7 +99,6 @@ void PairCoulLongKokkos::compute(int eflag_in, int vflag_in) atomKK->sync(execution_space,datamask_read); k_cutsq.template sync(); - k_cut_coulsq.template sync(); k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -271,8 +253,8 @@ void PairCoulLongKokkos::allocate() memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); - memoryKK->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); - d_cut_coulsq = k_cut_coulsq.template view(); + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); k_params = Kokkos::DualView("PairCoulLong::params",n+1,n+1); params = k_params.template view(); @@ -443,28 +425,23 @@ template double PairCoulLongKokkos::init_one(int i, int j) { double cutone = PairCoulLong::init_one(i,j); - double cut_coulsqm = cut_coulsq; - k_params.h_view(i,j).cut_coulsq = cut_coulsqm; + k_params.h_view(i,j).cut_coulsq = cut_coulsq; k_params.h_view(j,i) = k_params.h_view(i,j); if (i(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; - k_cut_coulsq.template modify(); k_params.template modify(); return cutone; - } - namespace LAMMPS_NS { template class PairCoulLongKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/pair_coul_long_kokkos.h b/src/KOKKOS/pair_coul_long_kokkos.h index 11847bc25c..e4568fa507 100644 --- a/src/KOKKOS/pair_coul_long_kokkos.h +++ b/src/KOKKOS/pair_coul_long_kokkos.h @@ -54,8 +54,6 @@ class PairCoulLongKokkos : public PairCoulLong { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& /*rsq*/, const int& /*i*/, const int& /*j*/, @@ -100,9 +98,7 @@ class PairCoulLongKokkos : public PairCoulLong { typename AT::tdual_ffloat_2d k_cutsq; typename AT::t_ffloat_2d d_cutsq; - typename AT::tdual_ffloat_2d k_cut_ljsq; typename AT::t_ffloat_2d d_cut_ljsq; - typename AT::tdual_ffloat_2d k_cut_coulsq; typename AT::t_ffloat_2d d_cut_coulsq; typename AT::t_ffloat_1d_randomread diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.h b/src/KOKKOS/pair_eam_alloy_kokkos.h index 71a30ec2b9..77aee1e7ba 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.h +++ b/src/KOKKOS/pair_eam_alloy_kokkos.h @@ -116,8 +116,6 @@ class PairEAMAlloyKokkos : public PairEAM, public KokkosBase { void unpack_reverse_comm(int, int *, double *); protected: - void cleanup_copy(); - typename AT::t_x_array x; typename AT::t_f_array f; typename AT::t_int_1d type; diff --git a/src/KOKKOS/pair_eam_fs_kokkos.h b/src/KOKKOS/pair_eam_fs_kokkos.h index b216138c8b..7b6de49fbd 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.h +++ b/src/KOKKOS/pair_eam_fs_kokkos.h @@ -116,8 +116,6 @@ class PairEAMFSKokkos : public PairEAM, public KokkosBase { void unpack_reverse_comm(int, int *, double *); protected: - void cleanup_copy(); - typename AT::t_x_array x; typename AT::t_f_array f; typename AT::t_int_1d type; diff --git a/src/KOKKOS/pair_eam_kokkos.h b/src/KOKKOS/pair_eam_kokkos.h index 982b248af1..8ec8c53cc8 100644 --- a/src/KOKKOS/pair_eam_kokkos.h +++ b/src/KOKKOS/pair_eam_kokkos.h @@ -113,8 +113,6 @@ class PairEAMKokkos : public PairEAM, public KokkosBase { void unpack_reverse_comm(int, int *, double *); protected: - void cleanup_copy(); - typename AT::t_x_array x; typename AT::t_f_array f; typename AT::t_int_1d type; diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index a3b31f54cc..3de7834eea 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -94,8 +94,8 @@ struct PairComputeFunctor { dup_vatom = Kokkos::Experimental::create_scatter_view::value >(c.d_vatom); }; - // Call cleanup_copy which sets allocations to null which are destructed by the PairStyle - ~PairComputeFunctor() {c.cleanup_copy();list.copymode = 1;}; + // Set copymode = 1 so parent allocations aren't destructed by copies of the sstyle + ~PairComputeFunctor() {c.copymode = 1; list.copymode = 1;}; KOKKOS_INLINE_FUNCTION int sbmask(const int& j) const { return j >> SBBITS & 3; diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp index a0abce1510..20ddf7b597 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp @@ -55,10 +55,6 @@ PairLJCharmmCoulCharmmImplicitKokkos::PairLJCharmmCoulCharmmImplicit execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = 0.0; - cut_coulsq = 0.0; - } /* ---------------------------------------------------------------------- */ @@ -66,38 +62,17 @@ PairLJCharmmCoulCharmmImplicitKokkos::PairLJCharmmCoulCharmmImplicit template PairLJCharmmCoulCharmmImplicitKokkos::~PairLJCharmmCoulCharmmImplicitKokkos() { - if (!copymode) { + if (copymode) return; + + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - k_cut_ljsq = DAT::tdual_ffloat_2d(); - k_cut_coulsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - //memory->sfree(cut_ljsq); - //memory->sfree(cut_coulsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; - cut_ljsq = 0.0; - cut_coulsq = 0.0; + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJCharmmCoulCharmmImplicitKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = 0.0; - eatom = nullptr; - vatom = nullptr; - ftable = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJCharmmCoulCharmmImplicitKokkos::compute(int eflag_in, int vflag_in) { @@ -123,8 +98,6 @@ void PairLJCharmmCoulCharmmImplicitKokkos::compute(int eflag_in, int atomKK->sync(execution_space,datamask_read); k_cutsq.template sync(); - k_cut_ljsq.template sync(); - k_cut_coulsq.template sync(); k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -312,12 +285,11 @@ void PairLJCharmmCoulCharmmImplicitKokkos::allocate() memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); - //memory->destroy(cut_ljsq); - memoryKK->create_kokkos(k_cut_ljsq,n+1,n+1,"pair:cut_ljsq"); - d_cut_ljsq = k_cut_ljsq.template view(); + d_cut_ljsq = typename AT::t_ffloat_2d("pair:cut_ljsq",n+1,n+1); + Kokkos::deep_copy(d_cut_ljsq,cut_ljsq); - memoryKK->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); - d_cut_coulsq = k_cut_coulsq.template view(); + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); k_params = Kokkos::DualView("PairLJCharmmCoulCharmmImplicit::params",n+1,n+1); params = k_params.template view(); @@ -488,31 +460,25 @@ template double PairLJCharmmCoulCharmmImplicitKokkos::init_one(int i, int j) { double cutone = PairLJCharmmCoulCharmmImplicit::init_one(i,j); - double cut_ljsqm = cut_ljsq; - double cut_coulsqm = cut_coulsq; k_params.h_view(i,j).lj1 = lj1[i][j]; k_params.h_view(i,j).lj2 = lj2[i][j]; k_params.h_view(i,j).lj3 = lj3[i][j]; k_params.h_view(i,j).lj4 = lj4[i][j]; //k_params.h_view(i,j).offset = offset[i][j]; - k_params.h_view(i,j).cut_ljsq = cut_ljsqm; - k_params.h_view(i,j).cut_coulsq = cut_coulsqm; + k_params.h_view(i,j).cut_ljsq = cut_ljsq; + k_params.h_view(i,j).cut_coulsq = cut_coulsq; k_params.h_view(j,i) = k_params.h_view(i,j); if (i(); - k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; - k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; - k_cut_coulsq.template modify(); k_params.template modify(); return cutone; diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.h b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.h index 1fb2c7724b..b897284939 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.h +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.h @@ -47,8 +47,6 @@ class PairLJCharmmCoulCharmmImplicitKokkos : public PairLJCharmmCoulCharmmImplic protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp index f683204d9d..33853118f0 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp @@ -56,10 +56,6 @@ PairLJCharmmCoulCharmmKokkos::PairLJCharmmCoulCharmmKokkos(LAMMPS *l execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = 0.0; - cut_coulsq = 0.0; - } /* ---------------------------------------------------------------------- */ @@ -67,38 +63,17 @@ PairLJCharmmCoulCharmmKokkos::PairLJCharmmCoulCharmmKokkos(LAMMPS *l template PairLJCharmmCoulCharmmKokkos::~PairLJCharmmCoulCharmmKokkos() { - if (!copymode) { + if (copymode) return; + + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); k_cutsq = DAT::tdual_ffloat_2d(); - k_cut_ljsq = DAT::tdual_ffloat_2d(); - k_cut_coulsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - //memory->sfree(cut_ljsq); - //memory->sfree(cut_coulsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; - cut_ljsq = 0.0; - cut_coulsq = 0.0; } } /* ---------------------------------------------------------------------- */ -template -void PairLJCharmmCoulCharmmKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = 0.0; - eatom = nullptr; - vatom = nullptr; - ftable = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJCharmmCoulCharmmKokkos::compute(int eflag_in, int vflag_in) { @@ -124,8 +99,6 @@ void PairLJCharmmCoulCharmmKokkos::compute(int eflag_in, int vflag_i atomKK->sync(execution_space,datamask_read); k_cutsq.template sync(); - k_cut_ljsq.template sync(); - k_cut_coulsq.template sync(); k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -313,12 +286,11 @@ void PairLJCharmmCoulCharmmKokkos::allocate() memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); - //memory->destroy(cut_ljsq); - memoryKK->create_kokkos(k_cut_ljsq,n+1,n+1,"pair:cut_ljsq"); - d_cut_ljsq = k_cut_ljsq.template view(); + d_cut_ljsq = typename AT::t_ffloat_2d("pair:cut_ljsq",n+1,n+1); + Kokkos::deep_copy(d_cut_ljsq,cut_ljsq); - memoryKK->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); - d_cut_coulsq = k_cut_coulsq.template view(); + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); k_params = Kokkos::DualView("PairLJCharmmCoulCharmm::params",n+1,n+1); params = k_params.template view(); @@ -489,38 +461,30 @@ template double PairLJCharmmCoulCharmmKokkos::init_one(int i, int j) { double cutone = PairLJCharmmCoulCharmm::init_one(i,j); - double cut_ljsqm = cut_ljsq; - double cut_coulsqm = cut_coulsq; k_params.h_view(i,j).lj1 = lj1[i][j]; k_params.h_view(i,j).lj2 = lj2[i][j]; k_params.h_view(i,j).lj3 = lj3[i][j]; k_params.h_view(i,j).lj4 = lj4[i][j]; //k_params.h_view(i,j).offset = offset[i][j]; - k_params.h_view(i,j).cut_ljsq = cut_ljsqm; - k_params.h_view(i,j).cut_coulsq = cut_coulsqm; + k_params.h_view(i,j).cut_ljsq = cut_ljsq; + k_params.h_view(i,j).cut_coulsq = cut_coulsq; k_params.h_view(j,i) = k_params.h_view(i,j); if (i(); - k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; - k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; - k_cut_coulsq.template modify(); k_params.template modify(); return cutone; } - - namespace LAMMPS_NS { template class PairLJCharmmCoulCharmmKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.h b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.h index a7e3a80840..a33dd45644 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.h +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.h @@ -47,8 +47,6 @@ class PairLJCharmmCoulCharmmKokkos : public PairLJCharmmCoulCharmm { protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, @@ -93,9 +91,7 @@ class PairLJCharmmCoulCharmmKokkos : public PairLJCharmmCoulCharmm { typename AT::tdual_ffloat_2d k_cutsq; typename AT::t_ffloat_2d d_cutsq; - typename AT::tdual_ffloat_2d k_cut_ljsq; typename AT::t_ffloat_2d d_cut_ljsq; - typename AT::tdual_ffloat_2d k_cut_coulsq; typename AT::t_ffloat_2d d_cut_coulsq; typename AT::t_ffloat_1d_randomread diff --git a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp index 7f9876a76f..77baef29f5 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp @@ -56,10 +56,6 @@ PairLJCharmmCoulLongKokkos::PairLJCharmmCoulLongKokkos(LAMMPS *lmp): execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = 0.0; - cut_coulsq = 0.0; - } /* ---------------------------------------------------------------------- */ @@ -67,38 +63,17 @@ PairLJCharmmCoulLongKokkos::PairLJCharmmCoulLongKokkos(LAMMPS *lmp): template PairLJCharmmCoulLongKokkos::~PairLJCharmmCoulLongKokkos() { - if (!copymode) { + if (copymode) return; + + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - k_cut_ljsq = DAT::tdual_ffloat_2d(); - k_cut_coulsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - //memory->sfree(cut_ljsq); - //memory->sfree(cut_coulsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; - cut_ljsq = 0.0; - cut_coulsq = 0.0; + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJCharmmCoulLongKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = 0.0; - eatom = nullptr; - vatom = nullptr; - ftable = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJCharmmCoulLongKokkos::compute(int eflag_in, int vflag_in) { @@ -124,8 +99,6 @@ void PairLJCharmmCoulLongKokkos::compute(int eflag_in, int vflag_in) atomKK->sync(execution_space,datamask_read); k_cutsq.template sync(); - k_cut_ljsq.template sync(); - k_cut_coulsq.template sync(); k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -334,12 +307,11 @@ void PairLJCharmmCoulLongKokkos::allocate() memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); - //memory->destroy(cut_ljsq); - memoryKK->create_kokkos(k_cut_ljsq,n+1,n+1,"pair:cut_ljsq"); - d_cut_ljsq = k_cut_ljsq.template view(); + d_cut_ljsq = typename AT::t_ffloat_2d("pair:cut_ljsq",n+1,n+1); + Kokkos::deep_copy(d_cut_ljsq,cut_ljsq); - memoryKK->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); - d_cut_coulsq = k_cut_coulsq.template view(); + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); k_params = Kokkos::DualView("PairLJCharmmCoulLong::params",n+1,n+1); params = k_params.template view(); @@ -497,38 +469,30 @@ template double PairLJCharmmCoulLongKokkos::init_one(int i, int j) { double cutone = PairLJCharmmCoulLong::init_one(i,j); - double cut_ljsqm = cut_ljsq; - double cut_coulsqm = cut_coulsq; k_params.h_view(i,j).lj1 = lj1[i][j]; k_params.h_view(i,j).lj2 = lj2[i][j]; k_params.h_view(i,j).lj3 = lj3[i][j]; k_params.h_view(i,j).lj4 = lj4[i][j]; //k_params.h_view(i,j).offset = offset[i][j]; - k_params.h_view(i,j).cut_ljsq = cut_ljsqm; - k_params.h_view(i,j).cut_coulsq = cut_coulsqm; + k_params.h_view(i,j).cut_ljsq = cut_ljsq; + k_params.h_view(i,j).cut_coulsq = cut_coulsq; k_params.h_view(j,i) = k_params.h_view(i,j); if (i(); - k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; - k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; - k_cut_coulsq.template modify(); k_params.template modify(); return cutone; } - - namespace LAMMPS_NS { template class PairLJCharmmCoulLongKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h index 6b76b00170..9e08772c3c 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h +++ b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h @@ -45,8 +45,6 @@ class PairLJCharmmCoulLongKokkos : public PairLJCharmmCoulLong { double init_one(int, int); protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, @@ -91,9 +89,7 @@ class PairLJCharmmCoulLongKokkos : public PairLJCharmmCoulLong { typename AT::tdual_ffloat_2d k_cutsq; typename AT::t_ffloat_2d d_cutsq; - typename AT::tdual_ffloat_2d k_cut_ljsq; typename AT::t_ffloat_2d d_cut_ljsq; - typename AT::tdual_ffloat_2d k_cut_coulsq; typename AT::t_ffloat_2d d_cut_coulsq; typename AT::t_ffloat_1d_randomread diff --git a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp index 36a15da628..96c348769c 100644 --- a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp @@ -44,10 +44,6 @@ PairLJClass2CoulCutKokkos::PairLJClass2CoulCutKokkos(LAMMPS *lmp):Pa execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = nullptr; - } /* ---------------------------------------------------------------------- */ @@ -55,28 +51,19 @@ PairLJClass2CoulCutKokkos::PairLJClass2CoulCutKokkos(LAMMPS *lmp):Pa template PairLJClass2CoulCutKokkos::~PairLJClass2CoulCutKokkos() { - if (!copymode) { - memoryKK->destroy_kokkos(k_cutsq, cutsq); - memoryKK->destroy_kokkos(k_cut_ljsq, cut_ljsq); - memoryKK->destroy_kokkos(k_cut_coulsq, cut_coulsq); + if (copymode) return; + + if (allocated) { + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); + memoryKK->destroy_kokkos(k_cut_ljsq,cut_ljsq); + memoryKK->destroy_kokkos(k_cut_coulsq,cut_coulsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJClass2CoulCutKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJClass2CoulCutKokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h index 96623a7b24..5b9ca1f8d9 100644 --- a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h +++ b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h @@ -46,8 +46,6 @@ class PairLJClass2CoulCutKokkos : public PairLJClass2CoulCut { protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, diff --git a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp index 031d025544..307109178f 100644 --- a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp @@ -52,10 +52,6 @@ PairLJClass2CoulLongKokkos::PairLJClass2CoulLongKokkos(LAMMPS *lmp): execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = 0.0; - } /* ---------------------------------------------------------------------- */ @@ -63,27 +59,18 @@ PairLJClass2CoulLongKokkos::PairLJClass2CoulLongKokkos(LAMMPS *lmp): template PairLJClass2CoulLongKokkos::~PairLJClass2CoulLongKokkos() { - if (!copymode) { - memoryKK->destroy_kokkos(k_cutsq, cutsq); - memoryKK->destroy_kokkos(k_cut_ljsq, cut_ljsq); + if (copymode) return; + + if (allocated) { + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); + memoryKK->destroy_kokkos(k_cut_ljsq,cut_ljsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJClass2CoulLongKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = nullptr; - eatom = nullptr; - vatom = nullptr; - ftable = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJClass2CoulLongKokkos::compute(int eflag_in, int vflag_in) { @@ -110,7 +97,6 @@ void PairLJClass2CoulLongKokkos::compute(int eflag_in, int vflag_in) atomKK->sync(execution_space,datamask_read); k_cutsq.template sync(); k_cut_ljsq.template sync(); - k_cut_coulsq.template sync(); k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -302,15 +288,18 @@ void PairLJClass2CoulLongKokkos::allocate() PairLJClass2CoulLong::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(); + memory->destroy(cut_ljsq); memoryKK->create_kokkos(k_cut_ljsq,cut_ljsq,n+1,n+1,"pair:cut_ljsq"); d_cut_ljsq = k_cut_ljsq.template view(); - memoryKK->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); - d_cut_coulsq = k_cut_coulsq.template view(); + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); + k_params = Kokkos::DualView("PairLJClass2CoulLong::params",n+1,n+1); params = k_params.template view(); } @@ -481,7 +470,6 @@ double PairLJClass2CoulLongKokkos::init_one(int i, int j) { double cutone = PairLJClass2CoulLong::init_one(i,j); double cut_ljsqm = cut_ljsq[i][j]; - double cut_coulsqm = cut_coulsq; k_params.h_view(i,j).lj1 = lj1[i][j]; k_params.h_view(i,j).lj2 = lj2[i][j]; @@ -489,28 +477,25 @@ double PairLJClass2CoulLongKokkos::init_one(int i, int j) k_params.h_view(i,j).lj4 = lj4[i][j]; k_params.h_view(i,j).offset = offset[i][j]; k_params.h_view(i,j).cut_ljsq = cut_ljsqm; - k_params.h_view(i,j).cut_coulsq = cut_coulsqm; + k_params.h_view(i,j).cut_coulsq = cut_coulsq; k_params.h_view(j,i) = k_params.h_view(i,j); if (i(); k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; - k_cut_coulsq.template modify(); k_params.template modify(); return cutone; } - namespace LAMMPS_NS { template class PairLJClass2CoulLongKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.h b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.h index c5729697ee..3e6c5b6652 100644 --- a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.h +++ b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.h @@ -46,8 +46,6 @@ class PairLJClass2CoulLongKokkos : public PairLJClass2CoulLong { double init_one(int, int); protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, @@ -94,7 +92,6 @@ class PairLJClass2CoulLongKokkos : public PairLJClass2CoulLong { typename AT::t_ffloat_2d d_cutsq; typename AT::tdual_ffloat_2d k_cut_ljsq; typename AT::t_ffloat_2d d_cut_ljsq; - typename AT::tdual_ffloat_2d k_cut_coulsq; typename AT::t_ffloat_2d d_cut_coulsq; typename AT::t_ffloat_1d_randomread diff --git a/src/KOKKOS/pair_lj_class2_kokkos.cpp b/src/KOKKOS/pair_lj_class2_kokkos.cpp index cef3c1f8d8..ddf3db427f 100644 --- a/src/KOKKOS/pair_lj_class2_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_kokkos.cpp @@ -47,7 +47,6 @@ PairLJClass2Kokkos::PairLJClass2Kokkos(LAMMPS *lmp) : PairLJClass2(l execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; } /* ---------------------------------------------------------------------- */ @@ -55,26 +54,17 @@ PairLJClass2Kokkos::PairLJClass2Kokkos(LAMMPS *lmp) : PairLJClass2(l template PairLJClass2Kokkos::~PairLJClass2Kokkos() { + if (copymode) return; + if (allocated) { - k_cutsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - cutsq = nullptr; + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJClass2Kokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJClass2Kokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_lj_class2_kokkos.h b/src/KOKKOS/pair_lj_class2_kokkos.h index 4be6c40667..9ca058cfd3 100644 --- a/src/KOKKOS/pair_lj_class2_kokkos.h +++ b/src/KOKKOS/pair_lj_class2_kokkos.h @@ -53,8 +53,6 @@ class PairLJClass2Kokkos : public PairLJClass2 { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; diff --git a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp index 9ffd42c1f3..5b724aff51 100644 --- a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp @@ -43,10 +43,6 @@ PairLJCutCoulCutKokkos::PairLJCutCoulCutKokkos(LAMMPS *lmp):PairLJCu execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = nullptr; - } /* ---------------------------------------------------------------------- */ @@ -54,29 +50,19 @@ PairLJCutCoulCutKokkos::PairLJCutCoulCutKokkos(LAMMPS *lmp):PairLJCu template PairLJCutCoulCutKokkos::~PairLJCutCoulCutKokkos() { + if (copymode) return; + if (allocated) { - memoryKK->destroy_kokkos(k_cutsq, cutsq); - memoryKK->destroy_kokkos(k_cut_ljsq, cut_ljsq); - memoryKK->destroy_kokkos(k_cut_coulsq, cut_coulsq); - cleanup_copy(); + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); + memoryKK->destroy_kokkos(k_cut_ljsq,cut_ljsq); + memoryKK->destroy_kokkos(k_cut_coulsq,cut_coulsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJCutCoulCutKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJCutCoulCutKokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h index 6f2de779a6..2d203c0738 100644 --- a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h @@ -45,8 +45,6 @@ class PairLJCutCoulCutKokkos : public PairLJCutCoulCut { double init_one(int, int); protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, diff --git a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp index 5c808e3eb9..c004ff5a77 100644 --- a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp @@ -47,10 +47,6 @@ PairLJCutCoulDebyeKokkos::PairLJCutCoulDebyeKokkos(LAMMPS *lmp):Pair execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = nullptr; - } /* ---------------------------------------------------------------------- */ @@ -58,31 +54,19 @@ PairLJCutCoulDebyeKokkos::PairLJCutCoulDebyeKokkos(LAMMPS *lmp):Pair template PairLJCutCoulDebyeKokkos::~PairLJCutCoulDebyeKokkos() { - if (!copymode) { - memoryKK->destroy_kokkos(k_cutsq, cutsq); - memoryKK->destroy_kokkos(k_cut_ljsq, cut_ljsq); - memoryKK->destroy_kokkos(k_cut_coulsq, cut_coulsq); - } + if (copymode) return; + if (allocated) { - cleanup_copy(); + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); + memoryKK->destroy_kokkos(k_cut_ljsq,cut_ljsq); + memoryKK->destroy_kokkos(k_cut_coulsq,cut_coulsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJCutCoulDebyeKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJCutCoulDebyeKokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h index bfcf48aa98..9bcb156b62 100644 --- a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h @@ -45,8 +45,6 @@ class PairLJCutCoulDebyeKokkos : public PairLJCutCoulDebye { double init_one(int, int); protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, diff --git a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp index 22412392e7..b315ea51d7 100644 --- a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp @@ -57,10 +57,6 @@ PairLJCutCoulDSFKokkos::PairLJCutCoulDSFKokkos(LAMMPS *lmp):PairLJCu execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = nullptr; - //cut_coulsq = nullptr; - } /* ---------------------------------------------------------------------- */ @@ -68,27 +64,14 @@ PairLJCutCoulDSFKokkos::PairLJCutCoulDSFKokkos(LAMMPS *lmp):PairLJCu template PairLJCutCoulDSFKokkos::~PairLJCutCoulDSFKokkos() { - if (!copymode) { + if (copymode) return; + + if (allocated) { + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); memoryKK->destroy_kokkos(k_cutsq, cutsq); memoryKK->destroy_kokkos(k_cut_ljsq, cut_ljsq); - //memoryKK->destroy_kokkos(k_cut_coulsq, cut_coulsq); } - if (allocated) { - cleanup_copy(); - } -} - -/* ---------------------------------------------------------------------- */ - -template -void PairLJCutCoulDSFKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = nullptr; - //cut_coulsq = nullptr; - eatom = nullptr; - vatom = nullptr; } /* ---------------------------------------------------------------------- */ @@ -119,7 +102,6 @@ void PairLJCutCoulDSFKokkos::compute(int eflag_in, int vflag_in) atomKK->sync(execution_space,datamask_read); k_cutsq.template sync(); k_cut_ljsq.template sync(); - k_cut_coulsq.template sync(); k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -279,15 +261,18 @@ void PairLJCutCoulDSFKokkos::allocate() PairLJCutCoulDSF::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(); + memory->destroy(cut_ljsq); memoryKK->create_kokkos(k_cut_ljsq,cut_ljsq,n+1,n+1,"pair:cut_ljsq"); d_cut_ljsq = k_cut_ljsq.template view(); - //memory->destroy(cut_coulsq); - memoryKK->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); - d_cut_coulsq = k_cut_coulsq.template view(); + + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); + k_params = Kokkos::DualView("PairLJCutCoulDSF::params",n+1,n+1); params = k_params.template view(); } @@ -342,7 +327,6 @@ double PairLJCutCoulDSFKokkos::init_one(int i, int j) { double cutone = PairLJCutCoulDSF::init_one(i,j); double cut_ljsqm = cut_ljsq[i][j]; - double cut_coulsqm = cut_coulsq; k_params.h_view(i,j).lj1 = lj1[i][j]; k_params.h_view(i,j).lj2 = lj2[i][j]; @@ -350,22 +334,20 @@ double PairLJCutCoulDSFKokkos::init_one(int i, int j) k_params.h_view(i,j).lj4 = lj4[i][j]; k_params.h_view(i,j).offset = offset[i][j]; k_params.h_view(i,j).cut_ljsq = cut_ljsqm; - k_params.h_view(i,j).cut_coulsq = cut_coulsqm; + k_params.h_view(i,j).cut_coulsq = cut_coulsq; k_params.h_view(j,i) = k_params.h_view(i,j); if (i(); k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; - k_cut_coulsq.template modify(); k_params.template modify(); return cutone; diff --git a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h index d45591c89e..f8629fa52c 100644 --- a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h @@ -44,8 +44,6 @@ class PairLJCutCoulDSFKokkos : public PairLJCutCoulDSF { double init_one(int, int); protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, @@ -92,10 +90,8 @@ class PairLJCutCoulDSFKokkos : public PairLJCutCoulDSF { typename AT::t_ffloat_2d d_cutsq; typename AT::tdual_ffloat_2d k_cut_ljsq; typename AT::t_ffloat_2d d_cut_ljsq; - typename AT::tdual_ffloat_2d k_cut_coulsq; typename AT::t_ffloat_2d d_cut_coulsq; - int neighflag; int nlocal,nall,eflag,vflag; diff --git a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp index 244acc644a..122d3161eb 100644 --- a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp @@ -54,10 +54,6 @@ PairLJCutCoulLongKokkos::PairLJCutCoulLongKokkos(LAMMPS *lmp):PairLJ execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = nullptr; - cut_coulsq = 0.0; - } /* ---------------------------------------------------------------------- */ @@ -65,31 +61,18 @@ PairLJCutCoulLongKokkos::PairLJCutCoulLongKokkos(LAMMPS *lmp):PairLJ template PairLJCutCoulLongKokkos::~PairLJCutCoulLongKokkos() { - memoryKK->destroy_kokkos(k_eatom,eatom); - memoryKK->destroy_kokkos(k_vatom,vatom); - eatom = nullptr; - vatom = nullptr; + if (copymode) return; + if (allocated) { - memoryKK->destroy_kokkos(k_cutsq, cutsq); - memoryKK->destroy_kokkos(k_cut_ljsq, cut_ljsq); + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); + memoryKK->destroy_kokkos(k_cut_ljsq,cut_ljsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJCutCoulLongKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = nullptr; - eatom = nullptr; - vatom = nullptr; - ftable = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJCutCoulLongKokkos::compute(int eflag_in, int vflag_in) { @@ -117,7 +100,6 @@ void PairLJCutCoulLongKokkos::compute(int eflag_in, int vflag_in) atomKK->sync(execution_space,datamask_read); k_cutsq.template sync(); k_cut_ljsq.template sync(); - k_cut_coulsq.template sync(); k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -303,12 +285,14 @@ void PairLJCutCoulLongKokkos::allocate() memory->destroy(cutsq); memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); + memory->destroy(cut_ljsq); memoryKK->create_kokkos(k_cut_ljsq,cut_ljsq,n+1,n+1,"pair:cut_ljsq"); d_cut_ljsq = k_cut_ljsq.template view(); - memoryKK->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); - d_cut_coulsq = k_cut_coulsq.template view(); + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); + k_params = Kokkos::DualView("PairLJCutCoulLong::params",n+1,n+1); params = k_params.template view(); } @@ -479,7 +463,6 @@ double PairLJCutCoulLongKokkos::init_one(int i, int j) { double cutone = PairLJCutCoulLong::init_one(i,j); double cut_ljsqm = cut_ljsq[i][j]; - double cut_coulsqm = cut_coulsq; k_params.h_view(i,j).lj1 = lj1[i][j]; k_params.h_view(i,j).lj2 = lj2[i][j]; @@ -487,29 +470,25 @@ double PairLJCutCoulLongKokkos::init_one(int i, int j) k_params.h_view(i,j).lj4 = lj4[i][j]; k_params.h_view(i,j).offset = offset[i][j]; k_params.h_view(i,j).cut_ljsq = cut_ljsqm; - k_params.h_view(i,j).cut_coulsq = cut_coulsqm; + k_params.h_view(i,j).cut_coulsq = cut_coulsq; k_params.h_view(j,i) = k_params.h_view(i,j); if (i(); k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; - k_cut_coulsq.template modify(); k_params.template modify(); return cutone; } - - namespace LAMMPS_NS { template class PairLJCutCoulLongKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.h b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.h index 95210e06f7..06294e56f5 100644 --- a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.h @@ -46,8 +46,6 @@ class PairLJCutCoulLongKokkos : public PairLJCutCoulLong { double init_one(int, int); protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, @@ -94,7 +92,6 @@ class PairLJCutCoulLongKokkos : public PairLJCutCoulLong { typename AT::t_ffloat_2d d_cutsq; typename AT::tdual_ffloat_2d k_cut_ljsq; typename AT::t_ffloat_2d d_cut_ljsq; - typename AT::tdual_ffloat_2d k_cut_coulsq; typename AT::t_ffloat_2d d_cut_coulsq; typename AT::t_ffloat_1d_randomread diff --git a/src/KOKKOS/pair_lj_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_kokkos.cpp index bffb921490..c2363abcb0 100644 --- a/src/KOKKOS/pair_lj_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_kokkos.cpp @@ -42,7 +42,6 @@ PairLJCutKokkos::PairLJCutKokkos(LAMMPS *lmp) : PairLJCut(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; } /* ---------------------------------------------------------------------- */ @@ -50,30 +49,17 @@ PairLJCutKokkos::PairLJCutKokkos(LAMMPS *lmp) : PairLJCut(lmp) template PairLJCutKokkos::~PairLJCutKokkos() { + if (copymode) return; + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJCutKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJCutKokkos::compute(int eflag_in, int vflag_in) { @@ -119,6 +105,8 @@ void PairLJCutKokkos::compute(int eflag_in, int vflag_in) // loop over neighbors of my atoms + copymode = 1; + EV_FLOAT ev = pair_compute,void >(this,(NeighListKokkos*)list); if (eflag_global) eng_vdwl += ev.evdwl; diff --git a/src/KOKKOS/pair_lj_cut_kokkos.h b/src/KOKKOS/pair_lj_cut_kokkos.h index 557a28b698..b7afc92a24 100644 --- a/src/KOKKOS/pair_lj_cut_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_kokkos.h @@ -53,8 +53,6 @@ class PairLJCutKokkos : public PairLJCut { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; diff --git a/src/KOKKOS/pair_lj_expand_kokkos.cpp b/src/KOKKOS/pair_lj_expand_kokkos.cpp index 5906096aa1..8a294bf429 100644 --- a/src/KOKKOS/pair_lj_expand_kokkos.cpp +++ b/src/KOKKOS/pair_lj_expand_kokkos.cpp @@ -47,7 +47,6 @@ PairLJExpandKokkos::PairLJExpandKokkos(LAMMPS *lmp) : PairLJExpand(l execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; } /* ---------------------------------------------------------------------- */ @@ -55,29 +54,17 @@ PairLJExpandKokkos::PairLJExpandKokkos(LAMMPS *lmp) : PairLJExpand(l template PairLJExpandKokkos::~PairLJExpandKokkos() { - if (!copymode) { - k_cutsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - cutsq = nullptr; - } + if (copymode) return; + if (allocated) { - cleanup_copy(); + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJExpandKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJExpandKokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_lj_expand_kokkos.h b/src/KOKKOS/pair_lj_expand_kokkos.h index ef288dcfe3..f30eff2743 100644 --- a/src/KOKKOS/pair_lj_expand_kokkos.h +++ b/src/KOKKOS/pair_lj_expand_kokkos.h @@ -53,8 +53,6 @@ class PairLJExpandKokkos : public PairLJExpand { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; diff --git a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp index fa4a3ca06d..529d322b37 100644 --- a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp @@ -47,10 +47,6 @@ PairLJGromacsCoulGromacsKokkos::PairLJGromacsCoulGromacsKokkos(LAMMP execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_ljsq = 0.0; - cut_coulsq = 0.0; - } /* ---------------------------------------------------------------------- */ @@ -58,38 +54,17 @@ PairLJGromacsCoulGromacsKokkos::PairLJGromacsCoulGromacsKokkos(LAMMP template PairLJGromacsCoulGromacsKokkos::~PairLJGromacsCoulGromacsKokkos() { - if (!copymode) { + if (copymode) return; + + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - k_cut_ljsq = DAT::tdual_ffloat_2d(); - k_cut_coulsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - //memory->sfree(cut_ljsq); - //memory->sfree(cut_coulsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; - cut_ljsq = 0.0; - cut_coulsq = 0.0; + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJGromacsCoulGromacsKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_ljsq = 0.0; - eatom = nullptr; - vatom = nullptr; - ftable = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJGromacsCoulGromacsKokkos::compute(int eflag_in, int vflag_in) { @@ -115,8 +90,6 @@ void PairLJGromacsCoulGromacsKokkos::compute(int eflag_in, int vflag atomKK->sync(execution_space,datamask_read); k_cutsq.template sync(); - k_cut_ljsq.template sync(); - k_cut_coulsq.template sync(); k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -298,12 +271,11 @@ void PairLJGromacsCoulGromacsKokkos::allocate() memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); - //memory->destroy(cut_ljsq); - memoryKK->create_kokkos(k_cut_ljsq,n+1,n+1,"pair:cut_ljsq"); - d_cut_ljsq = k_cut_ljsq.template view(); + d_cut_ljsq = typename AT::t_ffloat_2d("pair:cut_ljsq",n+1,n+1); + Kokkos::deep_copy(d_cut_ljsq,cut_ljsq); - memoryKK->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); - d_cut_coulsq = k_cut_coulsq.template view(); + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); k_params = Kokkos::DualView("PairLJGromacsCoulGromacs::params",n+1,n+1); params = k_params.template view(); @@ -499,10 +471,6 @@ double PairLJGromacsCoulGromacsKokkos::init_one(int i, int j) k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; - k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; - k_cut_coulsq.template modify(); k_params.template modify(); return cutone; diff --git a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.h b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.h index 88dbf28699..803a55c9c2 100644 --- a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.h +++ b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.h @@ -54,8 +54,6 @@ class PairLJGromacsCoulGromacsKokkos : public PairLJGromacsCoulGromacs { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, @@ -100,9 +98,7 @@ class PairLJGromacsCoulGromacsKokkos : public PairLJGromacsCoulGromacs { typename AT::tdual_ffloat_2d k_cutsq; typename AT::t_ffloat_2d d_cutsq; - typename AT::tdual_ffloat_2d k_cut_ljsq; typename AT::t_ffloat_2d d_cut_ljsq; - typename AT::tdual_ffloat_2d k_cut_coulsq; typename AT::t_ffloat_2d d_cut_coulsq; typename AT::t_ffloat_1d_randomread diff --git a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp index 58fe845b71..411cd96a78 100644 --- a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp @@ -47,10 +47,6 @@ PairLJGromacsKokkos::PairLJGromacsKokkos(LAMMPS *lmp):PairLJGromacs( execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; - cut_inner = nullptr; - cut_inner_sq = nullptr; - } /* ---------------------------------------------------------------------- */ @@ -58,35 +54,17 @@ PairLJGromacsKokkos::PairLJGromacsKokkos(LAMMPS *lmp):PairLJGromacs( template PairLJGromacsKokkos::~PairLJGromacsKokkos() { - if (!copymode) { + if (copymode) return; + + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - k_cut_inner_sq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; - cut_inner = nullptr; - cut_inner_sq = nullptr; + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJGromacsKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - cut_inner = nullptr; - cut_inner_sq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJGromacsKokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_lj_gromacs_kokkos.h b/src/KOKKOS/pair_lj_gromacs_kokkos.h index 47804ffe0a..b0e4888af4 100644 --- a/src/KOKKOS/pair_lj_gromacs_kokkos.h +++ b/src/KOKKOS/pair_lj_gromacs_kokkos.h @@ -53,8 +53,6 @@ class PairLJGromacsKokkos : public PairLJGromacs { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, diff --git a/src/KOKKOS/pair_lj_sdk_kokkos.cpp b/src/KOKKOS/pair_lj_sdk_kokkos.cpp index f8f1fa87cc..698b6baf5f 100644 --- a/src/KOKKOS/pair_lj_sdk_kokkos.cpp +++ b/src/KOKKOS/pair_lj_sdk_kokkos.cpp @@ -47,7 +47,6 @@ PairLJSDKKokkos::PairLJSDKKokkos(LAMMPS *lmp) : PairLJSDK(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; } /* ---------------------------------------------------------------------- */ @@ -55,26 +54,17 @@ PairLJSDKKokkos::PairLJSDKKokkos(LAMMPS *lmp) : PairLJSDK(lmp) template PairLJSDKKokkos::~PairLJSDKKokkos() { + if (copymode) return; + if (allocated) { - k_cutsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - cutsq = nullptr; + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairLJSDKKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairLJSDKKokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_lj_sdk_kokkos.h b/src/KOKKOS/pair_lj_sdk_kokkos.h index 470bda1f9f..f8eddbde4d 100644 --- a/src/KOKKOS/pair_lj_sdk_kokkos.h +++ b/src/KOKKOS/pair_lj_sdk_kokkos.h @@ -54,8 +54,6 @@ class PairLJSDKKokkos : public PairLJSDK { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; diff --git a/src/KOKKOS/pair_morse_kokkos.cpp b/src/KOKKOS/pair_morse_kokkos.cpp index 74c2934510..3abc514ce6 100644 --- a/src/KOKKOS/pair_morse_kokkos.cpp +++ b/src/KOKKOS/pair_morse_kokkos.cpp @@ -49,7 +49,6 @@ PairMorseKokkos::PairMorseKokkos(LAMMPS *lmp) : PairMorse(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; } /* ---------------------------------------------------------------------- */ @@ -57,30 +56,17 @@ PairMorseKokkos::PairMorseKokkos(LAMMPS *lmp) : PairMorse(lmp) template PairMorseKokkos::~PairMorseKokkos() { + if (copymode) return; + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } /* ---------------------------------------------------------------------- */ -template -void PairMorseKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - -/* ---------------------------------------------------------------------- */ - template void PairMorseKokkos::compute(int eflag_in, int vflag_in) { diff --git a/src/KOKKOS/pair_morse_kokkos.h b/src/KOKKOS/pair_morse_kokkos.h index d747cc9e1e..9a0cfeef49 100644 --- a/src/KOKKOS/pair_morse_kokkos.h +++ b/src/KOKKOS/pair_morse_kokkos.h @@ -52,8 +52,6 @@ class PairMorseKokkos : public PairMorse { }; protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; diff --git a/src/KOKKOS/pair_reaxc_kokkos.h b/src/KOKKOS/pair_reaxc_kokkos.h index d54f275d6f..1de29af100 100644 --- a/src/KOKKOS/pair_reaxc_kokkos.h +++ b/src/KOKKOS/pair_reaxc_kokkos.h @@ -331,7 +331,6 @@ class PairReaxCKokkos : public PairReaxC { F_FLOAT *fi, F_FLOAT *fj, F_FLOAT *fk, F_FLOAT *dril, F_FLOAT *drjl, F_FLOAT *drkl) const; protected: - void cleanup_copy(); void allocate(); void allocate_array(); void setup(); diff --git a/src/KOKKOS/pair_table_kokkos.cpp b/src/KOKKOS/pair_table_kokkos.cpp index e0dc8e0d25..f51d08399d 100644 --- a/src/KOKKOS/pair_table_kokkos.cpp +++ b/src/KOKKOS/pair_table_kokkos.cpp @@ -50,11 +50,11 @@ template PairTableKokkos::~PairTableKokkos() { if (copymode) return; + delete h_table; h_table = nullptr; delete d_table; d_table = nullptr; - copymode = true; //prevents base class destructor from running } /* ---------------------------------------------------------------------- */ @@ -519,16 +519,6 @@ void PairTableKokkos::init_style() } } -template -void PairTableKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; - h_table=nullptr; d_table=nullptr; -} - namespace LAMMPS_NS { template class PairTableKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/pair_table_kokkos.h b/src/KOKKOS/pair_table_kokkos.h index ed4e73b095..2d0ba46f11 100644 --- a/src/KOKKOS/pair_table_kokkos.h +++ b/src/KOKKOS/pair_table_kokkos.h @@ -120,7 +120,6 @@ class PairTableKokkos : public PairTable { int update_table; void create_kokkos_tables(); - void cleanup_copy(); template KOKKOS_INLINE_FUNCTION diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 41b0343443..815df9f382 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -1280,16 +1280,6 @@ void PairTableRXKokkos::init_style() } } -template -void PairTableRXKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; - h_table=nullptr; d_table=nullptr; -} - namespace LAMMPS_NS { template class PairTableRXKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index 7aba307476..853b561137 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -90,7 +90,6 @@ class PairTableRXKokkos : public PairTable { int update_table; void create_kokkos_tables(); - void cleanup_copy(); friend void pair_virial_fdotr_compute(PairTableRXKokkos*); diff --git a/src/KOKKOS/pair_tersoff_kokkos.h b/src/KOKKOS/pair_tersoff_kokkos.h index dbc6dc7901..017839c176 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.h +++ b/src/KOKKOS/pair_tersoff_kokkos.h @@ -181,8 +181,6 @@ class PairTersoffKokkos : public PairTersoff { void setup_params(); protected: - void cleanup_copy(); - typedef Kokkos::DualView tdual_int_3d; Kokkos::DualView k_params; typename Kokkos::DualView tdual_int_3d; Kokkos::DualView k_params; typename Kokkos::DualView tdual_int_3d; Kokkos::DualView k_params; typename Kokkos::DualView::PairYukawaKokkos(LAMMPS *lmp) : PairYukawa(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = nullptr; } /* ---------------------------------------------------------------------- */ @@ -54,28 +53,15 @@ PairYukawaKokkos::PairYukawaKokkos(LAMMPS *lmp) : PairYukawa(lmp) template PairYukawaKokkos::~PairYukawaKokkos() { + if (copymode) return; + if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; + memoryKK->destroy_kokkos(k_cutsq,cutsq); } } -/* ---------------------------------------------------------------------- */ - -template -void PairYukawaKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - /* ---------------------------------------------------------------------- allocate all arrays ------------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_yukawa_kokkos.h b/src/KOKKOS/pair_yukawa_kokkos.h index a78f9d5f7c..db262f0d4f 100644 --- a/src/KOKKOS/pair_yukawa_kokkos.h +++ b/src/KOKKOS/pair_yukawa_kokkos.h @@ -53,8 +53,6 @@ class PairYukawaKokkos : public PairYukawa { protected: - void cleanup_copy(); - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, diff --git a/src/KOKKOS/pair_zbl_kokkos.cpp b/src/KOKKOS/pair_zbl_kokkos.cpp index 954c2edf26..fbb37cdb81 100644 --- a/src/KOKKOS/pair_zbl_kokkos.cpp +++ b/src/KOKKOS/pair_zbl_kokkos.cpp @@ -62,10 +62,6 @@ PairZBLKokkos::~PairZBLKokkos() if (allocated) { memoryKK->destroy_kokkos(k_eatom,eatom); memoryKK->destroy_kokkos(k_vatom,vatom); - memory->sfree(cutsq); - eatom = nullptr; - vatom = nullptr; - cutsq = nullptr; } } @@ -412,18 +408,6 @@ F_FLOAT PairZBLKokkos::d2zbldr2(F_FLOAT r, int i, int j) const { return result; } - -/* ---------------------------------------------------------------------- */ - -template -void PairZBLKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = nullptr; - eatom = nullptr; - vatom = nullptr; -} - namespace LAMMPS_NS { template class PairZBLKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/pair_zbl_kokkos.h b/src/KOKKOS/pair_zbl_kokkos.h index e5332af4a9..3cd2a3b647 100644 --- a/src/KOKKOS/pair_zbl_kokkos.h +++ b/src/KOKKOS/pair_zbl_kokkos.h @@ -86,7 +86,6 @@ class PairZBLKokkos : public PairZBL { F_FLOAT compute_ecoul(const F_FLOAT& /*rsq*/, const int& /*i*/, const int& /*j*/, const int& /*itype*/, const int& /*jtype*/) const { return 0; } - void cleanup_copy(); void allocate(); friend struct PairComputeFunctor;