|
Gromacs
2025.4
|
#include "gmxpre.h"#include "runner.h"#include "config.h"#include <cassert>#include <cinttypes>#include <cmath>#include <csignal>#include <cstdlib>#include <cstring>#include <algorithm>#include <bitset>#include <filesystem>#include <memory>#include <optional>#include <utility>#include <variant>#include <vector>#include "gromacs/commandline/filenm.h"#include "gromacs/domdec/builder.h"#include "gromacs/domdec/domdec.h"#include "gromacs/domdec/domdec_struct.h"#include "gromacs/domdec/gpuhaloexchange.h"#include "gromacs/domdec/localatomsetmanager.h"#include "gromacs/domdec/makebondedlinks.h"#include "gromacs/domdec/partition.h"#include "gromacs/domdec/reversetopology.h"#include "gromacs/ewald/ewald_utils.h"#include "gromacs/ewald/pme.h"#include "gromacs/ewald/pme_gpu_program.h"#include "gromacs/ewald/pme_only.h"#include "gromacs/ewald/pme_pp_comm_gpu.h"#include "gromacs/fileio/checkpoint.h"#include "gromacs/fileio/filetypes.h"#include "gromacs/fileio/gmxfio.h"#include "gromacs/fileio/oenv.h"#include "gromacs/fileio/tpxio.h"#include "gromacs/fileio/trrio.h"#include "gromacs/gmxlib/network.h"#include "gromacs/gmxlib/nrnb.h"#include "gromacs/gpu_utils/device_stream_manager.h"#include "gromacs/gpu_utils/gpu_utils.h"#include "gromacs/gpu_utils/gpueventsynchronizer_helpers.h"#include "gromacs/gpu_utils/hostallocator.h"#include "gromacs/gpu_utils/nvshmem_utils.h"#include "gromacs/hardware/cpuinfo.h"#include "gromacs/hardware/detecthardware.h"#include "gromacs/hardware/device_management.h"#include "gromacs/hardware/hardwaretopology.h"#include "gromacs/hardware/printhardware.h"#include "gromacs/imd/imd.h"#include "gromacs/listed_forces/disre.h"#include "gromacs/listed_forces/listed_forces.h"#include "gromacs/listed_forces/listed_forces_gpu.h"#include "gromacs/listed_forces/orires.h"#include "gromacs/math/functions.h"#include "gromacs/math/matrix.h"#include "gromacs/math/utilities.h"#include "gromacs/math/vec.h"#include "gromacs/math/vectypes.h"#include "gromacs/mdlib/boxdeformation.h"#include "gromacs/mdlib/broadcaststructs.h"#include "gromacs/mdlib/calc_verletbuf.h"#include "gromacs/mdlib/constr.h"#include "gromacs/mdlib/dispersioncorrection.h"#include "gromacs/mdlib/enerdata_utils.h"#include "gromacs/mdlib/force.h"#include "gromacs/mdlib/forcerec.h"#include "gromacs/mdlib/gmx_omp_nthreads.h"#include "gromacs/mdlib/gpuforcereduction.h"#include "gromacs/mdlib/makeconstraints.h"#include "gromacs/mdlib/md_support.h"#include "gromacs/mdlib/mdatoms.h"#include "gromacs/mdlib/mdgraph_gpu.h"#include "gromacs/mdlib/sighandler.h"#include "gromacs/mdlib/stophandler.h"#include "gromacs/mdlib/tgroup.h"#include "gromacs/mdlib/updategroups.h"#include "gromacs/mdlib/vsite.h"#include "gromacs/mdrun/mdmodules.h"#include "gromacs/mdrun/simulationcontext.h"#include "gromacs/mdrun/simulationinput.h"#include "gromacs/mdrun/simulationinputhandle.h"#include "gromacs/mdrunutility/handlerestart.h"#include "gromacs/mdrunutility/logging.h"#include "gromacs/mdrunutility/mdmodulesnotifiers.h"#include "gromacs/mdrunutility/multisim.h"#include "gromacs/mdrunutility/printtime.h"#include "gromacs/mdrunutility/threadaffinity.h"#include "gromacs/mdtypes/atominfo.h"#include "gromacs/mdtypes/checkpointdata.h"#include "gromacs/mdtypes/commrec.h"#include "gromacs/mdtypes/enerdata.h"#include "gromacs/mdtypes/fcdata.h"#include "gromacs/mdtypes/forcerec.h"#include "gromacs/mdtypes/group.h"#include "gromacs/mdtypes/inputrec.h"#include "gromacs/mdtypes/interaction_const.h"#include "gromacs/mdtypes/locality.h"#include "gromacs/mdtypes/md_enums.h"#include "gromacs/mdtypes/mdatom.h"#include "gromacs/mdtypes/mdrunoptions.h"#include "gromacs/mdtypes/multipletimestepping.h"#include "gromacs/mdtypes/observableshistory.h"#include "gromacs/mdtypes/observablesreducer.h"#include "gromacs/mdtypes/pull_params.h"#include "gromacs/mdtypes/simulation_workload.h"#include "gromacs/mdtypes/state.h"#include "gromacs/mdtypes/state_propagator_data_gpu.h"#include "gromacs/modularsimulator/modularsimulator.h"#include "gromacs/nbnxm/gpu_data_mgmt.h"#include "gromacs/nbnxm/nbnxm.h"#include "gromacs/nbnxm/nbnxm_enums.h"#include "gromacs/nbnxm/pairlist_tuning.h"#include "gromacs/pbcutil/pbc.h"#include "gromacs/pulling/output.h"#include "gromacs/pulling/pull.h"#include "gromacs/pulling/pull_rotation.h"#include "gromacs/restraint/manager.h"#include "gromacs/restraint/restraintmdmodule.h"#include "gromacs/restraint/restraintpotential.h"#include "gromacs/swap/swapcoords.h"#include "gromacs/taskassignment/decidegpuusage.h"#include "gromacs/taskassignment/decidesimulationworkload.h"#include "gromacs/taskassignment/resourcedivision.h"#include "gromacs/taskassignment/taskassignment.h"#include "gromacs/taskassignment/usergpuids.h"#include "gromacs/timing/gpu_timing.h"#include "gromacs/timing/wallcycle.h"#include "gromacs/timing/wallcyclereporting.h"#include "gromacs/timing/walltime_accounting.h"#include "gromacs/topology/block.h"#include "gromacs/topology/ifunc.h"#include "gromacs/topology/mtop_util.h"#include "gromacs/topology/topology.h"#include "gromacs/topology/topology_enums.h"#include "gromacs/trajectory/trajectoryframe.h"#include "gromacs/utility/basenetwork.h"#include "gromacs/utility/cstringutil.h"#include "gromacs/utility/enumerationhelpers.h"#include "gromacs/utility/exceptions.h"#include "gromacs/utility/fatalerror.h"#include "gromacs/utility/filestream.h"#include "gromacs/utility/gmxassert.h"#include "gromacs/utility/gmxmpi.h"#include "gromacs/utility/keyvaluetree.h"#include "gromacs/utility/logger.h"#include "gromacs/utility/loggerbuilder.h"#include "gromacs/utility/mpiinfo.h"#include "gromacs/utility/physicalnodecommunicator.h"#include "gromacs/utility/pleasecite.h"#include "gromacs/utility/programcontext.h"#include "gromacs/utility/smalloc.h"#include "gromacs/utility/stringutil.h"#include "isimulator.h"#include "membedholder.h"#include "replicaexchange.h"#include "simulatorbuilder.h"Implements the MD runner routine calling all integrators.
Functions | |
| static DevelopmentFeatureFlags | gmx::manageDevelopmentFeatures (const gmx::MDLogger &mdlog, const PmeRunMode pmeRunMode, const int numRanksPerSimulation, const int numPmeRanksPerSimulation, const bool canUseGpuAwareMpi) |
| Manage any development feature flag variables encountered. More... | |
| static void | gmx::threadMpiMdrunnerAccessBarrier () |
| Barrier for safe simultaneous thread access to mdrunner data. More... | |
| static void | gmx::mdrunner_start_fn (const void *arg) |
| The callback used for running on spawned threads. More... | |
| static void | prepare_verlet_scheme (FILE *fplog, t_commrec *cr, t_inputrec *ir, int nstlist_cmdline, const gmx_mtop_t &mtop, gmx::ArrayRef< const gmx::RVec > coordinates, const matrix box, bool makeGpuPairList, const gmx::CpuInfo &cpuinfo) |
| Initialize variables for Verlet scheme simulation. | |
| static void | override_nsteps_cmdline (const gmx::MDLogger &mdlog, int64_t nsteps_cmdline, t_inputrec *ir) |
| Override the nslist value in inputrec. More... | |
| static bool | gmx::gpuAccelerationOfNonbondedIsUseful (const MDLogger &mdlog, const t_inputrec &ir, const bool issueWarning, const bool doRerun) |
| Return whether GPU acceleration of nonbondeds is supported with the given settings. More... | |
| static gmx::LoggerOwner | gmx::buildLogger (FILE *fplog, const bool isSimulationMainRank) |
| Initializes the logger for mdrun. | |
| static TaskTarget | gmx::findTaskTarget (const char *optionString) |
| Make a TaskTarget from an mdrun argument string. | |
| static void | gmx::finish_run (FILE *fplog, const gmx::MDLogger &mdlog, const t_commrec *cr, const t_inputrec &inputrec, t_nrnb nrnb[], gmx_wallcycle *wcycle, gmx_walltime_accounting_t walltime_accounting, nonbonded_verlet_t *nbv, const gmx_pme_t *pme, gmx_bool bWriteStat) |
| Finish run, aggregate data to print performance info. | |
| static bool | gmx::localStateHasFillerParticles (const gmx_mtop_t &mtop, const t_inputrec &inputrec, const bool useDomainDecomposition, const bool haveSinglePPRank, const bool useGpuDirectHalo) |
| Returns whether the run conditions permit the local state to have filler particles. | |
|
static |
Override the nslist value in inputrec.
with value passed on the command line (if any)
1.8.5