Changeset View
Changeset View
Standalone View
Standalone View
openmp/libomptarget/src/interface.cpp
Show First 20 Lines • Show All 272 Lines • ▼ Show 20 Lines | return __tgt_target_mapper(nullptr, DeviceId, HostPtr, ArgNum, ArgsBase, Args, | ||||
ArgSizes, ArgTypes, nullptr, nullptr); | ArgSizes, ArgTypes, nullptr, nullptr); | ||||
} | } | ||||
EXTERN int __tgt_target_mapper(ident_t *Loc, int64_t DeviceId, void *HostPtr, | EXTERN int __tgt_target_mapper(ident_t *Loc, int64_t DeviceId, void *HostPtr, | ||||
int32_t ArgNum, void **ArgsBase, void **Args, | int32_t ArgNum, void **ArgsBase, void **Args, | ||||
int64_t *ArgSizes, int64_t *ArgTypes, | int64_t *ArgSizes, int64_t *ArgTypes, | ||||
map_var_info_t *ArgNames, void **ArgMappers) { | map_var_info_t *ArgNames, void **ArgMappers) { | ||||
TIMESCOPE_WITH_IDENT(Loc); | TIMESCOPE_WITH_IDENT(Loc); | ||||
__tgt_kernel_arguments KernelArgs{1, ArgNum, ArgsBase, Args, | __tgt_kernel_arguments KernelArgs{ | ||||
ArgSizes, ArgTypes, ArgNames, ArgMappers}; | 1, ArgNum, ArgsBase, Args, ArgSizes, ArgTypes, ArgNames, ArgMappers, -1}; | ||||
return __tgt_target_kernel(Loc, DeviceId, -1, 0, HostPtr, &KernelArgs); | return __tgt_target_kernel(Loc, DeviceId, -1, 0, HostPtr, &KernelArgs); | ||||
} | } | ||||
EXTERN int __tgt_target_nowait_mapper( | EXTERN int __tgt_target_nowait_mapper( | ||||
ident_t *Loc, int64_t DeviceId, void *HostPtr, int32_t ArgNum, | ident_t *Loc, int64_t DeviceId, void *HostPtr, int32_t ArgNum, | ||||
void **ArgsBase, void **Args, int64_t *ArgSizes, int64_t *ArgTypes, | void **ArgsBase, void **Args, int64_t *ArgSizes, int64_t *ArgTypes, | ||||
map_var_info_t *ArgNames, void **ArgMappers, int32_t DepNum, void *DepList, | map_var_info_t *ArgNames, void **ArgMappers, int32_t DepNum, void *DepList, | ||||
int32_t NoAliasDepNum, void *NoAliasDepList) { | int32_t NoAliasDepNum, void *NoAliasDepList) { | ||||
Show All 30 Lines | |||||
EXTERN int __tgt_target_teams_mapper(ident_t *Loc, int64_t DeviceId, | EXTERN int __tgt_target_teams_mapper(ident_t *Loc, int64_t DeviceId, | ||||
void *HostPtr, int32_t ArgNum, | void *HostPtr, int32_t ArgNum, | ||||
void **ArgsBase, void **Args, | void **ArgsBase, void **Args, | ||||
int64_t *ArgSizes, int64_t *ArgTypes, | int64_t *ArgSizes, int64_t *ArgTypes, | ||||
map_var_info_t *ArgNames, | map_var_info_t *ArgNames, | ||||
void **ArgMappers, int32_t TeamNum, | void **ArgMappers, int32_t TeamNum, | ||||
int32_t ThreadLimit) { | int32_t ThreadLimit) { | ||||
TIMESCOPE_WITH_IDENT(Loc); | TIMESCOPE_WITH_IDENT(Loc); | ||||
__tgt_kernel_arguments KernelArgs{1, ArgNum, ArgsBase, Args, | __tgt_kernel_arguments KernelArgs{ | ||||
ArgSizes, ArgTypes, ArgNames, ArgMappers}; | 1, ArgNum, ArgsBase, Args, ArgSizes, ArgTypes, ArgNames, ArgMappers, -1}; | ||||
return __tgt_target_kernel(Loc, DeviceId, TeamNum, ThreadLimit, HostPtr, | return __tgt_target_kernel(Loc, DeviceId, TeamNum, ThreadLimit, HostPtr, | ||||
&KernelArgs); | &KernelArgs); | ||||
} | } | ||||
/// Implements a kernel entry that executes the target region on the specified | /// Implements a kernel entry that executes the target region on the specified | ||||
/// device. | /// device. | ||||
/// | /// | ||||
/// \param Loc Source location associated with this target region. | /// \param Loc Source location associated with this target region. | ||||
Show All 37 Lines | #endif | ||||
bool IsTeams = NumTeams != -1; | bool IsTeams = NumTeams != -1; | ||||
if (!IsTeams) | if (!IsTeams) | ||||
NumTeams = 0; | NumTeams = 0; | ||||
DeviceTy &Device = *PM->Devices[DeviceId]; | DeviceTy &Device = *PM->Devices[DeviceId]; | ||||
AsyncInfoTy AsyncInfo(Device); | AsyncInfoTy AsyncInfo(Device); | ||||
int Rc = target(Loc, Device, HostPtr, Args->NumArgs, Args->ArgBasePtrs, | int Rc = target(Loc, Device, HostPtr, Args->NumArgs, Args->ArgBasePtrs, | ||||
Args->ArgPtrs, Args->ArgSizes, Args->ArgTypes, Args->ArgNames, | Args->ArgPtrs, Args->ArgSizes, Args->ArgTypes, Args->ArgNames, | ||||
Args->ArgMappers, NumTeams, ThreadLimit, IsTeams, AsyncInfo); | Args->ArgMappers, NumTeams, ThreadLimit, Args->Tripcount, | ||||
IsTeams, AsyncInfo); | |||||
jdoerfert: Doesn't `target` already do this? And we should get rid of this in a follow up. | |||||
Oh yeah, I did it here and forgot to delete it after I decided to move it. I'll get rid of it. And why do we get rid of it in a follow-up? jhuber6: Oh yeah, I did it here and forgot to delete it after I decided to move it. I'll get rid of it. | |||||
Not Done ReplyInline Actionswe don't need this mutex and stuff anymore. Now the information is passed right into the target launch and not separately. See below. jdoerfert: we don't need this mutex and stuff anymore. Now the information is passed right into the target… | |||||
if (Rc == OFFLOAD_SUCCESS) | if (Rc == OFFLOAD_SUCCESS) | ||||
Rc = AsyncInfo.synchronize(); | Rc = AsyncInfo.synchronize(); | ||||
handleTargetOutcome(Rc == OFFLOAD_SUCCESS, Loc); | handleTargetOutcome(Rc == OFFLOAD_SUCCESS, Loc); | ||||
assert(Rc == OFFLOAD_SUCCESS && "__tgt_target_kernel unexpected failure!"); | assert(Rc == OFFLOAD_SUCCESS && "__tgt_target_kernel unexpected failure!"); | ||||
return OMP_TGT_SUCCESS; | return OMP_TGT_SUCCESS; | ||||
} | } | ||||
EXTERN int __tgt_target_kernel_nowait( | EXTERN int __tgt_target_kernel_nowait( | ||||
▲ Show 20 Lines • Show All 68 Lines • Show Last 20 Lines |
Doesn't target already do this? And we should get rid of this in a follow up.