diff --git a/lib/gpu/lal_amoeba.cpp b/lib/gpu/lal_amoeba.cpp index 8adabbe6d5..6bf93a3eb5 100644 --- a/lib/gpu/lal_amoeba.cpp +++ b/lib/gpu/lal_amoeba.cpp @@ -128,14 +128,18 @@ double AmoebaT::host_memory_usage() const { // --------------------------------------------------------------------------- template int AmoebaT::udirect2b(const int eflag, const int vflag) { + int ainum=this->ans->inum(); + if (ainum == 0) + return 0; + int _nall=this->atom->nall(); int nbor_pitch=this->nbor->nbor_pitch(); - int ainum=this->ans->inum(); // Compute the block size and grid size to keep all cores busy const int BX=this->block_size(); int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); + this->time_pair.start(); // Build the short neighbor list if not done yet if (!this->short_nbor_avail) { @@ -164,14 +168,17 @@ int AmoebaT::udirect2b(const int eflag, const int vflag) { // --------------------------------------------------------------------------- template int AmoebaT::umutual2b(const int eflag, const int vflag) { + int ainum=this->ans->inum(); + if (ainum == 0) + return 0; + + int _nall=this->atom->nall(); + int nbor_pitch=this->nbor->nbor_pitch(); + // Compute the block size and grid size to keep all cores busy const int BX=this->block_size(); int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); - - int _nall=this->atom->nall(); - int ainum=this->ans->inum(); - int nbor_pitch=this->nbor->nbor_pitch(); this->time_pair.start(); // Build the short neighbor list if not done yet @@ -200,14 +207,17 @@ int AmoebaT::umutual2b(const int eflag, const int vflag) { // --------------------------------------------------------------------------- template int AmoebaT::polar_real(const int eflag, const int vflag) { + int ainum=this->ans->inum(); + if (ainum == 0) + return 0; + + int _nall=this->atom->nall(); + int nbor_pitch=this->nbor->nbor_pitch(); + // Compute the block size and grid size to keep all cores busy const int BX=this->block_size(); int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); - - int _nall=this->atom->nall(); - int ainum=this->ans->inum(); - int nbor_pitch=this->nbor->nbor_pitch(); this->time_pair.start(); // Build the short neighbor list if not done yet diff --git a/lib/gpu/lal_pppm.cpp b/lib/gpu/lal_pppm.cpp index 6e8fe237a6..87ab6fe775 100644 --- a/lib/gpu/lal_pppm.cpp +++ b/lib/gpu/lal_pppm.cpp @@ -342,13 +342,15 @@ void PPPMT::interp(const grdtyp qqrd2e_scale) { vd_brick.update_device(true); time_in.stop(); + int ainum=this->ans->inum(); + if (ainum==0) + return; + time_interp.start(); // Compute the block size and grid size to keep all cores busy int BX=this->block_size(); int GX=static_cast(ceil(static_cast(this->ans->inum())/BX)); - int ainum=this->ans->inum(); - k_interp.set_size(GX,BX); k_interp.run(&atom->x, &atom->q, &ainum, &vd_brick, &d_rho_coeff, &_npts_x, &_npts_yx, &_brick_x, &_brick_y, &_brick_z, &_delxinv,