Ewald surface correction does not work and distance restraints do.
The graph can not be used, which is now asserted on.
Updated the user guide for these changes and missing restrictions.
Change-Id: Ica477462d55c047c8ae07284bbe20fba6f332f6b
Setting "gpu" requires that a compatible CUDA GPU is available.
Update and constraints on a GPU is currently not supported
with pressure coupling, free-energy, domain decomposition, virtual sites,
- replica exchange, the pull code, distance and orientation restraints
- and computational electrophysiology.
+ Ewald surface correction, replica exchange, the pull code,
+ orientation restraints and computational electrophysiology.
``-gpu_id``
A string that specifies the ID numbers of the GPUs that
GMX_RELEASE_ASSERT(ed == nullptr, "Essential dynamics is not supported with the GPU update.\n");
GMX_RELEASE_ASSERT(!ir->bPull && !ir->pull, "Pulling is not supported with the GPU update.\n");
GMX_RELEASE_ASSERT(fcd->orires.nr == 0, "Orientation restraints are not supported with the GPU update.\n");
- GMX_RELEASE_ASSERT(fcd->disres.npair == 0, "Distance restraints are not supported with the GPU update.\n");
GMX_RELEASE_ASSERT(ir->efep == efepNO, "Free energy perturbations are not supported with the GPU update.");
+ GMX_RELEASE_ASSERT(graph == nullptr, "The graph is not supported with GPU update.");
if (constr != nullptr && constr->numConstraintsTotal() > 0)
{
gmx_mtop_interaction_count(mtop, IF_VSITE) > 0,
doEssentialDynamics,
gmx_mtop_ftype_count(mtop, F_ORIRES) > 0,
- gmx_mtop_ftype_count(mtop, F_DISRES) > 0,
replExParams.exchangeInterval > 0);
}
GMX_CATCH_ALL_AND_EXIT_WITH_FATAL_ERROR;
const bool haveVSites,
const bool useEssentialDynamics,
const bool doOrientationRestraints,
- const bool doDistanceRestraints,
const bool useReplicaExchange)
{
// Coordinate D2H and H2d are missing as well as PBC reinitialization
errorMessage += "Pressure coupling is not supported.\n";
}
+ if (EEL_PME_EWALD(inputrec.coulombtype) && inputrec.epsilon_surface != 0)
+ {
+ // The graph is needed, but not supported
+ errorMessage += "Ewald surface correction is not supported.\n";
+ }
if (haveVSites)
{
errorMessage += "Virtual sites are not supported.\n";
}
if (inputrec.bPull || inputrec.pull)
{
+ // Pull potentials are actually supported, but constraint pulling is not
errorMessage += "Pulling is not supported.\n";
}
if (doOrientationRestraints)
{
+ // The graph is needed, but not supported
errorMessage += "Orientation restraints are not supported.\n";
}
- if (doDistanceRestraints)
- {
- errorMessage += "Distance restraints are not supported.\n";
- }
if (inputrec.efep != efepNO)
{
+ // Actually all free-energy options except for mass and constraint perturbation are supported
errorMessage += "Free energy perturbations are not supported.\n";
}
if (useReplicaExchange)
* \param[in] haveVSites If there are virtual sites in the system.
* \param[in] useEssentialDynamics If essential dynamics is active.
* \param[in] doOrientationRestraints If orientation restraints are enabled.
- * \param[in] doDistanceRestraints If distance restraints are enabled.
* \param[in] useReplicaExchange If this is a REMD simulation.
*
* \returns Whether complete simulation can be run on GPU.
bool haveVSites,
bool useEssentialDynamics,
bool doOrientationRestraints,
- bool doDistanceRestraints,
bool useReplicaExchange);