[Openmp-commits] [PATCH] D110004: [OpenMP] Add additional fields to device environment
Joseph Huber via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Fri Sep 17 16:44:12 PDT 2021
jhuber6 updated this revision to Diff 373370.
jhuber6 added a comment.
Adding TODO, printing the values seems to work. I only have a single device so
the number and ID is 1 and 0 respectively. Both the debugging numbers work.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110004/new/
https://reviews.llvm.org/D110004
Files:
openmp/libomptarget/DeviceRTL/include/Configuration.h
openmp/libomptarget/DeviceRTL/src/Configuration.cpp
openmp/libomptarget/deviceRTLs/common/device_environment.h
openmp/libomptarget/plugins/cuda/src/rtl.cpp
Index: openmp/libomptarget/plugins/cuda/src/rtl.cpp
===================================================================
--- openmp/libomptarget/plugins/cuda/src/rtl.cpp
+++ openmp/libomptarget/plugins/cuda/src/rtl.cpp
@@ -101,6 +101,8 @@
/// file later.
struct omptarget_device_environmentTy {
int32_t debug_level;
+ uint32_t num_devices;
+ uint32_t device_num;
};
namespace {
@@ -899,7 +901,10 @@
// 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"))
Index: openmp/libomptarget/deviceRTLs/common/device_environment.h
===================================================================
--- openmp/libomptarget/deviceRTLs/common/device_environment.h
+++ openmp/libomptarget/deviceRTLs/common/device_environment.h
@@ -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;
Index: openmp/libomptarget/DeviceRTL/src/Configuration.cpp
===================================================================
--- openmp/libomptarget/DeviceRTL/src/Configuration.cpp
+++ openmp/libomptarget/DeviceRTL/src/Configuration.cpp
@@ -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) {
Index: openmp/libomptarget/DeviceRTL/include/Configuration.h
===================================================================
--- openmp/libomptarget/DeviceRTL/include/Configuration.h
+++ openmp/libomptarget/DeviceRTL/include/Configuration.h
@@ -24,8 +24,12 @@
/// 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);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110004.373370.patch
Type: text/x-patch
Size: 3130 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20210917/f787d125/attachment.bin>
More information about the Openmp-commits
mailing list