QMCPACK
OMPDeviceManager Class Reference

OpenMP device manager. More...

+ Collaboration diagram for OMPDeviceManager:

Public Member Functions

 OMPDeviceManager (int &default_device_num, int &num_devices, int local_rank, int local_size)
 

Private Attributes

int omp_default_device_num
 
const int omp_device_count
 

Detailed Description

OpenMP device manager.

Definition at line 22 of file OMPDeviceManager.h.

Constructor & Destructor Documentation

◆ OMPDeviceManager()

OMPDeviceManager ( int &  default_device_num,
int &  num_devices,
int  local_rank,
int  local_size 
)

Definition at line 23 of file OMPDeviceManager.cpp.

References qmcplusplus::app_warning(), qmcplusplus::determineDefaultDeviceNum(), OMPDeviceManager::omp_default_device_num, and OMPDeviceManager::omp_device_count.

24  : omp_default_device_num(-1), omp_device_count(omp_get_num_devices())
25 {
26  if (num_devices == 0)
27  num_devices = omp_device_count;
28  else if (num_devices != omp_device_count)
29  throw std::runtime_error("Inconsistent number of OpenMP devices with the previous record!");
30  if (omp_device_count > local_size)
31  app_warning() << "More OpenMP devices than the number of MPI ranks. "
32  << "Some devices will be left idle.\n"
33  << "There is potential performance issue with the GPU affinity.\n";
34  if (num_devices > 0)
35  {
37  if (default_device_num < 0)
38  default_device_num = omp_default_device_num;
39  else if (default_device_num != omp_default_device_num)
40  throw std::runtime_error("Inconsistent assigned OpenMP devices with the previous record!");
41  omp_set_default_device(omp_default_device_num);
42  }
43 }
std::ostream & app_warning()
Definition: OutputManager.h:69
int determineDefaultDeviceNum(int num_devices, int rank_id, int num_ranks)
distribute MPI ranks among devices

Member Data Documentation

◆ omp_default_device_num

int omp_default_device_num
private

Definition at line 24 of file OMPDeviceManager.h.

Referenced by OMPDeviceManager::OMPDeviceManager().

◆ omp_device_count

const int omp_device_count
private

Definition at line 25 of file OMPDeviceManager.h.

Referenced by OMPDeviceManager::OMPDeviceManager().


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