Skip to content

Commit 489894f

Browse files
committed
[Libomptarget][remote] Fix compile-time error
This fixes a compile-time error recently introduced within the remote offloading plugin. This patch also removes some extra linker flags that are unnecessary, and adds an explicit abseil linker flag without which we occasionally get problems. Differential Revision: https://reviews.llvm.org/D119984
1 parent b5e962a commit 489894f

File tree

3 files changed

+22
-20
lines changed

3 files changed

+22
-20
lines changed

openmp/libomptarget/plugins/remote/server/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@ add_executable(openmp-offloading-server
2626
target_link_libraries(openmp-offloading-server
2727
grpc++
2828
protobuf
29+
absl::synchronization
2930
${OPENMP_PTHREAD_LIB}
30-
"-ldl" "-lomp" "-fopenmp" "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../../exports")
31+
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../../exports")

openmp/libomptarget/plugins/remote/server/Server.cpp

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ Status RemoteOffloadImpl::GetNumberOfDevices(ServerContext *Context,
106106

107107
Status RemoteOffloadImpl::InitDevice(ServerContext *Context,
108108
const I32 *DeviceNum, I32 *Reply) {
109-
Reply->set_number(PM->Devices[DeviceNum->number()].RTL->init_device(
109+
Reply->set_number(PM->Devices[DeviceNum->number()]->RTL->init_device(
110110
mapHostRTLDeviceId(DeviceNum->number())));
111111

112112
SERVER_DBG("Initialized device %d", DeviceNum->number())
@@ -116,8 +116,8 @@ Status RemoteOffloadImpl::InitDevice(ServerContext *Context,
116116
Status RemoteOffloadImpl::InitRequires(ServerContext *Context,
117117
const I64 *RequiresFlag, I32 *Reply) {
118118
for (auto &Device : PM->Devices)
119-
if (Device.RTL->init_requires)
120-
Device.RTL->init_requires(RequiresFlag->number());
119+
if (Device->RTL->init_requires)
120+
Device->RTL->init_requires(RequiresFlag->number());
121121
Reply->set_number(RequiresFlag->number());
122122

123123
SERVER_DBG("Initialized requires for devices")
@@ -129,7 +129,7 @@ Status RemoteOffloadImpl::LoadBinary(ServerContext *Context,
129129
__tgt_device_image *Image =
130130
HostToRemoteDeviceImage[(void *)Binary->image_ptr()];
131131

132-
Table = PM->Devices[Binary->device_id()].RTL->load_binary(
132+
Table = PM->Devices[Binary->device_id()]->RTL->load_binary(
133133
mapHostRTLDeviceId(Binary->device_id()), Image);
134134
if (Table)
135135
loadTargetTable(Table, *Reply, Image);
@@ -144,10 +144,10 @@ Status RemoteOffloadImpl::IsDataExchangeable(ServerContext *Context,
144144
I32 *Reply) {
145145
Reply->set_number(-1);
146146
if (PM->Devices[mapHostRTLDeviceId(Request->src_dev_id())]
147-
.RTL->is_data_exchangable)
147+
->RTL->is_data_exchangable)
148148
Reply->set_number(PM->Devices[mapHostRTLDeviceId(Request->src_dev_id())]
149-
.RTL->is_data_exchangable(Request->src_dev_id(),
150-
Request->dst_dev_id()));
149+
->RTL->is_data_exchangable(Request->src_dev_id(),
150+
Request->dst_dev_id()));
151151

152152
SERVER_DBG("Checked if data exchangeable between device %d and device %d",
153153
Request->src_dev_id(), Request->dst_dev_id())
@@ -156,9 +156,10 @@ Status RemoteOffloadImpl::IsDataExchangeable(ServerContext *Context,
156156

157157
Status RemoteOffloadImpl::DataAlloc(ServerContext *Context,
158158
const AllocData *Request, Pointer *Reply) {
159-
uint64_t TgtPtr = (uint64_t)PM->Devices[Request->device_id()].RTL->data_alloc(
160-
mapHostRTLDeviceId(Request->device_id()), Request->size(),
161-
(void *)Request->hst_ptr(), TARGET_ALLOC_DEFAULT);
159+
uint64_t TgtPtr =
160+
(uint64_t)PM->Devices[Request->device_id()]->RTL->data_alloc(
161+
mapHostRTLDeviceId(Request->device_id()), Request->size(),
162+
(void *)Request->hst_ptr(), TARGET_ALLOC_DEFAULT);
162163
Reply->set_number(TgtPtr);
163164

164165
SERVER_DBG("Allocated at " DPxMOD "", DPxPTR((void *)TgtPtr))
@@ -175,7 +176,7 @@ Status RemoteOffloadImpl::DataSubmit(ServerContext *Context,
175176
if (Request.start() == 0 && Request.size() == Request.data().size()) {
176177
Reader->SendInitialMetadata();
177178

178-
Reply->set_number(PM->Devices[Request.device_id()].RTL->data_submit(
179+
Reply->set_number(PM->Devices[Request.device_id()]->RTL->data_submit(
179180
mapHostRTLDeviceId(Request.device_id()), (void *)Request.tgt_ptr(),
180181
(void *)Request.data().data(), Request.data().size()));
181182

@@ -194,7 +195,7 @@ Status RemoteOffloadImpl::DataSubmit(ServerContext *Context,
194195
Request.data().size());
195196
}
196197

197-
Reply->set_number(PM->Devices[Request.device_id()].RTL->data_submit(
198+
Reply->set_number(PM->Devices[Request.device_id()]->RTL->data_submit(
198199
mapHostRTLDeviceId(Request.device_id()), (void *)Request.tgt_ptr(),
199200
HostCopy, Request.size()));
200201

@@ -211,7 +212,7 @@ Status RemoteOffloadImpl::DataRetrieve(ServerContext *Context,
211212
ServerWriter<Data> *Writer) {
212213
auto HstPtr = std::make_unique<char[]>(Request->size());
213214

214-
auto Ret = PM->Devices[Request->device_id()].RTL->data_retrieve(
215+
auto Ret = PM->Devices[Request->device_id()]->RTL->data_retrieve(
215216
mapHostRTLDeviceId(Request->device_id()), HstPtr.get(),
216217
(void *)Request->tgt_ptr(), Request->size());
217218

@@ -262,8 +263,8 @@ Status RemoteOffloadImpl::DataRetrieve(ServerContext *Context,
262263
Status RemoteOffloadImpl::DataExchange(ServerContext *Context,
263264
const ExchangeData *Request,
264265
I32 *Reply) {
265-
if (PM->Devices[Request->src_dev_id()].RTL->data_exchange) {
266-
int32_t Ret = PM->Devices[Request->src_dev_id()].RTL->data_exchange(
266+
if (PM->Devices[Request->src_dev_id()]->RTL->data_exchange) {
267+
int32_t Ret = PM->Devices[Request->src_dev_id()]->RTL->data_exchange(
267268
mapHostRTLDeviceId(Request->src_dev_id()), (void *)Request->src_ptr(),
268269
mapHostRTLDeviceId(Request->dst_dev_id()), (void *)Request->dst_ptr(),
269270
Request->size());
@@ -282,7 +283,7 @@ Status RemoteOffloadImpl::DataExchange(ServerContext *Context,
282283

283284
Status RemoteOffloadImpl::DataDelete(ServerContext *Context,
284285
const DeleteData *Request, I32 *Reply) {
285-
auto Ret = PM->Devices[Request->device_id()].RTL->data_delete(
286+
auto Ret = PM->Devices[Request->device_id()]->RTL->data_delete(
286287
mapHostRTLDeviceId(Request->device_id()), (void *)Request->tgt_ptr());
287288
Reply->set_number(Ret);
288289

@@ -305,7 +306,7 @@ Status RemoteOffloadImpl::RunTargetRegion(ServerContext *Context,
305306

306307
void *TgtEntryPtr = ((__tgt_offload_entry *)Request->tgt_entry_ptr())->addr;
307308

308-
int32_t Ret = PM->Devices[Request->device_id()].RTL->run_region(
309+
int32_t Ret = PM->Devices[Request->device_id()]->RTL->run_region(
309310
mapHostRTLDeviceId(Request->device_id()), TgtEntryPtr,
310311
(void **)TgtArgs.data(), TgtOffsets.data(), Request->arg_num());
311312

@@ -330,7 +331,7 @@ Status RemoteOffloadImpl::RunTargetTeamRegion(ServerContext *Context,
330331

331332
void *TgtEntryPtr = ((__tgt_offload_entry *)Request->tgt_entry_ptr())->addr;
332333

333-
int32_t Ret = PM->Devices[Request->device_id()].RTL->run_team_region(
334+
int32_t Ret = PM->Devices[Request->device_id()]->RTL->run_team_region(
334335
mapHostRTLDeviceId(Request->device_id()), TgtEntryPtr,
335336
(void **)TgtArgs.data(), TgtOffsets.data(), Request->arg_num(),
336337
Request->team_num(), Request->thread_limit(), Request->loop_tripcount());

openmp/libomptarget/plugins/remote/src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ install(TARGETS omptarget.rtl.rpc LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}"
3434
target_link_libraries(omptarget.rtl.rpc
3535
grpc++
3636
protobuf
37-
"-ldl"
37+
absl::synchronization
3838
${OPENMP_PTHREAD_LIB}
3939
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../../exports")
4040

0 commit comments

Comments
 (0)