Re-arranged the binsize call from the GPU lib in Atom so that the box bounds and bininv[xyz] are computed on the CPU side intact
This commit is contained in:
44
src/atom.cpp
44
src/atom.cpp
@ -2195,6 +2195,21 @@ void Atom::setup_sort_bins()
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef LMP_GPU
|
||||
if (userbinsize == 0.0) {
|
||||
int ifix = modify->find_fix("package_gpu");
|
||||
if (ifix >= 0) {
|
||||
const double subx = domain->subhi[0] - domain->sublo[0];
|
||||
const double suby = domain->subhi[1] - domain->sublo[1];
|
||||
const double subz = domain->subhi[2] - domain->sublo[2];
|
||||
|
||||
FixGPU *fix = static_cast<FixGPU *>(modify->fix[ifix]);
|
||||
binsize = fix->binsize(subx, suby, subz, atom->nlocal,
|
||||
0.5 * neighbor->cutneighmax);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
double bininv = 1.0/binsize;
|
||||
|
||||
// nbin xyz = local bins
|
||||
@ -2271,35 +2286,6 @@ void Atom::setup_sort_bins()
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LMP_GPU
|
||||
if (userbinsize == 0.0) {
|
||||
int ifix = modify->find_fix("package_gpu");
|
||||
if (ifix >= 0) {
|
||||
const double subx = domain->subhi[0] - domain->sublo[0];
|
||||
const double suby = domain->subhi[1] - domain->sublo[1];
|
||||
const double subz = domain->subhi[2] - domain->sublo[2];
|
||||
|
||||
FixGPU *fix = static_cast<FixGPU *>(modify->fix[ifix]);
|
||||
binsize = fix->binsize(subx, suby, subz, atom->nlocal,
|
||||
neighbor->cutneighmax);
|
||||
bininv = 1.0 / binsize;
|
||||
|
||||
nbinx = static_cast<int> (ceil(subx * bininv));
|
||||
nbiny = static_cast<int> (ceil(suby * bininv));
|
||||
nbinz = static_cast<int> (ceil(subz * bininv));
|
||||
if (domain->dimension == 2) nbinz = 1;
|
||||
|
||||
if (nbinx == 0) nbinx = 1;
|
||||
if (nbiny == 0) nbiny = 1;
|
||||
if (nbinz == 0) nbinz = 1;
|
||||
|
||||
bininvx = bininv;
|
||||
bininvy = bininv;
|
||||
bininvz = bininv;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (1.0*nbinx*nbiny*nbinz > INT_MAX)
|
||||
error->one(FLERR,"Too many atom sorting bins");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user