*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011-2019, by the GROMACS development team, led by
+ * Copyright (c) 2011-2019,2020, 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.
// algorithm is active, but currently does not.
EEL_PME(inputrec->coulombtype) && thisRankHasDuty(cr, DUTY_PME));
- const bool printHostName = (cr->nnodes > 1);
- gpuTaskAssignments.reportGpuUsage(mdlog, printHostName, useGpuForBonded, pmeRunMode);
-
- // If the user chose a task assignment, give them some hints
- // where appropriate.
- if (!userGpuTaskAssignment.empty())
- {
- gpuTaskAssignments.logPerformanceHints(mdlog, ssize(gpuIdsToUse));
- }
-
// Get the device handles for the modules, nullptr when no task is assigned.
gmx_device_info_t* nonbondedDeviceInfo = gpuTaskAssignments.initNonbondedDevice(cr);
gmx_device_info_t* pmeDeviceInfo = gpuTaskAssignments.initPmeDevice();
}
GMX_CATCH_ALL_AND_EXIT_WITH_FATAL_ERROR
+ const bool printHostName = (cr->nnodes > 1);
+ gpuTaskAssignments.reportGpuUsage(mdlog, printHostName, useGpuForBonded, pmeRunMode, useGpuForUpdate);
+
+ // If the user chose a task assignment, give them some hints
+ // where appropriate.
+ if (!userGpuTaskAssignment.empty())
+ {
+ gpuTaskAssignments.logPerformanceHints(mdlog, ssize(gpuIdsToUse));
+ }
+
if (PAR(cr))
{
/* After possible communicator splitting in make_dd_communicators.
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2017,2018,2019, by the GROMACS development team, led by
+ * Copyright (c) 2017,2018,2019,2020, 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.
size_t numRanks,
bool printHostName,
bool useGpuForBonded,
- PmeRunMode pmeRunMode)
+ PmeRunMode pmeRunMode,
+ bool useGpuForUpdate)
{
size_t numGpusInUse = countUniqueGpuIdsUsed(gpuTaskAssignmentOnRanksOfThisNode);
if (numGpusInUse == 0)
{
output += gmx::formatString("PME tasks will do all aspects on the GPU\n");
}
+ output += gmx::formatString("Coordinates will be updated and constrained on the %s.",
+ useGpuForUpdate ? "GPU" : "CPU");
}
/* NOTE: this print is only for and on one physical node */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2017,2018,2019, by the GROMACS development team, led by
+ * Copyright (c) 2017,2018,2019,2020, 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.
* \param[in] numGpuTasksOnThisNode The number of GPU tasks on this node.
* \param[in] numPpRanks Number of PP ranks on this node
* \param[in] printHostName Print the hostname in the usage information
- * \param[in] useGpuForBonded Whether GPU PP tasks will do bonded work on the
- * GPU \param[in] pmeRunMode Describes the execution of PME tasks
+ * \param[in] useGpuForBonded Whether GPU PP tasks will do bonded work on GPU
+ * \param[in] pmeRunMode Describes the execution of PME tasks
+ * \param[in] useGpuForUpdate Whether update will run on the GPU.
*
* \throws std::bad_alloc if out of memory */
void reportGpuUsage(const MDLogger& mdlog,
size_t numPpRanks,
bool printHostName,
bool useGpuForBonded,
- PmeRunMode pmeRunMode);
+ PmeRunMode pmeRunMode,
+ bool useGpuForUpdate);
} // namespace gmx
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2017,2018,2019, by the GROMACS development team, led by
+ * Copyright (c) 2017,2018,2019,2020, 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.
void GpuTaskAssignments::reportGpuUsage(const MDLogger& mdlog,
bool printHostName,
bool useGpuForBonded,
- PmeRunMode pmeRunMode)
+ PmeRunMode pmeRunMode,
+ bool useGpuForUpdate)
{
gmx::reportGpuUsage(mdlog, assignmentForAllRanksOnThisNode_, numGpuTasksOnThisNode_,
- numRanksOnThisNode_, printHostName, useGpuForBonded, pmeRunMode);
+ numRanksOnThisNode_, printHostName, useGpuForBonded, pmeRunMode, useGpuForUpdate);
}
gmx_device_info_t* GpuTaskAssignments::initNonbondedDevice(const t_commrec* cr) const
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2017,2018,2019, by the GROMACS development team, led by
+ * Copyright (c) 2017,2018,2019,2020, 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.
* and in what way.
*
* \param[in] mdlog Logging object.
- * \param[in] printHostName Print the hostname in the usage information
- * \param[in] useGpuForBonded Whether GPU PP tasks will do bonded work on the GPU
- * \param[in] pmeRunMode Describes the execution of PME tasks
+ * \param[in] printHostName Print the hostname in the usage information.
+ * \param[in] useGpuForBonded Whether GPU PP tasks will do bonded work on the GPU.
+ * \param[in] pmeRunMode Describes the execution of PME tasks.
+ * \param[in] useGpuForUpdate Whether the update is offloaded on the GPU.
*
- * \throws std::bad_alloc if out of memory */
- void reportGpuUsage(const MDLogger& mdlog, bool printHostName, bool useGpuForBonded, PmeRunMode pmeRunMode);
+ * \throws std::bad_alloc if out of memory
+ */
+ void reportGpuUsage(const MDLogger& mdlog,
+ bool printHostName,
+ bool useGpuForBonded,
+ PmeRunMode pmeRunMode,
+ bool useGpuForUpdate);
+
/*! \brief Logs to \c mdlog information that may help a user
* learn how to let mdrun make a task assignment that runs
* faster.