LLVM OpenMP
OmptAssertEvent.cpp
Go to the documentation of this file.
1//===- OmptAssertEvent.cpp - Assertion event implementations ----*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file
10/// Implements assertion event CTORs, for generally all observable events.
11///
12//===----------------------------------------------------------------------===//
13
14#include "OmptAssertEvent.h"
15#include <omp-tools.h>
16
17#include <cstdlib>
18
19using namespace omptest;
20
21const char *omptest::to_string(ObserveState State) {
22 switch (State) {
24 return "Generated";
26 return "Always";
28 return "Never";
29 }
30}
31
32OmptAssertEvent::OmptAssertEvent(const std::string &Name,
33 const std::string &Group,
34 const ObserveState &Expected,
36 : Name(Name), Group(Group), ExpectedState(Expected), TheEvent(IE) {}
37
39 const std::string &Name, const std::string &Group,
40 const ObserveState &Expected, const std::string &SyncPointName) {
41 auto EName = getName(Name);
42 auto EGroup = getGroup(Group);
43 return OmptAssertEvent(EName, EGroup, Expected,
44 new internal::AssertionSyncPoint(SyncPointName));
45}
46
48OmptAssertEvent::AssertionSuspend(const std::string &Name,
49 const std::string &Group,
50 const ObserveState &Expected) {
51 auto EName = getName(Name);
52 auto EGroup = getGroup(Group);
53 return OmptAssertEvent(EName, EGroup, Expected,
55}
56
58 const std::string &Group,
59 const ObserveState &Expected,
60 ompt_thread_t ThreadType) {
61 auto EName = getName(Name);
62 auto EGroup = getGroup(Group);
63 return OmptAssertEvent(EName, EGroup, Expected,
64 new internal::ThreadBegin(ThreadType));
65}
66
68 const std::string &Group,
69 const ObserveState &Expected) {
70 auto EName = getName(Name);
71 auto EGroup = getGroup(Group);
72 return OmptAssertEvent(EName, EGroup, Expected, new internal::ThreadEnd());
73}
74
76 const std::string &Group,
77 const ObserveState &Expected,
78 int NumThreads) {
79 auto EName = getName(Name);
80 auto EGroup = getGroup(Group);
81 return OmptAssertEvent(EName, EGroup, Expected,
82 new internal::ParallelBegin(NumThreads));
83}
84
86 const std::string &Group,
87 const ObserveState &Expected,
88 ompt_data_t *ParallelData,
89 ompt_data_t *EncounteringTaskData,
90 int Flags, const void *CodeptrRA) {
91 auto EName = getName(Name);
92 auto EGroup = getGroup(Group);
93 return OmptAssertEvent(EName, EGroup, Expected,
94 new internal::ParallelEnd(ParallelData,
95 EncounteringTaskData, Flags,
96 CodeptrRA));
97}
98
100OmptAssertEvent::Work(const std::string &Name, const std::string &Group,
101 const ObserveState &Expected, ompt_work_t WorkType,
102 ompt_scope_endpoint_t Endpoint, ompt_data_t *ParallelData,
103 ompt_data_t *TaskData, uint64_t Count,
104 const void *CodeptrRA) {
105 auto EName = getName(Name);
106 auto EGroup = getGroup(Group);
107 return OmptAssertEvent(EName, EGroup, Expected,
108 new internal::Work(WorkType, Endpoint, ParallelData,
109 TaskData, Count, CodeptrRA));
110}
111
113OmptAssertEvent::Dispatch(const std::string &Name, const std::string &Group,
114 const ObserveState &Expected,
115 ompt_data_t *ParallelData, ompt_data_t *TaskData,
116 ompt_dispatch_t Kind, ompt_data_t Instance) {
117 auto EName = getName(Name);
118 auto EGroup = getGroup(Group);
119 return OmptAssertEvent(
120 EName, EGroup, Expected,
121 new internal::Dispatch(ParallelData, TaskData, Kind, Instance));
122}
123
125 const std::string &Name, const std::string &Group,
126 const ObserveState &Expected, ompt_data_t *EncounteringTaskData,
127 const ompt_frame_t *EncounteringTaskFrame, ompt_data_t *NewTaskData,
128 int Flags, int HasDependences, const void *CodeptrRA) {
129 auto EName = getName(Name);
130 auto EGroup = getGroup(Group);
131 return OmptAssertEvent(
132 EName, EGroup, Expected,
133 new internal::TaskCreate(EncounteringTaskData, EncounteringTaskFrame,
134 NewTaskData, Flags, HasDependences, CodeptrRA));
135}
136
138 const std::string &Group,
139 const ObserveState &Expected) {
140 auto EName = getName(Name);
141 auto EGroup = getGroup(Group);
142 return OmptAssertEvent(EName, EGroup, Expected, new internal::TaskSchedule());
143}
144
146 const std::string &Name, const std::string &Group,
147 const ObserveState &Expected, ompt_scope_endpoint_t Endpoint,
148 ompt_data_t *ParallelData, ompt_data_t *TaskData,
149 unsigned int ActualParallelism, unsigned int Index, int Flags) {
150 auto EName = getName(Name);
151 auto EGroup = getGroup(Group);
152 return OmptAssertEvent(EName, EGroup, Expected,
153 new internal::ImplicitTask(Endpoint, ParallelData,
154 TaskData, ActualParallelism,
155 Index, Flags));
156}
157
159 const std::string &Name, const std::string &Group,
160 const ObserveState &Expected, ompt_sync_region_t Kind,
161 ompt_scope_endpoint_t Endpoint, ompt_data_t *ParallelData,
162 ompt_data_t *TaskData, const void *CodeptrRA) {
163 auto EName = getName(Name);
164 auto EGroup = getGroup(Group);
165 return OmptAssertEvent(EName, EGroup, Expected,
166 new internal::SyncRegion(Kind, Endpoint, ParallelData,
167 TaskData, CodeptrRA));
168}
169
171OmptAssertEvent::Target(const std::string &Name, const std::string &Group,
172 const ObserveState &Expected, ompt_target_t Kind,
173 ompt_scope_endpoint_t Endpoint, int DeviceNum,
174 ompt_data_t *TaskData, ompt_id_t TargetId,
175 const void *CodeptrRA) {
176 auto EName = getName(Name);
177 auto EGroup = getGroup(Group);
178 return OmptAssertEvent(EName, EGroup, Expected,
179 new internal::Target(Kind, Endpoint, DeviceNum,
180 TaskData, TargetId, CodeptrRA));
181}
182
184OmptAssertEvent::TargetEmi(const std::string &Name, const std::string &Group,
185 const ObserveState &Expected, ompt_target_t Kind,
186 ompt_scope_endpoint_t Endpoint, int DeviceNum,
187 ompt_data_t *TaskData, ompt_data_t *TargetTaskData,
188 ompt_data_t *TargetData, const void *CodeptrRA) {
189 auto EName = getName(Name);
190 auto EGroup = getGroup(Group);
191 return OmptAssertEvent(EName, EGroup, Expected,
192 new internal::TargetEmi(Kind, Endpoint, DeviceNum,
193 TaskData, TargetTaskData,
194 TargetData, CodeptrRA));
195}
196
198 const std::string &Name, const std::string &Group,
199 const ObserveState &Expected, ompt_id_t TargetId, ompt_id_t HostOpId,
200 ompt_target_data_op_t OpType, void *SrcAddr, int SrcDeviceNum,
201 void *DstAddr, int DstDeviceNum, size_t Bytes, const void *CodeptrRA) {
202 auto EName = getName(Name);
203 auto EGroup = getGroup(Group);
204 return OmptAssertEvent(EName, EGroup, Expected,
206 TargetId, HostOpId, OpType, SrcAddr, SrcDeviceNum,
207 DstAddr, DstDeviceNum, Bytes, CodeptrRA));
208}
209
211 const std::string &Name, const std::string &Group,
212 const ObserveState &Expected, ompt_target_data_op_t OpType, size_t Bytes,
213 void *SrcAddr, void *DstAddr, int SrcDeviceNum, int DstDeviceNum,
214 ompt_id_t TargetId, ompt_id_t HostOpId, const void *CodeptrRA) {
215 auto EName = getName(Name);
216 auto EGroup = getGroup(Group);
217 return OmptAssertEvent(EName, EGroup, Expected,
219 TargetId, HostOpId, OpType, SrcAddr, SrcDeviceNum,
220 DstAddr, DstDeviceNum, Bytes, CodeptrRA));
221}
222
224 const std::string &Name, const std::string &Group,
225 const ObserveState &Expected, ompt_scope_endpoint_t Endpoint,
226 ompt_data_t *TargetTaskData, ompt_data_t *TargetData, ompt_id_t *HostOpId,
227 ompt_target_data_op_t OpType, void *SrcAddr, int SrcDeviceNum,
228 void *DstAddr, int DstDeviceNum, size_t Bytes, const void *CodeptrRA) {
229 auto EName = getName(Name);
230 auto EGroup = getGroup(Group);
231 return OmptAssertEvent(
232 EName, EGroup, Expected,
233 new internal::TargetDataOpEmi(Endpoint, TargetTaskData, TargetData,
234 HostOpId, OpType, SrcAddr, SrcDeviceNum,
235 DstAddr, DstDeviceNum, Bytes, CodeptrRA));
236}
237
239 const std::string &Name, const std::string &Group,
240 const ObserveState &Expected, ompt_target_data_op_t OpType,
241 ompt_scope_endpoint_t Endpoint, size_t Bytes, void *SrcAddr, void *DstAddr,
242 int SrcDeviceNum, int DstDeviceNum, ompt_data_t *TargetTaskData,
243 ompt_data_t *TargetData, ompt_id_t *HostOpId, const void *CodeptrRA) {
244 auto EName = getName(Name);
245 auto EGroup = getGroup(Group);
246 return OmptAssertEvent(
247 EName, EGroup, Expected,
248 new internal::TargetDataOpEmi(Endpoint, TargetTaskData, TargetData,
249 HostOpId, OpType, SrcAddr, SrcDeviceNum,
250 DstAddr, DstDeviceNum, Bytes, CodeptrRA));
251}
252
254 const std::string &Group,
255 const ObserveState &Expected,
256 ompt_id_t TargetId,
257 ompt_id_t HostOpId,
258 unsigned int RequestedNumTeams) {
259 auto EName = getName(Name);
260 auto EGroup = getGroup(Group);
261 return OmptAssertEvent(
262 EName, EGroup, Expected,
263 new internal::TargetSubmit(TargetId, HostOpId, RequestedNumTeams));
264}
265
267 const std::string &Group,
268 const ObserveState &Expected,
269 unsigned int RequestedNumTeams,
270 ompt_id_t TargetId,
271 ompt_id_t HostOpId) {
272 auto EName = getName(Name);
273 auto EGroup = getGroup(Group);
274 return OmptAssertEvent(
275 EName, EGroup, Expected,
276 new internal::TargetSubmit(TargetId, HostOpId, RequestedNumTeams));
277}
278
280 const std::string &Name, const std::string &Group,
281 const ObserveState &Expected, ompt_scope_endpoint_t Endpoint,
282 ompt_data_t *TargetData, ompt_id_t *HostOpId,
283 unsigned int RequestedNumTeams) {
284 auto EName = getName(Name);
285 auto EGroup = getGroup(Group);
286 return OmptAssertEvent(EName, EGroup, Expected,
287 new internal::TargetSubmitEmi(Endpoint, TargetData,
288 HostOpId,
289 RequestedNumTeams));
290}
291
293 const std::string &Group,
294 const ObserveState &Expected,
295 unsigned int RequestedNumTeams,
296 ompt_scope_endpoint_t Endpoint,
297 ompt_data_t *TargetData,
298 ompt_id_t *HostOpId) {
299 auto EName = getName(Name);
300 auto EGroup = getGroup(Group);
301 return OmptAssertEvent(EName, EGroup, Expected,
302 new internal::TargetSubmitEmi(Endpoint, TargetData,
303 HostOpId,
304 RequestedNumTeams));
305}
306
308 const std::string &Group,
309 const ObserveState &Expected) {
310 auto EName = getName(Name);
311 auto EGroup = getGroup(Group);
312 return OmptAssertEvent(EName, EGroup, Expected, new internal::ControlTool());
313}
314
316 const std::string &Name, const std::string &Group,
317 const ObserveState &Expected, int DeviceNum, const char *Type,
318 ompt_device_t *Device, ompt_function_lookup_t LookupFn,
319 const char *DocumentationStr) {
320 auto EName = getName(Name);
321 auto EGroup = getGroup(Group);
322 return OmptAssertEvent(EName, EGroup, Expected,
323 new internal::DeviceInitialize(DeviceNum, Type, Device,
324 LookupFn,
325 DocumentationStr));
326}
327
329 const std::string &Group,
330 const ObserveState &Expected,
331 int DeviceNum) {
332 auto EName = getName(Name);
333 auto EGroup = getGroup(Group);
334 return OmptAssertEvent(EName, EGroup, Expected,
335 new internal::DeviceFinalize(DeviceNum));
336}
337
339OmptAssertEvent::DeviceLoad(const std::string &Name, const std::string &Group,
340 const ObserveState &Expected, int DeviceNum,
341 const char *Filename, int64_t OffsetInFile,
342 void *VmaInFile, size_t Bytes, void *HostAddr,
343 void *DeviceAddr, uint64_t ModuleId) {
344 auto EName = getName(Name);
345 auto EGroup = getGroup(Group);
346 return OmptAssertEvent(
347 EName, EGroup, Expected,
348 new internal::DeviceLoad(DeviceNum, Filename, OffsetInFile, VmaInFile,
349 Bytes, HostAddr, DeviceAddr, ModuleId));
350}
351
353 const std::string &Group,
354 const ObserveState &Expected) {
355 auto EName = getName(Name);
356 auto EGroup = getGroup(Group);
357 return OmptAssertEvent(EName, EGroup, Expected, new internal::DeviceUnload());
358}
359
361 const std::string &Group,
362 const ObserveState &Expected,
363 int DeviceNum,
364 ompt_buffer_t **Buffer,
365 size_t *Bytes) {
366 auto EName = getName(Name);
367 auto EGroup = getGroup(Group);
368 return OmptAssertEvent(EName, EGroup, Expected,
369 new internal::BufferRequest(DeviceNum, Buffer, Bytes));
370}
371
373 const std::string &Name, const std::string &Group,
374 const ObserveState &Expected, int DeviceNum, ompt_buffer_t *Buffer,
375 size_t Bytes, ompt_buffer_cursor_t Begin, int BufferOwned) {
376 auto EName = getName(Name);
377 auto EGroup = getGroup(Group);
378 return OmptAssertEvent(EName, EGroup, Expected,
379 new internal::BufferComplete(DeviceNum, Buffer, Bytes,
380 Begin, BufferOwned));
381}
382
384 const std::string &Group,
385 const ObserveState &Expected,
386 ompt_record_ompt_t *Record) {
387 auto EName = getName(Name);
388 auto EGroup = getGroup(Group);
389 return OmptAssertEvent(EName, EGroup, Expected,
390 new internal::BufferRecord(Record));
391}
392
394 const std::string &Name, const std::string &Group,
395 const ObserveState &Expected, ompt_callbacks_t Type, ompt_target_t Kind,
396 ompt_scope_endpoint_t Endpoint, int DeviceNum, ompt_id_t TaskId,
397 ompt_id_t TargetId, const void *CodeptrRA) {
398 auto EName = getName(Name);
399 auto EGroup = getGroup(Group);
400
401 if (Type != ompt_callback_target)
402 assert(false && "CTOR only suited for type: 'ompt_callback_target'");
403
404 ompt_record_target_t Subrecord{Kind, Endpoint, DeviceNum,
405 TaskId, TargetId, CodeptrRA};
406
407 ompt_record_ompt_t *RecordPtr =
408 (ompt_record_ompt_t *)malloc(sizeof(ompt_record_ompt_t));
409 memset(RecordPtr, 0, sizeof(ompt_record_ompt_t));
410 RecordPtr->type = Type;
411 RecordPtr->time = expectedDefault(ompt_device_time_t);
412 RecordPtr->thread_id = expectedDefault(ompt_id_t);
413 RecordPtr->target_id = TargetId;
414 RecordPtr->record.target = Subrecord;
415
416 return OmptAssertEvent(EName, EGroup, Expected,
417 new internal::BufferRecord(RecordPtr));
418}
419
421 const std::string &Name, const std::string &Group,
422 const ObserveState &Expected, ompt_callbacks_t Type,
423 ompt_target_data_op_t OpType, size_t Bytes,
424 std::pair<ompt_device_time_t, ompt_device_time_t> Timeframe, void *SrcAddr,
425 void *DstAddr, int SrcDeviceNum, int DstDeviceNum, ompt_id_t TargetId,
426 ompt_id_t HostOpId, const void *CodeptrRA) {
427 auto EName = getName(Name);
428 auto EGroup = getGroup(Group);
429
430 if (Type != ompt_callback_target_data_op)
431 assert(false &&
432 "CTOR only suited for type: 'ompt_callback_target_data_op'");
433
434 ompt_record_target_data_op_t Subrecord{
435 HostOpId, OpType, SrcAddr, SrcDeviceNum, DstAddr,
436 DstDeviceNum, Bytes, Timeframe.second, CodeptrRA};
437
438 ompt_record_ompt_t *RecordPtr =
439 (ompt_record_ompt_t *)malloc(sizeof(ompt_record_ompt_t));
440 memset(RecordPtr, 0, sizeof(ompt_record_ompt_t));
441 RecordPtr->type = Type;
442 RecordPtr->time = Timeframe.first;
443 RecordPtr->thread_id = expectedDefault(ompt_id_t);
444 RecordPtr->target_id = TargetId;
445 RecordPtr->record.target_data_op = Subrecord;
446
447 return OmptAssertEvent(EName, EGroup, Expected,
448 new internal::BufferRecord(RecordPtr));
449}
450
452 const std::string &Name, const std::string &Group,
453 const ObserveState &Expected, ompt_callbacks_t Type,
454 ompt_target_data_op_t OpType, size_t Bytes,
455 ompt_device_time_t MinimumTimeDelta, void *SrcAddr, void *DstAddr,
456 int SrcDeviceNum, int DstDeviceNum, ompt_id_t TargetId, ompt_id_t HostOpId,
457 const void *CodeptrRA) {
458 return BufferRecord(Name, Group, Expected, Type, OpType, Bytes,
459 {MinimumTimeDelta, expectedDefault(ompt_device_time_t)},
460 SrcAddr, DstAddr, SrcDeviceNum, DstDeviceNum, TargetId,
461 HostOpId, CodeptrRA);
462}
463
465 const std::string &Name, const std::string &Group,
466 const ObserveState &Expected, ompt_callbacks_t Type,
467 std::pair<ompt_device_time_t, ompt_device_time_t> Timeframe,
468 unsigned int RequestedNumTeams, unsigned int GrantedNumTeams,
469 ompt_id_t TargetId, ompt_id_t HostOpId) {
470 auto EName = getName(Name);
471 auto EGroup = getGroup(Group);
472
473 bool isDefault = (Timeframe.first == expectedDefault(ompt_device_time_t));
474 isDefault &= (Timeframe.second == expectedDefault(ompt_device_time_t));
475 isDefault &= (RequestedNumTeams == expectedDefault(unsigned int));
476 isDefault &= (GrantedNumTeams == expectedDefault(unsigned int));
477 isDefault &= (TargetId == expectedDefault(ompt_id_t));
478 isDefault &= (HostOpId == expectedDefault(ompt_id_t));
479
480 ompt_record_ompt_t *RecordPtr =
481 (ompt_record_ompt_t *)malloc(sizeof(ompt_record_ompt_t));
482 memset(RecordPtr, 0, sizeof(ompt_record_ompt_t));
483 RecordPtr->type = Type;
484
485 // This handles the simplest occurrence of a device tracing record
486 // We can only check for Type -- since all other properties are set to default
487 if (isDefault) {
488 RecordPtr->time = expectedDefault(ompt_device_time_t);
489 RecordPtr->thread_id = expectedDefault(ompt_id_t);
490 RecordPtr->target_id = expectedDefault(ompt_id_t);
491 if (Type == ompt_callback_target) {
492 ompt_record_target_t Subrecord{expectedDefault(ompt_target_t),
493 expectedDefault(ompt_scope_endpoint_t),
494 expectedDefault(int),
495 expectedDefault(ompt_id_t),
496 expectedDefault(ompt_id_t),
497 expectedDefault(void *)};
498 RecordPtr->record.target = Subrecord;
499 }
500
501 if (Type == ompt_callback_target_data_op) {
502 ompt_record_target_data_op_t Subrecord{
503 expectedDefault(ompt_id_t), expectedDefault(ompt_target_data_op_t),
504 expectedDefault(void *), expectedDefault(int),
505 expectedDefault(void *), expectedDefault(int),
506 expectedDefault(size_t), expectedDefault(ompt_device_time_t),
507 expectedDefault(void *)};
508 RecordPtr->record.target_data_op = Subrecord;
509 }
510
511 if (Type == ompt_callback_target_submit) {
512 ompt_record_target_kernel_t Subrecord{
513 expectedDefault(ompt_id_t), expectedDefault(unsigned int),
514 expectedDefault(unsigned int), expectedDefault(ompt_device_time_t)};
515 RecordPtr->record.target_kernel = Subrecord;
516 }
517
518 return OmptAssertEvent(EName, EGroup, Expected,
519 new internal::BufferRecord(RecordPtr));
520 }
521
522 if (Type != ompt_callback_target_submit)
523 assert(false && "CTOR only suited for type: 'ompt_callback_target_submit'");
524
525 ompt_record_target_kernel_t Subrecord{HostOpId, RequestedNumTeams,
526 GrantedNumTeams, Timeframe.second};
527
528 RecordPtr->time = Timeframe.first;
529 RecordPtr->thread_id = expectedDefault(ompt_id_t);
530 RecordPtr->target_id = TargetId;
531 RecordPtr->record.target_kernel = Subrecord;
532
533 return OmptAssertEvent(EName, EGroup, Expected,
534 new internal::BufferRecord(RecordPtr));
535}
536
538 const std::string &Name, const std::string &Group,
539 const ObserveState &Expected, ompt_callbacks_t Type,
540 ompt_device_time_t MinimumTimeDelta, unsigned int RequestedNumTeams,
541 unsigned int GrantedNumTeams, ompt_id_t TargetId, ompt_id_t HostOpId) {
542 return BufferRecord(Name, Group, Expected, Type,
543 {MinimumTimeDelta, expectedDefault(ompt_device_time_t)},
544 RequestedNumTeams, GrantedNumTeams, TargetId, HostOpId);
545}
546
548 const std::string &Name, const std::string &Group,
549 const ObserveState &Expected, ompt_buffer_t *Buffer) {
550 auto EName = getName(Name);
551 auto EGroup = getGroup(Group);
552 return OmptAssertEvent(EName, EGroup, Expected,
554}
555
556std::string OmptAssertEvent::getEventName() const { return Name; }
557
558std::string OmptAssertEvent::getEventGroup() const { return Group; }
559
561 return ExpectedState;
562}
563
565 return TheEvent->Type;
566}
567
569 return TheEvent.get();
570}
571
572std::string OmptAssertEvent::toString(bool PrefixEventName) const {
573 std::string S;
574 if (PrefixEventName)
575 S.append(getEventName()).append(": ");
576 S.append((TheEvent == nullptr) ? "OmptAssertEvent" : TheEvent->toString());
577 return S;
578}
579
581 assert(A.TheEvent.get() != nullptr && "A is valid");
582 assert(B.TheEvent.get() != nullptr && "B is valid");
583
584 return A.TheEvent->Type == B.TheEvent->Type &&
585 A.TheEvent->equals(B.TheEvent.get());
586}
#define expectedDefault(TypeName)
Contains assertion event constructors, for generally all observable events.
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark S
EventTy
Enum values are used for comparison of observed and asserted events List is based on OpenMP 5....
bool operator==(const OmptAssertEvent &A, const OmptAssertEvent &B)
const char * to_string(ObserveState State)
Helper function, returning an ObserveState string representation.
unsigned * Index(unsigned *p, unsigned i, unsigned j, unsigned bound2)
Assertion event struct, provides statically callable CTORs.
static OmptAssertEvent TargetDataOpEmi(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_scope_endpoint_t Endpoint, ompt_data_t *TargetTaskData, ompt_data_t *TargetData, ompt_id_t *HostOpId, ompt_target_data_op_t OpType, void *SrcAddr, int SrcDeviceNum, void *DstAddr, int DstDeviceNum, size_t Bytes, const void *CodeptrRA)
OmptAssertEvent(OmptAssertEvent &&o)=default
Allow move construction (due to std::unique_ptr)
static OmptAssertEvent SyncRegion(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_sync_region_t Kind, ompt_scope_endpoint_t Endpoint, ompt_data_t *ParallelData=expectedDefault(ompt_data_t *), ompt_data_t *TaskData=expectedDefault(ompt_data_t *), const void *CodeptrRA=expectedDefault(const void *))
std::string getEventName() const
Get the event's name.
static OmptAssertEvent BufferRecord(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_record_ompt_t *Record)
static OmptAssertEvent TargetSubmit(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_id_t TargetId, ompt_id_t HostOpId, unsigned int RequestedNumTeams)
static OmptAssertEvent AssertionSuspend(const std::string &Name, const std::string &Group, const ObserveState &Expected)
static OmptAssertEvent ControlTool(const std::string &Name, const std::string &Group, const ObserveState &Expected)
static OmptAssertEvent Dispatch(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_data_t *ParallelData=expectedDefault(ompt_data_t *), ompt_data_t *TaskData=expectedDefault(ompt_data_t *), ompt_dispatch_t Kind=expectedDefault(ompt_dispatch_t), ompt_data_t Instance=expectedDefault(ompt_data_t))
static OmptAssertEvent AssertionSyncPoint(const std::string &Name, const std::string &Group, const ObserveState &Expected, const std::string &SyncPointName)
static OmptAssertEvent TaskSchedule(const std::string &Name, const std::string &Group, const ObserveState &Expected)
static OmptAssertEvent BufferRequest(const std::string &Name, const std::string &Group, const ObserveState &Expected, int DeviceNum, ompt_buffer_t **Buffer, size_t *Bytes)
std::string toString(bool PrefixEventName=false) const
Returns the string representation of the event.
static OmptAssertEvent DeviceUnload(const std::string &Name, const std::string &Group, const ObserveState &Expected)
static OmptAssertEvent ParallelEnd(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_data_t *ParallelData=expectedDefault(ompt_data_t *), ompt_data_t *EncounteringTaskData=expectedDefault(ompt_data_t *), int Flags=expectedDefault(int), const void *CodeptrRA=expectedDefault(const void *))
static OmptAssertEvent DeviceLoad(const std::string &Name, const std::string &Group, const ObserveState &Expected, int DeviceNum, const char *Filename=expectedDefault(const char *), int64_t OffsetInFile=expectedDefault(int64_t), void *VmaInFile=expectedDefault(void *), size_t Bytes=expectedDefault(size_t), void *HostAddr=expectedDefault(void *), void *DeviceAddr=expectedDefault(void *), uint64_t ModuleId=expectedDefault(int64_t))
ObserveState getEventExpectedState() const
Get the event's expected observation state.
internal::EventTy getEventType() const
Return the actual event type enum value.
static OmptAssertEvent TargetSubmitEmi(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_scope_endpoint_t Endpoint, ompt_data_t *TargetData, ompt_id_t *HostOpId, unsigned int RequestedNumTeams)
internal::InternalEvent * getEvent() const
Get a pointer to the internal event.
static OmptAssertEvent TargetEmi(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_target_t Kind, ompt_scope_endpoint_t Endpoint, int DeviceNum=expectedDefault(int), ompt_data_t *TaskData=expectedDefault(ompt_data_t *), ompt_data_t *TargetTaskData=expectedDefault(ompt_data_t *), ompt_data_t *TargetData=expectedDefault(ompt_data_t *), const void *CodeptrRA=expectedDefault(void *))
static OmptAssertEvent TargetDataOp(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_id_t TargetId, ompt_id_t HostOpId, ompt_target_data_op_t OpType, void *SrcAddr, int SrcDeviceNum, void *DstAddr, int DstDeviceNum, size_t Bytes, const void *CodeptrRA)
static OmptAssertEvent Work(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_work_t WorkType, ompt_scope_endpoint_t Endpoint, ompt_data_t *ParallelData=expectedDefault(ompt_data_t *), ompt_data_t *TaskData=expectedDefault(ompt_data_t *), uint64_t Count=expectedDefault(uint64_t), const void *CodeptrRA=expectedDefault(const void *))
static OmptAssertEvent DeviceFinalize(const std::string &Name, const std::string &Group, const ObserveState &Expected, int DeviceNum)
static OmptAssertEvent BufferRecordDeallocation(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_buffer_t *Buffer)
static OmptAssertEvent DeviceInitialize(const std::string &Name, const std::string &Group, const ObserveState &Expected, int DeviceNum, const char *Type=expectedDefault(const char *), ompt_device_t *Device=expectedDefault(ompt_device_t *), ompt_function_lookup_t LookupFn=expectedDefault(ompt_function_lookup_t), const char *DocumentationStr=expectedDefault(const char *))
std::string getEventGroup() const
Get the event's group name.
static OmptAssertEvent BufferComplete(const std::string &Name, const std::string &Group, const ObserveState &Expected, int DeviceNum, ompt_buffer_t *Buffer, size_t Bytes, ompt_buffer_cursor_t Begin, int BufferOwned)
static OmptAssertEvent ThreadEnd(const std::string &Name, const std::string &Group, const ObserveState &Expected)
static OmptAssertEvent ParallelBegin(const std::string &Name, const std::string &Group, const ObserveState &Expected, int NumThreads)
static OmptAssertEvent TaskCreate(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_data_t *EncounteringTaskData=expectedDefault(ompt_data_t *), const ompt_frame_t *EncounteringTaskFrame=expectedDefault(ompt_frame_t *), ompt_data_t *NewTaskData=expectedDefault(ompt_data_t *), int Flags=expectedDefault(int), int HasDependences=expectedDefault(int), const void *CodeptrRA=expectedDefault(const void *))
static OmptAssertEvent ThreadBegin(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_thread_t ThreadType)
static OmptAssertEvent ImplicitTask(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_scope_endpoint_t Endpoint, ompt_data_t *ParallelData=expectedDefault(ompt_data_t *), ompt_data_t *TaskData=expectedDefault(ompt_data_t *), unsigned int ActualParallelism=expectedDefault(unsigned int), unsigned int Index=expectedDefault(unsigned int), int Flags=expectedDefault(int))
static OmptAssertEvent Target(const std::string &Name, const std::string &Group, const ObserveState &Expected, ompt_target_t Kind, ompt_scope_endpoint_t Endpoint, int DeviceNum=expectedDefault(int), ompt_data_t *TaskData=expectedDefault(ompt_data_t *), ompt_id_t TargetId=expectedDefault(ompt_id_t), const void *CodeptrRA=expectedDefault(void *))
Base event class Offers default CTOR, DTOR and CTOR which assigns the actual event type.