Fixed bugs with kernel (re)compiling when the global device got cleared and then reinitialized

This commit is contained in:
Trung Nguyen
2019-10-31 01:15:53 -05:00
parent 86f644979c
commit e119bffcca
6 changed files with 24 additions and 6 deletions

View File

@ -26,15 +26,16 @@ BaseAtomicT::BaseAtomic() : _compiled(false), _max_bytes(0) {
ans=new Answer<numtyp,acctyp>();
nbor=new Neighbor();
pair_program=NULL;
ucl_device=NULL;
}
template <class numtyp, class acctyp>
BaseAtomicT::~BaseAtomic() {
delete ans;
delete nbor;
if (pair_program) delete pair_program;
k_pair_fast.clear();
k_pair.clear();
if (pair_program) delete pair_program;
}
template <class numtyp, class acctyp>
@ -78,6 +79,8 @@ int BaseAtomicT::init_atomic(const int nlocal, const int nall,
if (success!=0)
return success;
if (ucl_device!=device->gpu) _compiled=false;
ucl_device=device->gpu;
atom=&device->atom;

View File

@ -26,15 +26,16 @@ BaseChargeT::BaseCharge() : _compiled(false), _max_bytes(0) {
ans=new Answer<numtyp,acctyp>();
nbor=new Neighbor();
pair_program=NULL;
ucl_device=NULL;
}
template <class numtyp, class acctyp>
BaseChargeT::~BaseCharge() {
delete ans;
delete nbor;
if (pair_program) delete pair_program;
k_pair_fast.clear();
k_pair.clear();
if (pair_program) delete pair_program;
}
template <class numtyp, class acctyp>
@ -78,6 +79,8 @@ int BaseChargeT::init_atomic(const int nlocal, const int nall,
if (success!=0)
return success;
if (ucl_device!=device->gpu) _compiled=false;
ucl_device=device->gpu;
atom=&device->atom;

View File

@ -26,15 +26,16 @@ BaseDipoleT::BaseDipole() : _compiled(false), _max_bytes(0) {
ans=new Answer<numtyp,acctyp>();
nbor=new Neighbor();
pair_program=NULL;
ucl_device=NULL;
}
template <class numtyp, class acctyp>
BaseDipoleT::~BaseDipole() {
delete ans;
delete nbor;
if (pair_program) delete pair_program;
k_pair_fast.clear();
k_pair.clear();
if (pair_program) delete pair_program;
}
template <class numtyp, class acctyp>
@ -79,6 +80,8 @@ int BaseDipoleT::init_atomic(const int nlocal, const int nall,
if (success!=0)
return success;
if (ucl_device!=device->gpu) _compiled=false;
ucl_device=device->gpu;
atom=&device->atom;

View File

@ -26,15 +26,16 @@ BaseDPDT::BaseDPD() : _compiled(false), _max_bytes(0) {
ans=new Answer<numtyp,acctyp>();
nbor=new Neighbor();
pair_program=NULL;
ucl_device=NULL;
}
template <class numtyp, class acctyp>
BaseDPDT::~BaseDPD() {
delete ans;
delete nbor;
if (pair_program) delete pair_program;
k_pair_fast.clear();
k_pair.clear();
if (pair_program) delete pair_program;
}
template <class numtyp, class acctyp>
@ -79,6 +80,8 @@ int BaseDPDT::init_atomic(const int nlocal, const int nall,
if (success!=0)
return success;
if (ucl_device!=device->gpu) _compiled=false;
ucl_device=device->gpu;
atom=&device->atom;

View File

@ -36,6 +36,7 @@ BaseEllipsoidT::BaseEllipsoid() : _compiled(false), _max_bytes(0) {
nbor_program=NULL;
ellipsoid_program=NULL;
lj_program=NULL;
ucl_device=NULL;
}
template <class numtyp, class acctyp>
@ -93,6 +94,8 @@ int BaseEllipsoidT::init_base(const int nlocal, const int nall,
if (success!=0)
return success;
if (ucl_device!=device->gpu) _compiled=false;
ucl_device=device->gpu;
atom=&device->atom;

View File

@ -28,6 +28,7 @@ BaseThreeT::BaseThree() : _compiled(false), _max_bytes(0) {
ans2=new Answer<numtyp,acctyp>();
#endif
pair_program=NULL;
ucl_device=NULL;
}
template <class numtyp, class acctyp>
@ -37,12 +38,12 @@ BaseThreeT::~BaseThree() {
#ifdef THREE_CONCURRENT
delete ans2;
#endif
if (pair_program) delete pair_program;
k_three_center.clear();
k_three_end.clear();
k_three_end_vatom.clear();
k_pair.clear();
k_short_nbor.clear();
if (pair_program) delete pair_program;
}
template <class numtyp, class acctyp>
@ -94,6 +95,8 @@ int BaseThreeT::init_three(const int nlocal, const int nall,
if (success!=0)
return success;
if (ucl_device!=device->gpu) _compiled=false;
ucl_device=device->gpu;
atom=&device->atom;