Skip to content

Commit ad7def2

Browse files
mhalkronlieb
authored andcommitted
[Offload][ompTest] Added more host events
Added 'Work' event + aliases Added 'SyncRegion' event + aliases Added 'TaskCreate' event Added 'Dispatch' event (not supported by compiler yet) For now they are suppressed by default (avoid breaking tests). Change-Id: I1293c2795256f77fa15f565cd945d99311a3f415
1 parent c24da83 commit ad7def2

12 files changed

+525
-76
lines changed

offload/test/ompTest/include/InternalEvent.h

Lines changed: 91 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <cstring>
77
#include <limits>
8+
#include <omp-tools.h>
89

910
#define expectedDefault(TypeName) std::numeric_limits<TypeName>::min()
1011

@@ -32,14 +33,100 @@ event_class_w_custom_body(ParallelBegin, \
3233
ParallelBegin(int NumThreads) \
3334
: InternalEvent(EventTy::ParallelBegin), NumThreads(NumThreads) {} \
3435
\
35-
int NumThreads; \
36+
unsigned int NumThreads; \
3637
)
3738
event_class_w_custom_body(ParallelEnd, \
38-
ParallelEnd() : InternalEvent(EventTy::ParallelEnd) {} \
39+
ParallelEnd(ompt_data_t *ParallelData, ompt_data_t *EncounteringTaskData, \
40+
int Flags, const void *CodeptrRA) \
41+
: InternalEvent(EventTy::ParallelEnd), ParallelData(ParallelData), \
42+
EncounteringTaskData(EncounteringTaskData), Flags(Flags), \
43+
CodeptrRA(CodeptrRA) {} \
44+
\
45+
ompt_data_t *ParallelData; \
46+
ompt_data_t *EncounteringTaskData; \
47+
int Flags; \
48+
const void *CodeptrRA; \
49+
)
50+
event_class_w_custom_body(Work, \
51+
Work(ompt_work_t WorkType, ompt_scope_endpoint_t Endpoint, \
52+
ompt_data_t *ParallelData, ompt_data_t *TaskData, uint64_t Count, \
53+
const void *CodeptrRA) \
54+
: InternalEvent(EventTy::Work), WorkType(WorkType), Endpoint(Endpoint), \
55+
ParallelData(ParallelData), TaskData(TaskData), Count(Count), \
56+
CodeptrRA(CodeptrRA) {} \
57+
\
58+
ompt_work_t WorkType; \
59+
ompt_scope_endpoint_t Endpoint; \
60+
ompt_data_t *ParallelData; \
61+
ompt_data_t *TaskData; \
62+
uint64_t Count; \
63+
const void *CodeptrRA; \
3964
)
40-
event_class_stub(TaskCreate)
65+
event_class_w_custom_body(Dispatch, \
66+
Dispatch(ompt_data_t *ParallelData, ompt_data_t *TaskData, \
67+
ompt_dispatch_t Kind, ompt_data_t Instance) \
68+
: InternalEvent(EventTy::Dispatch), ParallelData(ParallelData), \
69+
TaskData(TaskData), Kind(Kind), Instance(Instance) {} \
70+
\
71+
ompt_data_t *ParallelData; \
72+
ompt_data_t *TaskData; \
73+
ompt_dispatch_t Kind; \
74+
ompt_data_t Instance; \
75+
)
76+
event_class_w_custom_body(TaskCreate, \
77+
TaskCreate(ompt_data_t *EncounteringTaskData, \
78+
const ompt_frame_t *EncounteringTaskFrame, \
79+
ompt_data_t *NewTaskData, int Flags, int HasDependences, \
80+
const void *CodeptrRA) \
81+
: InternalEvent(EventTy::TaskCreate), \
82+
EncounteringTaskData(EncounteringTaskData), \
83+
EncounteringTaskFrame(EncounteringTaskFrame), NewTaskData(NewTaskData), \
84+
Flags(Flags), HasDependences(HasDependences), CodeptrRA(CodeptrRA) {} \
85+
\
86+
ompt_data_t *EncounteringTaskData; \
87+
const ompt_frame_t *EncounteringTaskFrame; \
88+
ompt_data_t *NewTaskData; \
89+
int Flags; \
90+
int HasDependences; \
91+
const void *CodeptrRA; \
92+
)
93+
event_class_stub(Dependences)
94+
event_class_stub(TaskDependence)
4195
event_class_stub(TaskSchedule)
42-
event_class_stub(ImplicitTask)
96+
event_class_w_custom_body(ImplicitTask, \
97+
ImplicitTask(ompt_scope_endpoint_t Endpoint, ompt_data_t *ParallelData, \
98+
ompt_data_t *TaskData, unsigned int ActualParallelism, \
99+
unsigned int Index, int Flags) \
100+
: InternalEvent(EventTy::ImplicitTask), Endpoint(Endpoint), \
101+
ParallelData(ParallelData), TaskData(TaskData), ActualParallelism(ActualParallelism),\
102+
Index(Index), Flags(Flags) {} \
103+
\
104+
ompt_scope_endpoint_t Endpoint; \
105+
ompt_data_t *ParallelData; \
106+
ompt_data_t *TaskData; \
107+
unsigned int ActualParallelism; \
108+
unsigned int Index; \
109+
int Flags; \
110+
)
111+
event_class_stub(Masked)
112+
event_class_w_custom_body(SyncRegion, \
113+
SyncRegion(ompt_sync_region_t Kind, ompt_scope_endpoint_t Endpoint, \
114+
ompt_data_t *ParallelData, ompt_data_t *TaskData, \
115+
const void *CodeptrRA) \
116+
: InternalEvent(EventTy::SyncRegion), Kind(Kind), Endpoint(Endpoint), \
117+
ParallelData(ParallelData), TaskData(TaskData), CodeptrRA(CodeptrRA) {} \
118+
\
119+
ompt_sync_region_t Kind; \
120+
ompt_scope_endpoint_t Endpoint; \
121+
ompt_data_t *ParallelData; \
122+
ompt_data_t *TaskData; \
123+
const void *CodeptrRA; \
124+
)
125+
event_class_stub(MutexAcquire)
126+
event_class_stub(Mutex)
127+
event_class_stub(NestLock)
128+
event_class_stub(Flush)
129+
event_class_stub(Cancel)
43130
event_class_w_custom_body(Target, \
44131
Target(ompt_target_t Kind, ompt_scope_endpoint_t Endpoint, int DeviceNum, \
45132
ompt_data_t *TaskData, ompt_id_t TargetId, const void *CodeptrRA) \

offload/test/ompTest/include/InternalEventCommon.h

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,33 @@ enum class EventTy {
2121
ThreadEnd,
2222
ParallelBegin,
2323
ParallelEnd,
24-
TaskCreate,
25-
TaskSchedule,
26-
ImplicitTask,
27-
Target,
28-
TargetEmi,
29-
TargetDataOp,
30-
TargetDataOpEmi,
31-
TargetSubmit,
32-
TargetSubmitEmi,
33-
ControlTool,
24+
Work,
25+
Dispatch,
26+
TaskCreate, // TODO: Implement
27+
Dependences, // TODO: Implement
28+
TaskDependence, // TODO: Implement
29+
TaskSchedule, // TODO: Implement
30+
ImplicitTask, // TODO: Implement
31+
Masked, // TODO: Implement
32+
SyncRegion,
33+
MutexAcquire, // TODO: Implement
34+
Mutex, // TODO: Implement
35+
NestLock, // TODO: Implement
36+
Flush, // TODO: Implement
37+
Cancel, // TODO: Implement
3438
DeviceInitialize,
3539
DeviceFinalize,
3640
DeviceLoad,
3741
DeviceUnload,
3842
BufferRequest,
39-
BufferComplete
43+
BufferComplete,
44+
TargetDataOp,
45+
TargetDataOpEmi,
46+
Target,
47+
TargetEmi,
48+
TargetSubmit,
49+
TargetSubmitEmi,
50+
ControlTool
4051
};
4152

4253
struct InternalEvent {

offload/test/ompTest/include/OmptAliases.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,35 @@ constexpr ompt_callbacks_t CB_TARGET = ompt_callback_target;
3737
constexpr ompt_callbacks_t CB_DATAOP = ompt_callback_target_data_op;
3838
constexpr ompt_callbacks_t CB_KERNEL = ompt_callback_target_submit;
3939

40+
/// Aliases for enum: ompt_work_t
41+
constexpr ompt_work_t WORK_LOOP = ompt_work_loop;
42+
constexpr ompt_work_t WORK_SECT = ompt_work_sections;
43+
constexpr ompt_work_t WORK_EXEC = ompt_work_single_executor;
44+
constexpr ompt_work_t WORK_SINGLE = ompt_work_single_other;
45+
constexpr ompt_work_t WORK_SHARE = ompt_work_workshare;
46+
constexpr ompt_work_t WORK_DIST = ompt_work_distribute;
47+
constexpr ompt_work_t WORK_TASK = ompt_work_taskloop;
48+
constexpr ompt_work_t WORK_SCOPE = ompt_work_scope;
49+
constexpr ompt_work_t WORK_LOOP_STA = ompt_work_loop_static;
50+
constexpr ompt_work_t WORK_LOOP_DYN = ompt_work_loop_dynamic;
51+
constexpr ompt_work_t WORK_LOOP_GUI = ompt_work_loop_guided;
52+
constexpr ompt_work_t WORK_LOOP_OTH = ompt_work_loop_other;
53+
54+
/// Aliases for enum: ompt_sync_region_t
55+
constexpr ompt_sync_region_t SR_BARRIER = ompt_sync_region_barrier;
56+
constexpr ompt_sync_region_t SR_BARRIER_IMPL =
57+
ompt_sync_region_barrier_implicit;
58+
constexpr ompt_sync_region_t SR_BARRIER_EXPL =
59+
ompt_sync_region_barrier_explicit;
60+
constexpr ompt_sync_region_t SR_BARRIER_IMPLEMENTATION =
61+
ompt_sync_region_barrier_implementation;
62+
constexpr ompt_sync_region_t SR_TASKWAIT = ompt_sync_region_taskwait;
63+
constexpr ompt_sync_region_t SR_TASKGROUP = ompt_sync_region_taskgroup;
64+
constexpr ompt_sync_region_t SR_REDUCTION = ompt_sync_region_reduction;
65+
constexpr ompt_sync_region_t SR_BARRIER_IMPL_WORKSHARE =
66+
ompt_sync_region_barrier_implicit_workshare;
67+
constexpr ompt_sync_region_t SR_BARRIER_IMPL_PARALLEL =
68+
ompt_sync_region_barrier_implicit_parallel;
69+
constexpr ompt_sync_region_t SR_BARRIER_TEAMS = ompt_sync_region_barrier_teams;
70+
4071
#endif

offload/test/ompTest/include/OmptAssertEvent.h

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,62 @@ struct OmptAssertEvent {
3838
const ObserveState &Expected,
3939
int NumThreads);
4040

41-
static OmptAssertEvent ParallelEnd(const std::string &Name,
42-
const std::string &Group,
43-
const ObserveState &Expected);
41+
static OmptAssertEvent ParallelEnd(
42+
const std::string &Name, const std::string &Group,
43+
const ObserveState &Expected,
44+
ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
45+
ompt_data_t *EncounteringTaskData = expectedDefault(ompt_data_t *),
46+
int Flags = expectedDefault(int),
47+
const void *CodeptrRA = expectedDefault(const void *));
4448

45-
static OmptAssertEvent TaskCreate(const std::string &Name,
46-
const std::string &Group,
47-
const ObserveState &Expected);
49+
static OmptAssertEvent
50+
Work(const std::string &Name, const std::string &Group,
51+
const ObserveState &Expected, ompt_work_t WorkType,
52+
ompt_scope_endpoint_t Endpoint,
53+
ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
54+
ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
55+
uint64_t Count = expectedDefault(uint64_t),
56+
const void *CodeptrRA = expectedDefault(const void *));
57+
58+
static OmptAssertEvent
59+
Dispatch(const std::string &Name, const std::string &Group,
60+
const ObserveState &Expected,
61+
ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
62+
ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
63+
ompt_dispatch_t Kind = expectedDefault(ompt_dispatch_t),
64+
ompt_data_t Instance = expectedDefault(ompt_data_t));
65+
66+
static OmptAssertEvent
67+
TaskCreate(const std::string &Name, const std::string &Group,
68+
const ObserveState &Expected,
69+
ompt_data_t *EncounteringTaskData = expectedDefault(ompt_data_t *),
70+
const ompt_frame_t *EncounteringTaskFrame =
71+
expectedDefault(ompt_frame_t *),
72+
ompt_data_t *NewTaskData = expectedDefault(ompt_data_t *),
73+
int Flags = expectedDefault(int),
74+
int HasDependences = expectedDefault(int),
75+
const void *CodeptrRA = expectedDefault(const void *));
4876

4977
static OmptAssertEvent TaskSchedule(const std::string &Name,
5078
const std::string &Group,
5179
const ObserveState &Expected);
5280

53-
static OmptAssertEvent ImplicitTask(const std::string &Name,
54-
const std::string &Group,
55-
const ObserveState &Expected);
81+
static OmptAssertEvent
82+
ImplicitTask(const std::string &Name, const std::string &Group,
83+
const ObserveState &Expected, ompt_scope_endpoint_t Endpoint,
84+
ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
85+
ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
86+
unsigned int ActualParallelism = expectedDefault(unsigned int),
87+
unsigned int Index = expectedDefault(unsigned int),
88+
int Flags = expectedDefault(int));
89+
90+
static OmptAssertEvent
91+
SyncRegion(const std::string &Name, const std::string &Group,
92+
const ObserveState &Expected, ompt_sync_region_t Kind,
93+
ompt_scope_endpoint_t Endpoint,
94+
ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
95+
ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
96+
const void *CodeptrRA = expectedDefault(const void *));
5697

5798
static OmptAssertEvent
5899
Target(const std::string &Name, const std::string &Group,

offload/test/ompTest/include/OmptAsserter.h

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,26 @@ class OmptListener {
4545
private:
4646
bool Active{true};
4747

48-
// For now we add event types to the set of suppressed events by default.
49-
// This is necessary because AOMP currently does not handle these events.
48+
// Add event types to the set of suppressed events by default.
5049
std::set<omptest::internal::EventTy> SuppressedEvents{
51-
omptest::internal::EventTy::ParallelBegin,
52-
omptest::internal::EventTy::ParallelEnd,
5350
omptest::internal::EventTy::ThreadBegin,
5451
omptest::internal::EventTy::ThreadEnd,
55-
omptest::internal::EventTy::ImplicitTask,
52+
omptest::internal::EventTy::ParallelBegin,
53+
omptest::internal::EventTy::ParallelEnd,
54+
omptest::internal::EventTy::Work,
55+
omptest::internal::EventTy::Dispatch,
5656
omptest::internal::EventTy::TaskCreate,
57-
omptest::internal::EventTy::TaskSchedule};
57+
omptest::internal::EventTy::Dependences,
58+
omptest::internal::EventTy::TaskDependence,
59+
omptest::internal::EventTy::TaskSchedule,
60+
omptest::internal::EventTy::ImplicitTask,
61+
omptest::internal::EventTy::Masked,
62+
omptest::internal::EventTy::SyncRegion,
63+
omptest::internal::EventTy::MutexAcquire,
64+
omptest::internal::EventTy::Mutex,
65+
omptest::internal::EventTy::NestLock,
66+
omptest::internal::EventTy::Flush,
67+
omptest::internal::EventTy::Cancel};
5868
};
5969

6070
/// Base class for asserting on OMPT events

offload/test/ompTest/include/OmptCallbackHandler.h

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,16 @@ class OmptCallbackHandler {
118118
void handleBufferRecordDeallocation(ompt_buffer_t *Buffer);
119119

120120
/// Not needed for a conforming minimal OMPT implementation
121-
void handleWorkBegin(ompt_work_t work_type, ompt_scope_endpoint_t endpoint,
122-
ompt_data_t *parallel_data, ompt_data_t *task_data,
123-
uint64_t count, const void *codeptr_ra);
121+
void handleWork(ompt_work_t WorkType, ompt_scope_endpoint_t Endpoint,
122+
ompt_data_t *ParallelData, ompt_data_t *TaskData,
123+
uint64_t Count, const void *CodeptrRA);
124124

125-
void handleWorkEnd(ompt_work_t work_type, ompt_scope_endpoint_t endpoint,
126-
ompt_data_t *parallel_data, ompt_data_t *task_data,
127-
uint64_t count, const void *codeptr_ra);
125+
void handleDispatch(ompt_data_t *ParallelData, ompt_data_t *TaskData,
126+
ompt_dispatch_t Kind, ompt_data_t Instance);
127+
128+
void handleSyncRegion(ompt_sync_region_t Kind, ompt_scope_endpoint_t Endpoint,
129+
ompt_data_t *ParallelData, ompt_data_t *TaskData,
130+
const void *CodeptrRA);
128131

129132
private:
130133
/// Wrapper around emplace_back for potential additional logging / checking or

0 commit comments

Comments
 (0)