[Openmp-commits] [PATCH] D96429: [OpenMP][NFC] Pass a DeviceTy, not the device number to `target`
Johannes Doerfert via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Wed Feb 10 09:47:38 PST 2021
jdoerfert created this revision.
jdoerfert added reviewers: tianshilei1992, JonChesterfield, grokos.
Herald added subscribers: guansong, yaxunl.
Herald added a reviewer: bollu.
jdoerfert requested review of this revision.
Herald added a subscriber: sstefan1.
Herald added a project: OpenMP.
This unifies the API of `target` relative to `targetUpdateData` and
such.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D96429
Files:
openmp/libomptarget/src/interface.cpp
openmp/libomptarget/src/omptarget.cpp
openmp/libomptarget/src/private.h
openmp/libomptarget/src/rtl.cpp
Index: openmp/libomptarget/src/rtl.cpp
===================================================================
--- openmp/libomptarget/src/rtl.cpp
+++ openmp/libomptarget/src/rtl.cpp
@@ -401,9 +401,8 @@
Device.PendingGlobalsMtx.lock();
if (Device.PendingCtorsDtors[desc].PendingCtors.empty()) {
for (auto &dtor : Device.PendingCtorsDtors[desc].PendingDtors) {
- int rc =
- target(nullptr, Device.DeviceID, dtor, 0, nullptr, nullptr,
- nullptr, nullptr, nullptr, nullptr, 1, 1, true /*team*/);
+ int rc = target(nullptr, Device, dtor, 0, nullptr, nullptr, nullptr,
+ nullptr, nullptr, nullptr, 1, 1, true /*team*/);
if (rc != OFFLOAD_SUCCESS) {
DP("Running destructor " DPxMOD " failed.\n", DPxPTR(dtor));
}
Index: openmp/libomptarget/src/private.h
===================================================================
--- openmp/libomptarget/src/private.h
+++ openmp/libomptarget/src/private.h
@@ -13,6 +13,7 @@
#ifndef _OMPTARGET_PRIVATE_H
#define _OMPTARGET_PRIVATE_H
+#include "device.h"
#include <Debug.h>
#include <SourceInfo.h>
#include <omptarget.h>
@@ -36,7 +37,7 @@
void **arg_mappers,
__tgt_async_info *async_info_ptr = nullptr);
-extern int target(ident_t *loc, int64_t DeviceId, void *HostPtr, int32_t ArgNum,
+extern int target(ident_t *loc, DeviceTy &Device, void *HostPtr, int32_t ArgNum,
void **ArgBases, void **Args, int64_t *ArgSizes,
int64_t *ArgTypes, map_var_info_t *arg_names,
void **ArgMappers, int32_t TeamNum, int32_t ThreadLimit,
Index: openmp/libomptarget/src/omptarget.cpp
===================================================================
--- openmp/libomptarget/src/omptarget.cpp
+++ openmp/libomptarget/src/omptarget.cpp
@@ -15,6 +15,7 @@
#include "private.h"
#include "rtl.h"
+#include <bits/stdint-intn.h>
#include <cassert>
#include <vector>
@@ -159,9 +160,8 @@
DP("Has pending ctors... call now\n");
for (auto &entry : lib.second.PendingCtors) {
void *ctor = entry;
- int rc =
- target(nullptr, device_id, ctor, 0, nullptr, nullptr, nullptr,
- nullptr, nullptr, nullptr, 1, 1, true /*team*/);
+ int rc = target(nullptr, Device, ctor, 0, nullptr, nullptr, nullptr,
+ nullptr, nullptr, nullptr, 1, 1, true /*team*/);
if (rc != OFFLOAD_SUCCESS) {
REPORT("Running ctor " DPxMOD " failed.\n", DPxPTR(ctor));
Device.PendingGlobalsMtx.unlock();
@@ -1238,11 +1238,11 @@
/// performs the same action as data_update and data_end above. This function
/// returns 0 if it was able to transfer the execution to a target and an
/// integer different from zero otherwise.
-int target(ident_t *loc, int64_t DeviceId, void *HostPtr, int32_t ArgNum,
+int target(ident_t *loc, DeviceTy &Device, void *HostPtr, int32_t ArgNum,
void **ArgBases, void **Args, int64_t *ArgSizes, int64_t *ArgTypes,
map_var_info_t *ArgNames, void **ArgMappers, int32_t TeamNum,
int32_t ThreadLimit, int IsTeamConstruct) {
- DeviceTy &Device = PM->Devices[DeviceId];
+ int32_t DeviceId = Device.DeviceID;
TableMap *TM = getTableMap(HostPtr);
// No map for this host pointer found!
Index: openmp/libomptarget/src/interface.cpp
===================================================================
--- openmp/libomptarget/src/interface.cpp
+++ openmp/libomptarget/src/interface.cpp
@@ -407,7 +407,8 @@
}
#endif
- int rc = target(loc, device_id, host_ptr, arg_num, args_base, args, arg_sizes,
+ DeviceTy &Device = PM->Devices[device_id];
+ int rc = target(loc, Device, host_ptr, arg_num, args_base, args, arg_sizes,
arg_types, arg_names, arg_mappers, 0, 0, false /*team*/);
HandleTargetOutcome(rc == OFFLOAD_SUCCESS, loc);
return rc;
@@ -487,7 +488,8 @@
}
#endif
- int rc = target(loc, device_id, host_ptr, arg_num, args_base, args, arg_sizes,
+ DeviceTy &Device = PM->Devices[device_id];
+ int rc = target(loc, Device, host_ptr, arg_num, args_base, args, arg_sizes,
arg_types, arg_names, arg_mappers, team_num, thread_limit,
true /*team*/);
HandleTargetOutcome(rc == OFFLOAD_SUCCESS, loc);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96429.322716.patch
Type: text/x-patch
Size: 4437 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20210210/87f272f8/attachment.bin>
More information about the Openmp-commits
mailing list