@@ -47,56 +47,19 @@ class OMPTInvokeWrapper {
47
47
: IsNullOpt(true ), CodePtr(nullptr ), ReturnFramePtr(nullptr ),
48
48
DeviceId (-1 ), Kind(ompt_target), ScopeKind(ompt_scope_begin) {}
49
49
OMPTInvokeWrapper (void *CodePtr, void *ReturnFramePtr, int64_t DeviceId,
50
- ompt_target_t Kind)
50
+ ompt_target_t Kind, ompt_scope_endpoint_t ScopeKind )
51
51
: IsNullOpt(false ), CodePtr(CodePtr), ReturnFramePtr(ReturnFramePtr),
52
- DeviceId(DeviceId), Kind(Kind), ScopeKind(ompt_scope_begin ) {}
52
+ DeviceId(DeviceId), Kind(Kind), ScopeKind(ScopeKind ) {}
53
53
54
54
void setDeviceId (int64_t DevId) { DeviceId = DevId; }
55
55
56
- void invokeBegin () {
56
+ void invoke () {
57
57
if (IsNullOpt)
58
58
return ;
59
59
60
60
ompt_interface.ompt_state_set (ReturnFramePtr, CodePtr);
61
- switch (Kind) {
62
- case ompt_target_enter_data:
63
- case ompt_target_enter_data_nowait:
64
- ompt_interface.target_data_enter_begin (DeviceId, CodePtr);
65
- break ;
66
- case ompt_target_exit_data:
67
- case ompt_target_exit_data_nowait:
68
- ompt_interface.target_data_exit_begin (DeviceId, CodePtr);
69
- break ;
70
- case ompt_target_update:
71
- case ompt_target_update_nowait:
72
- ompt_interface.target_update_begin (DeviceId, CodePtr);
73
- break ;
74
- }
75
- ompt_interface.target_trace_record_gen (DeviceId, Kind, ompt_scope_begin,
76
- CodePtr);
77
- }
78
-
79
- void invokeEnd () {
80
- if (IsNullOpt)
81
- return ;
82
-
83
- ompt_interface.ompt_state_set (ReturnFramePtr, CodePtr);
84
- switch (Kind) {
85
- case ompt_target_enter_data:
86
- case ompt_target_enter_data_nowait:
87
- ompt_interface.target_data_enter_end (DeviceId, CodePtr);
88
- break ;
89
- case ompt_target_exit_data:
90
- case ompt_target_exit_data_nowait:
91
- ompt_interface.target_data_exit_end (DeviceId, CodePtr);
92
- break ;
93
- case ompt_target_update:
94
- case ompt_target_update_nowait:
95
- ompt_interface.target_update_end (DeviceId, CodePtr);
96
- break ;
97
- }
98
- ompt_interface.target_trace_record_gen (DeviceId, Kind, ompt_scope_end,
99
- CodePtr);
61
+ ompt_interface.target_data_enter_begin (DeviceId, CodePtr);
62
+ ompt_interface.target_trace_record_gen (DeviceId, Kind, ScopeKind, CodePtr);
100
63
}
101
64
102
65
private:
@@ -150,6 +113,21 @@ EXTERN void __tgt_unregister_lib(__tgt_bin_desc *Desc) {
150
113
}
151
114
}
152
115
116
+ template <typename TargetAsyncInfoTy>
117
+ static inline void
118
+ targetDataMapper (ident_t *Loc, int64_t DeviceId, int32_t ArgNum,
119
+ void **ArgsBase, void **Args, int64_t *ArgSizes,
120
+ int64_t *ArgTypes, map_var_info_t *ArgNames, void **ArgMappers,
121
+ TargetDataFuncPtrTy TargetDataFunction,
122
+ const char *RegionTypeMsg, const char *RegionName) {
123
+
124
+ OMPTInvokeWrapper IWrapper;
125
+
126
+ targetDataMapper<TargetAsyncInfoTy>(
127
+ Loc, DeviceId, ArgNum, ArgsBase, Args, ArgSizes, ArgTypes, ArgNames,
128
+ ArgMappers, TargetDataFunction, RegionTypeMsg, RegionName, &IWrapper);
129
+ }
130
+
153
131
template <typename TargetAsyncInfoTy>
154
132
static inline void
155
133
targetDataMapper (ident_t *Loc, int64_t DeviceId, int32_t ArgNum,
@@ -189,16 +167,13 @@ targetDataMapper(ident_t *Loc, int64_t DeviceId, int32_t ArgNum,
189
167
190
168
// DeviceId is only valid after the call to checkDeviceAndCtors, so we update
191
169
// the DevicId in the Wrapper object before invoking OMPT
192
- OMPT_IF_ENABLED (OMPTInvoker->setDeviceId (DeviceId);
193
- OMPTInvoker->invokeBegin (););
170
+ OMPT_IF_ENABLED (OMPTInvoker->setDeviceId (DeviceId); OMPTInvoker->invoke (););
194
171
195
172
int Rc = OFFLOAD_SUCCESS;
196
173
Rc = TargetDataFunction (Loc, Device, ArgNum, ArgsBase, Args, ArgSizes,
197
174
ArgTypes, ArgNames, ArgMappers, AsyncInfo,
198
175
false /* FromMapper */ );
199
176
200
- OMPT_IF_ENABLED (OMPTInvoker->invokeEnd (););
201
-
202
177
if (Rc == OFFLOAD_SUCCESS)
203
178
Rc = AsyncInfo.synchronize ();
204
179
@@ -219,7 +194,7 @@ EXTERN void __tgt_target_data_begin_mapper(ident_t *Loc, int64_t DeviceId,
219
194
#ifdef OMPT_SUPPORT
220
195
OMPTInvokeWrapper IWrapper (OMPT_GET_RETURN_ADDRESS (0 ),
221
196
OMPT_GET_FRAME_ADDRESS (0 ), -1 ,
222
- ompt_target_enter_data);
197
+ ompt_target_enter_data, ompt_scope_begin );
223
198
#else
224
199
OMPTInvokeWrapper IWrapper;
225
200
#endif
@@ -236,19 +211,9 @@ EXTERN void __tgt_target_data_begin_nowait_mapper(
236
211
void **ArgMappers, int32_t DepNum, void *DepList, int32_t NoAliasDepNum,
237
212
void *NoAliasDepList) {
238
213
TIMESCOPE_WITH_IDENT (Loc);
239
-
240
- #ifdef OMPT_SUPPORT
241
- OMPTInvokeWrapper IWrapper (OMPT_GET_RETURN_ADDRESS (0 ),
242
- OMPT_GET_FRAME_ADDRESS (0 ), -1 ,
243
- ompt_target_enter_data_nowait);
244
- #else
245
- OMPTInvokeWrapper IWrapper;
246
- #endif
247
-
248
214
targetDataMapper<TaskAsyncInfoWrapperTy>(
249
215
Loc, DeviceId, ArgNum, ArgsBase, Args, ArgSizes, ArgTypes, ArgNames,
250
- ArgMappers, targetDataBegin, " Entering OpenMP data region" , " begin" ,
251
- &IWrapper);
216
+ ArgMappers, targetDataBegin, " Entering OpenMP data region" , " begin" );
252
217
}
253
218
254
219
// / passes data from the target, releases target memory and destroys
@@ -265,7 +230,7 @@ EXTERN void __tgt_target_data_end_mapper(ident_t *Loc, int64_t DeviceId,
265
230
#ifdef OMPT_SUPPORT
266
231
OMPTInvokeWrapper IWrapper (OMPT_GET_RETURN_ADDRESS (0 ),
267
232
OMPT_GET_FRAME_ADDRESS (0 ), -1 ,
268
- ompt_target_exit_data);
233
+ ompt_target_exit_data, ompt_scope_begin );
269
234
#else
270
235
OMPTInvokeWrapper IWrapper;
271
236
#endif
@@ -281,19 +246,9 @@ EXTERN void __tgt_target_data_end_nowait_mapper(
281
246
void **ArgMappers, int32_t DepNum, void *DepList, int32_t NoAliasDepNum,
282
247
void *NoAliasDepList) {
283
248
TIMESCOPE_WITH_IDENT (Loc);
284
-
285
- #ifdef OMPT_SUPPORT
286
- OMPTInvokeWrapper IWrapper (OMPT_GET_RETURN_ADDRESS (0 ),
287
- OMPT_GET_FRAME_ADDRESS (0 ), -1 ,
288
- ompt_target_exit_data_nowait);
289
- #else
290
- OMPTInvokeWrapper IWrapper;
291
- #endif
292
-
293
249
targetDataMapper<TaskAsyncInfoWrapperTy>(
294
250
Loc, DeviceId, ArgNum, ArgsBase, Args, ArgSizes, ArgTypes, ArgNames,
295
- ArgMappers, targetDataEnd, " Exiting OpenMP data region" , " end" ,
296
- &IWrapper);
251
+ ArgMappers, targetDataEnd, " Exiting OpenMP data region" , " end" );
297
252
}
298
253
299
254
EXTERN void __tgt_target_data_update_mapper (ident_t *Loc, int64_t DeviceId,
@@ -307,7 +262,8 @@ EXTERN void __tgt_target_data_update_mapper(ident_t *Loc, int64_t DeviceId,
307
262
308
263
#ifdef OMPT_SUPPORT
309
264
OMPTInvokeWrapper IWrapper (OMPT_GET_RETURN_ADDRESS (0 ),
310
- OMPT_GET_FRAME_ADDRESS (0 ), -1 , ompt_target_update);
265
+ OMPT_GET_FRAME_ADDRESS (0 ), -1 , ompt_target_update,
266
+ ompt_scope_begin);
311
267
#else
312
268
OMPTInvokeWrapper IWrapper;
313
269
#endif
@@ -324,19 +280,9 @@ EXTERN void __tgt_target_data_update_nowait_mapper(
324
280
void **ArgMappers, int32_t DepNum, void *DepList, int32_t NoAliasDepNum,
325
281
void *NoAliasDepList) {
326
282
TIMESCOPE_WITH_IDENT (Loc);
327
-
328
- #ifdef OMPT_SUPPORT
329
- OMPTInvokeWrapper IWrapper (OMPT_GET_RETURN_ADDRESS (0 ),
330
- OMPT_GET_FRAME_ADDRESS (0 ), -1 ,
331
- ompt_target_update_nowait);
332
- #else
333
- OMPTInvokeWrapper IWrapper;
334
- #endif
335
-
336
283
targetDataMapper<TaskAsyncInfoWrapperTy>(
337
284
Loc, DeviceId, ArgNum, ArgsBase, Args, ArgSizes, ArgTypes, ArgNames,
338
- ArgMappers, targetDataUpdate, " Updating OpenMP data" , " update" ,
339
- &IWrapper);
285
+ ArgMappers, targetDataUpdate, " Updating OpenMP data" , " update" );
340
286
}
341
287
342
288
static KernelArgsTy *upgradeKernelArgs (KernelArgsTy *KernelArgs,
0 commit comments