auto pairSearch = std::make_unique<PairSearch>(
PbcType::Xyz, false, nullptr, nullptr, pairlistParams.pairlistType, false, numThreads, pinPolicy);
- auto atomData = std::make_unique<nbnxn_atomdata_t>(pinPolicy);
-
- // Needs to be called with the number of unique ParticleTypes
- nbnxn_atomdata_init(gmx::MDLogger(),
- atomData.get(),
- kernelSetup.kernelType,
- combinationRule,
- numParticleTypes,
- nonbondedParameters_,
- 1,
- numThreads);
+ auto atomData = std::make_unique<nbnxn_atomdata_t>(pinPolicy,
+ gmx::MDLogger(),
+ kernelSetup.kernelType,
+ combinationRule,
+ numParticleTypes,
+ nonbondedParameters_,
+ 1,
+ numThreads);
// Put everything together
auto nbv = std::make_unique<nonbonded_verlet_t>(
{
}
-nbnxn_atomdata_t::nbnxn_atomdata_t(gmx::PinningPolicy pinningPolicy) :
- params_(pinningPolicy),
- numAtoms_(0),
- natoms_local(0),
- shift_vec({}, { pinningPolicy }),
- x_({}, { pinningPolicy }),
- simdMasks(),
- bUseBufferFlags(FALSE)
-{
-}
-
/* Initializes an nbnxn_atomdata_t::Params data structure */
static void nbnxn_atomdata_params_init(const gmx::MDLogger& mdlog,
nbnxn_atomdata_t::Params* params,
}
/* Initializes an nbnxn_atomdata_t data structure */
-void nbnxn_atomdata_init(const gmx::MDLogger& mdlog,
- nbnxn_atomdata_t* nbat,
- const Nbnxm::KernelType kernelType,
- int enbnxninitcombrule,
- int ntype,
- ArrayRef<const real> nbfp,
- int n_energygroups,
- int nout)
+nbnxn_atomdata_t::nbnxn_atomdata_t(gmx::PinningPolicy pinningPolicy,
+ const gmx::MDLogger& mdlog,
+ const Nbnxm::KernelType kernelType,
+ int enbnxninitcombrule,
+ int ntype,
+ ArrayRef<const real> nbfp,
+ int n_energygroups,
+ int nout) :
+ params_(pinningPolicy),
+ numAtoms_(0),
+ natoms_local(0),
+ shift_vec({}, { pinningPolicy }),
+ x_({}, { pinningPolicy }),
+ simdMasks(),
+ bUseBufferFlags(FALSE)
{
nbnxn_atomdata_params_init(
- mdlog, &nbat->paramsDeprecated(), kernelType, enbnxninitcombrule, ntype, nbfp, n_energygroups);
+ mdlog, ¶msDeprecated(), kernelType, enbnxninitcombrule, ntype, nbfp, n_energygroups);
const bool simple = Nbnxm::kernelTypeUsesSimplePairlist(kernelType);
const bool bSIMD = Nbnxm::kernelTypeIsSimd(kernelType);
int pack_x = std::max(c_nbnxnCpuIClusterSize, Nbnxm::JClusterSizePerKernelType[kernelType]);
switch (pack_x)
{
- case 4: nbat->XFormat = nbatX4; break;
- case 8: nbat->XFormat = nbatX8; break;
+ case 4: XFormat = nbatX4; break;
+ case 8: XFormat = nbatX8; break;
default: gmx_incons("Unsupported packing width");
}
}
else
{
- nbat->XFormat = nbatXYZ;
+ XFormat = nbatXYZ;
}
- nbat->FFormat = nbat->XFormat;
+ FFormat = XFormat;
}
else
{
- nbat->XFormat = nbatXYZQ;
- nbat->FFormat = nbatXYZ;
+ XFormat = nbatXYZQ;
+ FFormat = nbatXYZ;
}
- nbat->shift_vec.resize(gmx::c_numShiftVectors);
+ shift_vec.resize(gmx::c_numShiftVectors);
- nbat->xstride = (nbat->XFormat == nbatXYZQ ? STRIDE_XYZQ : DIM);
- nbat->fstride = (nbat->FFormat == nbatXYZQ ? STRIDE_XYZQ : DIM);
+ xstride = (XFormat == nbatXYZQ ? STRIDE_XYZQ : DIM);
+ fstride = (FFormat == nbatXYZQ ? STRIDE_XYZQ : DIM);
/* Initialize the output data structures */
for (int i = 0; i < nout; i++)
{
- const auto& pinningPolicy = nbat->params().type.get_allocator().pinningPolicy();
- nbat->out.emplace_back(
- kernelType, nbat->params().nenergrp, 1 << nbat->params().neg_2log, pinningPolicy);
+ const auto& pinningPolicy = params().type.get_allocator().pinningPolicy();
+ out.emplace_back(kernelType, params().nenergrp, 1 << params().neg_2log, pinningPolicy);
}
- nbat->buffer_flags.clear();
+ buffer_flags.clear();
}
template<int packSize>
/*! \brief Constructor
*
- * \param[in] pinningPolicy Sets the pinning policy for all data that might be transferred to a GPU
+ * \param[in] pinningPolicy Sets the pinning policy for all data that might be transferred
+ * to a GPU
+ * \param[in] mdlog The logger
+ * \param[in] kernelType Nonbonded NxN kernel type
+ * \param[in] enbnxninitcombrule LJ combination rule
+ * \param[in] ntype Number of atom types
+ * \param[in] nbfp Non-bonded force parameters
+ * \param[in] n_energygroups Number of energy groups
+ * \param[in] nout Number of output data structures
*/
- nbnxn_atomdata_t(gmx::PinningPolicy pinningPolicy);
+ nbnxn_atomdata_t(gmx::PinningPolicy pinningPolicy,
+ const gmx::MDLogger& mdlog,
+ Nbnxm::KernelType kernelType,
+ int enbnxninitcombrule,
+ int ntype,
+ gmx::ArrayRef<const real> nbfp,
+ int n_energygroups,
+ int nout);
//! Returns a const reference to the parameters
const Params& params() const { return params_; }
auto pairSearch = std::make_unique<PairSearch>(
PbcType::Xyz, false, nullptr, nullptr, pairlistParams.pairlistType, false, numThreads, pinPolicy);
- auto atomData = std::make_unique<nbnxn_atomdata_t>(pinPolicy);
+ auto atomData = std::make_unique<nbnxn_atomdata_t>(pinPolicy,
+ gmx::MDLogger(),
+ kernelSetup.kernelType,
+ combinationRule,
+ system.numAtomTypes,
+ system.nonbondedParameters,
+ 1,
+ numThreads);
// Put everything together
auto nbv = std::make_unique<nonbonded_verlet_t>(
std::move(pairlistSets), std::move(pairSearch), std::move(atomData), kernelSetup, nullptr, nullptr);
- nbnxn_atomdata_init(gmx::MDLogger(),
- nbv->nbat.get(),
- kernelSetup.kernelType,
- combinationRule,
- system.numAtomTypes,
- system.nonbondedParameters,
- 1,
- numThreads);
-
t_nrnb nrnb;
GMX_RELEASE_ASSERT(!TRICLINIC(system.box), "Only rectangular unit-cells are supported here");