[OpenMP] Add additional fields to device environment
This patch adds fields for the device number and number of devices into the device environment struct and debugging values. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D110004
This commit is contained in:
		
							parent
							
								
									b266bcb135
								
							
						
					
					
						commit
						ec02c34b6d
					
				| 
						 | 
				
			
			@ -24,8 +24,12 @@ enum DebugLevel : int32_t { Assertion };
 | 
			
		|||
/// host by omp_get_num_devices.
 | 
			
		||||
uint32_t getNumDevices();
 | 
			
		||||
 | 
			
		||||
/// Return the number of devices in the system, same number as returned on the
 | 
			
		||||
/// host by omp_get_num_devices.
 | 
			
		||||
uint32_t getDeviceNum();
 | 
			
		||||
 | 
			
		||||
/// Return the user choosen debug level.
 | 
			
		||||
int32_t getDebugLevel();
 | 
			
		||||
uint32_t getDebugLevel();
 | 
			
		||||
 | 
			
		||||
bool isDebugMode(DebugLevel Level);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,23 +18,29 @@
 | 
			
		|||
using namespace _OMP;
 | 
			
		||||
 | 
			
		||||
struct DeviceEnvironmentTy {
 | 
			
		||||
  int32_t DebugLevel;
 | 
			
		||||
  uint32_t DebugLevel;
 | 
			
		||||
  uint32_t NumDevices;
 | 
			
		||||
  uint32_t DeviceNum;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#pragma omp declare target
 | 
			
		||||
 | 
			
		||||
extern uint32_t __omp_rtl_debug_kind;
 | 
			
		||||
 | 
			
		||||
// TOOD: We want to change the name as soon as the old runtime is gone.
 | 
			
		||||
DeviceEnvironmentTy CONSTANT(omptarget_device_environment)
 | 
			
		||||
    __attribute__((used));
 | 
			
		||||
 | 
			
		||||
int32_t config::getDebugLevel() {
 | 
			
		||||
  // TODO: Implement libomptarget initialization of DeviceEnvironmentTy
 | 
			
		||||
  return 0;
 | 
			
		||||
uint32_t config::getDebugLevel() {
 | 
			
		||||
  return __omp_rtl_debug_kind & omptarget_device_environment.DebugLevel;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t config::getNumDevices() {
 | 
			
		||||
  // TODO: Implement libomptarget initialization of DeviceEnvironmentTy
 | 
			
		||||
  return 1;
 | 
			
		||||
  return omptarget_device_environment.NumDevices;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t config::getDeviceNum() {
 | 
			
		||||
  return omptarget_device_environment.DeviceNum;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool config::isDebugMode(config::DebugLevel Level) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,8 @@
 | 
			
		|||
 | 
			
		||||
struct omptarget_device_environmentTy {
 | 
			
		||||
  int32_t debug_level;
 | 
			
		||||
  uint32_t num_devices;
 | 
			
		||||
  uint32_t device_num;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
extern omptarget_device_environmentTy omptarget_device_environment;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,6 +101,8 @@ struct KernelTy {
 | 
			
		|||
/// file later.
 | 
			
		||||
struct omptarget_device_environmentTy {
 | 
			
		||||
  int32_t debug_level;
 | 
			
		||||
  uint32_t num_devices;
 | 
			
		||||
  uint32_t device_num;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
namespace {
 | 
			
		||||
| 
						 | 
				
			
			@ -899,7 +901,10 @@ public:
 | 
			
		|||
 | 
			
		||||
    // send device environment data to the device
 | 
			
		||||
    {
 | 
			
		||||
      omptarget_device_environmentTy DeviceEnv{0};
 | 
			
		||||
      // TODO: The device ID used here is not the real device ID used by OpenMP.
 | 
			
		||||
      omptarget_device_environmentTy DeviceEnv{
 | 
			
		||||
          0, static_cast<uint32_t>(NumberOfDevices),
 | 
			
		||||
          static_cast<uint32_t>(DeviceId)};
 | 
			
		||||
 | 
			
		||||
#ifdef OMPTARGET_DEBUG
 | 
			
		||||
      if (const char *EnvStr = getenv("LIBOMPTARGET_DEVICE_RTL_DEBUG"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue