From bf4f0817d4f85bc22a6f1b3a01b40b8f23b46a6b Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 31 Mar 2017 15:57:00 -0600 Subject: [PATCH 1/2] fix memory leaks in pair_tabl_rx_kokkos --- src/KOKKOS/pair_table_rx_kokkos.cpp | 19 ++++++++++++++----- src/USER-DPD/pair_table_rx.cpp | 10 ++++++++++ src/USER-DPD/pair_table_rx.h | 2 +- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 044f303bf5..eacaf83cf5 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -147,6 +147,9 @@ PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTable(lmp) h_table = new TableHost(); d_table = new TableDevice(); fractionalWeighting = true; + + site1 = nullptr; + site2 = nullptr; } /* ---------------------------------------------------------------------- */ @@ -156,14 +159,21 @@ PairTableRXKokkos::~PairTableRXKokkos() { if (copymode) return; + delete [] site1; + delete [] site2; + memory->destroy_kokkos(k_eatom,eatom); memory->destroy_kokkos(k_vatom,vatom); + if (allocated) { + memory->destroy_kokkos(d_table->cutsq, cutsq); + memory->destroy_kokkos(d_table->tabindex, tabindex); + } + delete h_table; h_table = nullptr; delete d_table; d_table = nullptr; - copymode = true; //prevents base class destructor from running } /* ---------------------------------------------------------------------- */ @@ -981,6 +991,8 @@ void PairTableRXKokkos::settings(int narg, char **arg) for (int m = 0; m < ntables; m++) free_table(&tables[m]); memory->sfree(tables); + ntables = 0; + tables = NULL; if (allocated) { memory->destroy(setflag); @@ -990,11 +1002,8 @@ void PairTableRXKokkos::settings(int narg, char **arg) d_table_const.cutsq = d_table->cutsq = typename ArrayTypes::t_ffloat_2d(); h_table->cutsq = typename ArrayTypes::t_ffloat_2d(); + allocated = 0; } - allocated = 0; - - ntables = 0; - tables = NULL; } /* ---------------------------------------------------------------------- diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index cf85fe2e60..89d09e7322 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -47,6 +47,16 @@ enum{NONE,RLINEAR,RSQ,BMP}; PairTableRX::PairTableRX(LAMMPS *lmp) : PairTable(lmp) { fractionalWeighting = true; + site1 = NULL; + site2 = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairTableRX::~PairTableRX() +{ + delete [] site1; + delete [] site2; } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-DPD/pair_table_rx.h b/src/USER-DPD/pair_table_rx.h index 9dee5df266..da7889e99a 100644 --- a/src/USER-DPD/pair_table_rx.h +++ b/src/USER-DPD/pair_table_rx.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairTableRX : public PairTable { public: PairTableRX(class LAMMPS *); - virtual ~PairTableRX() {} + virtual ~PairTableRX(); virtual void compute(int, int); void settings(int, char **); From 5edbd63920681f585b054d4aebf2fb7eb462f5ce Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 31 Mar 2017 16:03:05 -0600 Subject: [PATCH 2/2] fix memory leak in fix_shardlow_kokkos --- src/KOKKOS/fix_shardlow_kokkos.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 676df07b61..52287d586c 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -741,6 +741,7 @@ fprintf(stdout, "\n%6d %6d,%6d %6d: " ); #endif + copymode = 0; } /* ---------------------------------------------------------------------- */