diff options
author | Johannes Doerfert <johannes@jdoerfert.de> | 2023-11-30 16:44:47 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-30 16:44:47 -0800 |
commit | 1035cc7029180243de371384eee91f4e1e87d199 (patch) | |
tree | ca33fbeb9027a6b722ca02384ff562bebe30fc5c /openmp | |
parent | b6cad75e077e1c68449b18ffeb6e93f18463464f (diff) | |
download | llvm-1035cc7029180243de371384eee91f4e1e87d199.zip llvm-1035cc7029180243de371384eee91f4e1e87d199.tar.gz llvm-1035cc7029180243de371384eee91f4e1e87d199.tar.bz2 |
[OpenMP][NFC] Encapsulate Devices.size() (#74010)
Diffstat (limited to 'openmp')
-rw-r--r-- | openmp/libomptarget/include/PluginManager.h | 5 | ||||
-rw-r--r-- | openmp/libomptarget/src/api.cpp | 24 |
2 files changed, 13 insertions, 16 deletions
diff --git a/openmp/libomptarget/include/PluginManager.h b/openmp/libomptarget/include/PluginManager.h index 3a1c97f..e9b5169 100644 --- a/openmp/libomptarget/include/PluginManager.h +++ b/openmp/libomptarget/include/PluginManager.h @@ -143,6 +143,11 @@ struct PluginManager { DelayedBinDesc.clear(); } + int getNumDevices() { + std::lock_guard<decltype(RTLsMtx)> Lock(RTLsMtx); + return Devices.size(); + } + private: bool RTLsLoaded = false; llvm::SmallVector<__tgt_bin_desc *> DelayedBinDesc; diff --git a/openmp/libomptarget/src/api.cpp b/openmp/libomptarget/src/api.cpp index e444214..cc4cca2 100644 --- a/openmp/libomptarget/src/api.cpp +++ b/openmp/libomptarget/src/api.cpp @@ -28,13 +28,11 @@ EXTERN int omp_get_num_devices(void) { TIMESCOPE(); - PM->RTLsMtx.lock(); - size_t DevicesSize = PM->Devices.size(); - PM->RTLsMtx.unlock(); + size_t NumDevices = PM->getNumDevices(); - DP("Call to omp_get_num_devices returning %zd\n", DevicesSize); + DP("Call to omp_get_num_devices returning %zd\n", NumDevices); - return DevicesSize; + return NumDevices; } EXTERN int omp_get_device_num(void) { @@ -112,10 +110,8 @@ EXTERN int omp_target_is_present(const void *Ptr, int DeviceNum) { return true; } - PM->RTLsMtx.lock(); - size_t DevicesSize = PM->Devices.size(); - PM->RTLsMtx.unlock(); - if (DevicesSize <= (size_t)DeviceNum) { + size_t NumDevices = PM->getNumDevices(); + if (NumDevices <= (size_t)DeviceNum) { DP("Call to omp_target_is_present with invalid device ID, returning " "false\n"); return false; @@ -562,18 +558,14 @@ EXTERN void *omp_get_mapped_ptr(const void *Ptr, int DeviceNum) { return nullptr; } - if (DeviceNum == omp_get_initial_device()) { + size_t NumDevices = omp_get_initial_device(); + if (DeviceNum == NumDevices) { REPORT("Device %d is initial device, returning Ptr " DPxMOD ".\n", DeviceNum, DPxPTR(Ptr)); return const_cast<void *>(Ptr); } - int DevicesSize = omp_get_initial_device(); - { - std::lock_guard<std::mutex> LG(PM->RTLsMtx); - DevicesSize = PM->Devices.size(); - } - if (DevicesSize <= DeviceNum) { + if (NumDevices <= DeviceNum) { DP("DeviceNum %d is invalid, returning nullptr.\n", DeviceNum); return nullptr; } |