Bridge++  Ver.2.1.3
deviceManager_OpenACC.cpp
Go to the documentation of this file.
1 
9 #ifdef USE_ACCEL_OPENACC
10 
12 
13 // the following code only applies to NVIDIA
14 #ifdef _ACCEL
15 #include "accel.h"
16 #endif
17 
19 #include "lib/IO/bridgeIO.h"
20 using Bridge::vout;
21 
24 
26 
27 const std::string DeviceManager_OpenACC::class_name
28  = "DeviceManager_OpenACC";
29 
30 //====================================================================
31 void DeviceManager_OpenACC::init(int device_num_offset = 0)
32 {
34 
35  vout.general(m_vl, "%s: being initialized.\n", class_name.c_str());
36 
37  int process_id = Communicator::nodeid();
38  vout.general(m_vl, " process_id = %d\n", process_id);
39 
40 #ifdef _ACCEL // the following code only applies to NVIDIA
41  vout.general(m_vl, " NVIDIA environment is used.\n");
42  m_num_devices = acc_get_num_devices(acc_device_nvidia);
43  m_device_id = process_id % m_num_devices + device_num_offset;
44  acc_set_device_num(m_device_id, acc_device_nvidia);
45 #endif
46  vout.general(m_vl, " number of devices = %d\n", m_num_devices);
47  vout.general(m_vl, " device_id = %d is used on process = %d\n",
48  m_device_id, process_id);
49 
50 }
51 
52 //====================================================================
54 {
55  vout.paranoiac(m_vl, "%s: finalization.\n", class_name.c_str());
56 }
57 
58 #endif
59 //============================================================END=====
bridgeIO.h
DeviceManager_OpenACC::init
static void init(int device_num_offset)
setup: called in main only once.
DeviceManager_OpenACC::finalize
static void finalize()
finalization.
Bridge::BridgeIO::paranoiac
void paranoiac(const char *format,...)
Definition: bridgeIO.cpp:300
DeviceManager_OpenACC::m_vl
static Bridge::VerboseLevel m_vl
verbose level.
Definition: deviceManager_OpenACC.h:33
deviceManager_OpenACC.h
DeviceManager_OpenACC::m_device_id
static int m_device_id
device id used in this process.
Definition: deviceManager_OpenACC.h:32
DeviceManager_OpenACC::m_num_devices
static int m_num_devices
number of devices.
Definition: deviceManager_OpenACC.h:31
CommonParameters::Vlevel
static Bridge::VerboseLevel Vlevel()
Definition: commonParameters.h:122
communicator.h
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
Bridge::CRUCIAL
@ CRUCIAL
Definition: bridgeIO.h:47
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:262
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572
DeviceManager_OpenACC::class_name
static const std::string class_name
Definition: deviceManager_OpenACC.h:28