}
// TODO: Move to pairlistset.cpp
-PairlistSet::PairlistSet(const InteractionLocality locality, const PairlistParams& pairlistParams) :
- locality_(locality),
+PairlistSet::PairlistSet(const PairlistParams& pairlistParams) :
params_(pairlistParams),
combineLists_(sc_isGpuPairListType[pairlistParams.pairlistType]), // Currently GPU lists are always combined
isCpuType_(!sc_isGpuPairListType[pairlistParams.pairlistType])
//! Prepares CPU lists produced by the search for dynamic pruning
static void prepareListsForDynamicPruning(gmx::ArrayRef<NbnxnPairlistCpu> lists);
-void PairlistSet::constructPairlists(const Nbnxm::GridSet& gridSet,
+void PairlistSet::constructPairlists(gmx::InteractionLocality locality,
+ const Nbnxm::GridSet& gridSet,
gmx::ArrayRef<PairsearchWork> searchWork,
nbnxn_atomdata_t* nbat,
const ListOfLists<int>& exclusions,
nbat->bUseBufferFlags = (nbat->out.size() > 1);
/* We should re-init the flags before making the first list */
- if (nbat->bUseBufferFlags && locality_ == InteractionLocality::Local)
+ if (nbat->bUseBufferFlags && locality == InteractionLocality::Local)
{
resizeAndZeroBufferFlags(&nbat->buffer_flags, nbat->numAtoms());
}
if (!isCpuType_ && minimumIlistCountForGpuBalancing > 0)
{
get_nsubpair_target(
- gridSet, locality_, rlist, minimumIlistCountForGpuBalancing, &nsubpair_target, &nsubpair_tot_est);
+ gridSet, locality, rlist, minimumIlistCountForGpuBalancing, &nsubpair_target, &nsubpair_tot_est);
}
/* Clear all pair-lists */
}
const gmx_domdec_zones_t* ddZones = gridSet.domainSetup().zones;
- GMX_ASSERT(locality_ == InteractionLocality::Local || ddZones != nullptr,
+ GMX_ASSERT(locality == InteractionLocality::Local || ddZones != nullptr,
"Nonlocal interaction locality with null ddZones.");
- const auto iZoneRange = getIZoneRange(gridSet.domainSetup(), locality_);
+ const auto iZoneRange = getIZoneRange(gridSet.domainSetup(), locality);
for (const int iZone : iZoneRange)
{
const Grid& iGrid = gridSet.grids()[iZone];
- const auto jZoneRange = getJZoneRange(ddZones, locality_, iZone);
+ const auto jZoneRange = getJZoneRange(ddZones, locality, iZone);
for (int jZone : jZoneRange)
{
/* With GPU: generate progressively smaller lists for
* load balancing for local only or non-local with 2 zones.
*/
- const bool progBal = (locality_ == InteractionLocality::Local || ddZones->n <= 2);
+ const bool progBal = (locality == InteractionLocality::Local || ddZones->n <= 2);
#pragma omp parallel for num_threads(numLists) schedule(static)
for (int th = 0; th < numLists; th++)
"exclusions should either be empty or the number of lists should match the number of "
"local i-atoms");
- pairlistSet(iLocality).constructPairlists(gridSet,
+ pairlistSet(iLocality).constructPairlists(iLocality,
+ gridSet,
pairSearch->work(),
nbat,
exclusions,
* This file is part of the GROMACS molecular simulation package.
*
* Copyright (c) 2012,2013,2014,2015,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
{
public:
//! Constructor: initializes the pairlist set as empty
- PairlistSet(gmx::InteractionLocality locality, const PairlistParams& listParams);
+ PairlistSet(const PairlistParams& listParams);
~PairlistSet();
//! Constructs the pairlists in the set using the coordinates in \p nbat
- void constructPairlists(const Nbnxm::GridSet& gridSet,
+ void constructPairlists(gmx::InteractionLocality locality,
+ const Nbnxm::GridSet& gridSet,
gmx::ArrayRef<PairsearchWork> searchWork,
nbnxn_atomdata_t* nbat,
const gmx::ListOfLists<int>& exclusions,
//! Dispatch the kernel for dynamic pairlist pruning
void dispatchPruneKernel(const nbnxn_atomdata_t* nbat, const rvec* shift_vec);
- //! Returns the locality
- gmx::InteractionLocality locality() const { return locality_; }
-
//! Returns the lists of CPU pairlists
gmx::ArrayRef<const NbnxnPairlistCpu> cpuLists() const { return cpuLists_; }
gmx::ArrayRef<const std::unique_ptr<t_nblist>> fepLists() const { return fepLists_; }
private:
- //! The locality of the pairlist set
- gmx::InteractionLocality locality_;
//! List of pairlists in CPU layout
std::vector<NbnxnPairlistCpu> cpuLists_;
//! List of working list for rebalancing CPU lists