[llvm-branch-commits] [llvm] [openmp] [OpenMP] Implement omp_get_uid_from_device() / omp_get_device_from_uid() (PR #164392)
Alex Duran via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Oct 21 13:02:35 PDT 2025
================
@@ -91,6 +93,59 @@ EXTERN int omp_get_device_num(void) {
return HostDevice;
}
+EXTERN int omp_get_device_from_uid(const char *DeviceUid) {
+ TIMESCOPE();
+ OMPT_IF_BUILT(ReturnAddressSetterRAII RA(__builtin_return_address(0)));
+
+ if (!DeviceUid) {
+ DP("Call to omp_get_device_from_uid returning omp_invalid_device\n");
+ return omp_invalid_device;
+ }
+ if (strcmp(DeviceUid, GenericDeviceTy::getHostDeviceUid()) == 0) {
+ DP("Call to omp_get_device_from_uid returning host device number %d\n",
+ omp_get_initial_device());
+ return omp_get_initial_device();
+ }
+
+ int DeviceNum = omp_invalid_device;
+
+ auto ExclusiveDevicesAccessor = PM->getExclusiveDevicesAccessor();
+ for (const DeviceTy &Device : PM->devices(ExclusiveDevicesAccessor)) {
+ const char *Uid = Device.RTL->getDevice(Device.RTLDeviceID).getDeviceUid();
----------------
adurang wrote:
Sorry, not following your answer here. What I meant is that following what is done currently elsewhere it should look like:
`const char *Uid = Device.RTL->getDeviceUid(Device.RTLDeviceId);`
I'm not particularly fond of having the extra indirection but we probably should be consistent? Plus, you could actually handle the special hostId if you wanted there.
https://github.com/llvm/llvm-project/pull/164392
More information about the llvm-branch-commits
mailing list