Gromacs  2020.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Friends
gmx::GpuTaskAssignments Class Reference

#include <gromacs/taskassignment/taskassignment.h>

Description

Contains the GPU task assignment for all ranks on this physical node.

This can be used to configure the modules that might run tasks on GPUs.

This assignment is made by a GpuTaskAssignmentsBuilder object.

Public Member Functions

 GpuTaskAssignments (GpuTaskAssignments &&source) noexcept=default
 Public move constructor to use with the builder.
 
void reportGpuUsage (const MDLogger &mdlog, bool printHostName, bool useGpuForBonded, PmeRunMode pmeRunMode, bool useGpuForUpdate)
 Log a report on how GPUs are being used on the ranks of the physical node of rank 0 of the simulation. More...
 
void logPerformanceHints (const MDLogger &mdlog, size_t numCompatibleGpusOnThisNode)
 Logs to mdlog information that may help a user learn how to let mdrun make a task assignment that runs faster. More...
 
gmx_device_info_t * initNonbondedDevice (const t_commrec *cr) const
 Return handle to the initialized GPU to use for the nonbonded task on this rank, if any. More...
 
gmx_device_info_t * initPmeDevice () const
 Return handle to the initialized GPU to use for the PME task on this rank, if any. More...
 
bool thisRankHasPmeGpuTask () const
 Return whether this rank has a PME task running on a GPU.
 
bool thisRankHasAnyGpuTask () const
 Return whether this rank has any task running on a GPU.
 

Friends

class GpuTaskAssignmentsBuilder
 

Member Function Documentation

gmx_device_info_t * gmx::GpuTaskAssignments::initNonbondedDevice ( const t_commrec *  cr) const

Return handle to the initialized GPU to use for the nonbonded task on this rank, if any.

Returns nullptr if no such task is assigned to this rank.

Todo:
This also sets up DLB for device sharing, where appropriate, but that responsbility should move elsewhere.
gmx_device_info_t * gmx::GpuTaskAssignments::initPmeDevice ( ) const

Return handle to the initialized GPU to use for the PME task on this rank, if any.

Returns nullptr if no such task is assigned to this rank.

void gmx::GpuTaskAssignments::logPerformanceHints ( const MDLogger mdlog,
size_t  numCompatibleGpusOnThisNode 
)

Logs to mdlog information that may help a user learn how to let mdrun make a task assignment that runs faster.

Parameters
[in]mdlogLogging object.
[in]numCompatibleGpusOnThisNodeThe number of compatible GPUs on this node.
void gmx::GpuTaskAssignments::reportGpuUsage ( const MDLogger mdlog,
bool  printHostName,
bool  useGpuForBonded,
PmeRunMode  pmeRunMode,
bool  useGpuForUpdate 
)

Log a report on how GPUs are being used on the ranks of the physical node of rank 0 of the simulation.

Todo:
It could be useful to report also whether any nodes differed, and in what way.
Parameters
[in]mdlogLogging object.
[in]printHostNamePrint the hostname in the usage information.
[in]useGpuForBondedWhether GPU PP tasks will do bonded work on the GPU.
[in]pmeRunModeDescribes the execution of PME tasks.
[in]useGpuForUpdateWhether the update is offloaded on the GPU.
Exceptions
std::bad_allocif out of memory

The documentation for this class was generated from the following files: