+ // NOTE: The devFlags need decideWhetherToUseGpusForNonbonded(...) and decideWhetherToUseGpusForPme(...) for overrides,
+ // decideWhetherToUseGpuForUpdate() needs devFlags for the '-update auto' override, hence the interleaving.
+ // NOTE: When the simulationWork is constructed, the useGpuForUpdate overrides the devFlags.enableGpuBufferOps.
+ try
+ {
+ useGpuForUpdate = decideWhetherToUseGpuForUpdate(devFlags.forceGpuUpdateDefaultOn,
+ useDomainDecomposition,
+ useGpuForPme,
+ useGpuForNonbonded,
+ updateTarget,
+ gpusWereDetected,
+ *inputrec,
+ 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;
+
+