diff --git a/openmp/libomptarget/plugins/remote/server/CMakeLists.txt b/openmp/libomptarget/plugins/remote/server/CMakeLists.txt --- a/openmp/libomptarget/plugins/remote/server/CMakeLists.txt +++ b/openmp/libomptarget/plugins/remote/server/CMakeLists.txt @@ -26,5 +26,6 @@ target_link_libraries(openmp-offloading-server grpc++ protobuf + absl::synchronization ${OPENMP_PTHREAD_LIB} - "-ldl" "-lomp" "-fopenmp" "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../../exports") + "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../../exports") diff --git a/openmp/libomptarget/plugins/remote/server/Server.cpp b/openmp/libomptarget/plugins/remote/server/Server.cpp --- a/openmp/libomptarget/plugins/remote/server/Server.cpp +++ b/openmp/libomptarget/plugins/remote/server/Server.cpp @@ -106,7 +106,7 @@ Status RemoteOffloadImpl::InitDevice(ServerContext *Context, const I32 *DeviceNum, I32 *Reply) { - Reply->set_number(PM->Devices[DeviceNum->number()].RTL->init_device( + Reply->set_number(PM->Devices[DeviceNum->number()]->RTL->init_device( mapHostRTLDeviceId(DeviceNum->number()))); SERVER_DBG("Initialized device %d", DeviceNum->number()) @@ -116,8 +116,8 @@ Status RemoteOffloadImpl::InitRequires(ServerContext *Context, const I64 *RequiresFlag, I32 *Reply) { for (auto &Device : PM->Devices) - if (Device.RTL->init_requires) - Device.RTL->init_requires(RequiresFlag->number()); + if (Device->RTL->init_requires) + Device->RTL->init_requires(RequiresFlag->number()); Reply->set_number(RequiresFlag->number()); SERVER_DBG("Initialized requires for devices") @@ -129,7 +129,7 @@ __tgt_device_image *Image = HostToRemoteDeviceImage[(void *)Binary->image_ptr()]; - Table = PM->Devices[Binary->device_id()].RTL->load_binary( + Table = PM->Devices[Binary->device_id()]->RTL->load_binary( mapHostRTLDeviceId(Binary->device_id()), Image); if (Table) loadTargetTable(Table, *Reply, Image); @@ -144,9 +144,9 @@ I32 *Reply) { Reply->set_number(-1); if (PM->Devices[mapHostRTLDeviceId(Request->src_dev_id())] - .RTL->is_data_exchangable) + ->RTL->is_data_exchangable) Reply->set_number(PM->Devices[mapHostRTLDeviceId(Request->src_dev_id())] - .RTL->is_data_exchangable(Request->src_dev_id(), + ->RTL->is_data_exchangable(Request->src_dev_id(), Request->dst_dev_id())); SERVER_DBG("Checked if data exchangeable between device %d and device %d", @@ -156,7 +156,7 @@ Status RemoteOffloadImpl::DataAlloc(ServerContext *Context, const AllocData *Request, Pointer *Reply) { - uint64_t TgtPtr = (uint64_t)PM->Devices[Request->device_id()].RTL->data_alloc( + uint64_t TgtPtr = (uint64_t)PM->Devices[Request->device_id()]->RTL->data_alloc( mapHostRTLDeviceId(Request->device_id()), Request->size(), (void *)Request->hst_ptr(), TARGET_ALLOC_DEFAULT); Reply->set_number(TgtPtr); @@ -175,7 +175,7 @@ if (Request.start() == 0 && Request.size() == Request.data().size()) { Reader->SendInitialMetadata(); - Reply->set_number(PM->Devices[Request.device_id()].RTL->data_submit( + Reply->set_number(PM->Devices[Request.device_id()]->RTL->data_submit( mapHostRTLDeviceId(Request.device_id()), (void *)Request.tgt_ptr(), (void *)Request.data().data(), Request.data().size())); @@ -194,7 +194,7 @@ Request.data().size()); } - Reply->set_number(PM->Devices[Request.device_id()].RTL->data_submit( + Reply->set_number(PM->Devices[Request.device_id()]->RTL->data_submit( mapHostRTLDeviceId(Request.device_id()), (void *)Request.tgt_ptr(), HostCopy, Request.size())); @@ -211,7 +211,7 @@ ServerWriter *Writer) { auto HstPtr = std::make_unique(Request->size()); - auto Ret = PM->Devices[Request->device_id()].RTL->data_retrieve( + auto Ret = PM->Devices[Request->device_id()]->RTL->data_retrieve( mapHostRTLDeviceId(Request->device_id()), HstPtr.get(), (void *)Request->tgt_ptr(), Request->size()); @@ -262,8 +262,8 @@ Status RemoteOffloadImpl::DataExchange(ServerContext *Context, const ExchangeData *Request, I32 *Reply) { - if (PM->Devices[Request->src_dev_id()].RTL->data_exchange) { - int32_t Ret = PM->Devices[Request->src_dev_id()].RTL->data_exchange( + if (PM->Devices[Request->src_dev_id()]->RTL->data_exchange) { + int32_t Ret = PM->Devices[Request->src_dev_id()]->RTL->data_exchange( mapHostRTLDeviceId(Request->src_dev_id()), (void *)Request->src_ptr(), mapHostRTLDeviceId(Request->dst_dev_id()), (void *)Request->dst_ptr(), Request->size()); @@ -282,7 +282,7 @@ Status RemoteOffloadImpl::DataDelete(ServerContext *Context, const DeleteData *Request, I32 *Reply) { - auto Ret = PM->Devices[Request->device_id()].RTL->data_delete( + auto Ret = PM->Devices[Request->device_id()]->RTL->data_delete( mapHostRTLDeviceId(Request->device_id()), (void *)Request->tgt_ptr()); Reply->set_number(Ret); @@ -305,7 +305,7 @@ void *TgtEntryPtr = ((__tgt_offload_entry *)Request->tgt_entry_ptr())->addr; - int32_t Ret = PM->Devices[Request->device_id()].RTL->run_region( + int32_t Ret = PM->Devices[Request->device_id()]->RTL->run_region( mapHostRTLDeviceId(Request->device_id()), TgtEntryPtr, (void **)TgtArgs.data(), TgtOffsets.data(), Request->arg_num()); @@ -330,7 +330,7 @@ void *TgtEntryPtr = ((__tgt_offload_entry *)Request->tgt_entry_ptr())->addr; - int32_t Ret = PM->Devices[Request->device_id()].RTL->run_team_region( + int32_t Ret = PM->Devices[Request->device_id()]->RTL->run_team_region( mapHostRTLDeviceId(Request->device_id()), TgtEntryPtr, (void **)TgtArgs.data(), TgtOffsets.data(), Request->arg_num(), Request->team_num(), Request->thread_limit(), Request->loop_tripcount()); diff --git a/openmp/libomptarget/plugins/remote/src/CMakeLists.txt b/openmp/libomptarget/plugins/remote/src/CMakeLists.txt --- a/openmp/libomptarget/plugins/remote/src/CMakeLists.txt +++ b/openmp/libomptarget/plugins/remote/src/CMakeLists.txt @@ -34,7 +34,7 @@ target_link_libraries(omptarget.rtl.rpc grpc++ protobuf - "-ldl" + absl::synchronization ${OPENMP_PTHREAD_LIB} "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../../exports")