5#include "gtest/gtest.h"
9TEST(InternalEvent_toString, AssertionSyncPoint) {
12 EXPECT_EQ(SP.
toString(),
"Assertion SyncPoint: 'Test Sync Point'");
15TEST(InternalEvent_toString, ThreadBegin) {
18 EXPECT_EQ(TB.
toString(),
"OMPT Callback ThreadBegin: ThreadType=1");
21TEST(InternalEvent_toString, ThreadEnd) {
24 EXPECT_EQ(TE.
toString(),
"OMPT Callback ThreadEnd");
27TEST(InternalEvent_toString, ParallelBegin) {
30 EXPECT_EQ(PB.
toString(),
"OMPT Callback ParallelBegin: NumThreads=31");
33TEST(InternalEvent_toString, ParallelEnd) {
39 EXPECT_EQ(PE.
toString(),
"OMPT Callback ParallelEnd");
42TEST(InternalEvent_toString, Work) {
44 ompt_scope_endpoint_t::ompt_scope_beginend,
51 "OMPT Callback Work: work_type=11 endpoint=3 parallel_data=0x11 "
52 "task_data=0x22 count=31 codeptr=0x33");
55TEST(InternalEvent_toString, Dispatch_iteration) {
56 ompt_data_t DI{.value = 31};
59 ompt_dispatch_t::ompt_dispatch_iteration,
62 EXPECT_EQ(D.
toString(),
"OMPT Callback Dispatch: parallel_data=0x11 "
63 "task_data=0x22 kind=1 instance=[it=31]");
66TEST(InternalEvent_toString, Dispatch_section) {
67 ompt_data_t DI{.ptr = (
void *)0x33};
70 ompt_dispatch_t::ompt_dispatch_section,
73 EXPECT_EQ(D.
toString(),
"OMPT Callback Dispatch: parallel_data=0x11 "
74 "task_data=0x22 kind=2 instance=[ptr=0x33]");
77TEST(InternalEvent_toString, Dispatch_chunks) {
78 ompt_dispatch_chunk_t DC{.start = 7, .iterations = 31};
79 ompt_data_t DI{.ptr = (
void *)&DC};
84 ompt_dispatch_t::ompt_dispatch_ws_loop_chunk,
90 ompt_dispatch_t::ompt_dispatch_taskloop_chunk,
96 ompt_dispatch_t::ompt_dispatch_distribute_chunk,
99 ompt_data_t DINull{.ptr =
nullptr};
103 ompt_dispatch_t::ompt_dispatch_distribute_chunk,
107 "OMPT Callback Dispatch: parallel_data=0x11 "
108 "task_data=0x22 kind=3 instance=[chunk=(start=7, iterations=31)]");
111 "OMPT Callback Dispatch: parallel_data=0x11 "
112 "task_data=0x22 kind=4 instance=[chunk=(start=7, iterations=31)]");
115 "OMPT Callback Dispatch: parallel_data=0x11 "
116 "task_data=0x22 kind=5 instance=[chunk=(start=7, iterations=31)]");
118 EXPECT_EQ(DDistNull.
toString(),
"OMPT Callback Dispatch: parallel_data=0x11 "
119 "task_data=0x22 kind=5");
122TEST(InternalEvent_toString, TaskCreate) {
124 (
const ompt_frame_t *)0x22,
131 "OMPT Callback TaskCreate: encountering_task_data=0x11 "
132 "encountering_task_frame=0x22 new_task_data=0x33 flags=7 "
133 "has_dependences=31 codeptr=0x44");
136TEST(InternalEvent_toString, ImplicitTask) {
138 ompt_scope_endpoint_t::ompt_scope_begin,
146 "OMPT Callback ImplicitTask: endpoint=1 parallel_data=0x11 "
147 "task_data=0x22 actual_parallelism=7 index=31 flags=127");
150TEST(InternalEvent_toString, SyncRegion) {
152 ompt_sync_region_t::ompt_sync_region_taskwait,
153 ompt_scope_endpoint_t::ompt_scope_end,
158 EXPECT_EQ(SR.
toString(),
"OMPT Callback SyncRegion: kind=5 endpoint=2 "
159 "parallel_data=0x11 task_data=0x22 codeptr=0x33");
162TEST(InternalEvent_toString, Target) {
164 ompt_scope_endpoint_t::ompt_scope_end,
170 EXPECT_EQ(T.toString(),
"Callback Target: target_id=31 kind=10 "
171 "endpoint=2 device_num=7 code=0x22");
174TEST(InternalEvent_toString, TargetEmi) {
175 ompt_data_t TaskData{.value = 31};
176 ompt_data_t TargetTaskData{.value = 127};
177 ompt_data_t TargetData{.value = 8191};
180 ompt_scope_endpoint_t::ompt_scope_begin,
182 (ompt_data_t *)&TaskData,
183 (ompt_data_t *)&TargetTaskData,
184 (ompt_data_t *)&TargetData,
188 ompt_target_t::ompt_target_update,
189 ompt_scope_endpoint_t::ompt_scope_begin,
191 (ompt_data_t *)&TaskData,
192 (ompt_data_t *)
nullptr,
193 (ompt_data_t *)&TargetData,
196 std::ostringstream StreamT1;
197 std::ostringstream StreamT2;
198 std::string CallBackPrefix{
199 "Callback Target EMI: kind=4 endpoint=1 device_num=7"};
200 StreamT1 << CallBackPrefix << std::showbase << std::hex;
201 StreamT1 <<
" task_data=" << &TaskData <<
" (0x1f)";
202 StreamT1 <<
" target_task_data=" << &TargetTaskData <<
" (0x7f)";
203 StreamT1 <<
" target_data=" << &TargetData <<
" (0x1fff)";
204 StreamT1 <<
" code=0x11";
206 StreamT2 << CallBackPrefix << std::showbase << std::hex;
207 StreamT2 <<
" task_data=" << &TaskData <<
" (0x1f)";
208 StreamT2 <<
" target_task_data=(nil) (0x0)";
209 StreamT2 <<
" target_data=" << &TargetData <<
" (0x1fff)";
210 StreamT2 <<
" code=0x11";
212 EXPECT_EQ(T.toString(), StreamT1.str());
213 EXPECT_EQ(TDataNull.
toString(), StreamT2.str());
216TEST(InternalEvent_toString, TargetDataOp) {
220 ompt_target_data_op_t::ompt_target_data_associate,
230 " Callback DataOp: target_id=7 host_op_id=31 optype=5 src=0x11 "
231 "src_device_num=127 dest=0x22 dest_device_num=8191 bytes=4096 code=0x33");
234TEST(InternalEvent_toString, TargetDataOpEmi) {
235 ompt_data_t TargetTaskData{.value = 31};
236 ompt_data_t TargetData{.value = 127};
237 ompt_id_t HostOpId = 8191;
240 ompt_scope_endpoint_t::ompt_scope_begin,
241 (ompt_data_t *)&TargetTaskData,
242 (ompt_data_t *)&TargetData,
243 (ompt_id_t *)&HostOpId,
244 ompt_target_data_op_t::ompt_target_data_disassociate,
254 ompt_scope_endpoint_t::ompt_scope_begin,
255 (ompt_data_t *)&TargetTaskData,
256 (ompt_data_t *)&TargetData,
257 (ompt_id_t *)
nullptr,
258 ompt_target_data_op_t::ompt_target_data_disassociate,
266 std::ostringstream StreamTDO1;
267 std::ostringstream StreamTDO2;
268 std::string CallBackPrefix{
" Callback DataOp EMI: endpoint=1 optype=6"};
269 std::string CallBackSuffix{
270 " src=0x11 src_device_num=1 dest=0x22 dest_device_num=2 "
271 "bytes=4096 code=0x33"};
272 StreamTDO1 << CallBackPrefix << std::showbase << std::hex;
273 StreamTDO1 <<
" target_task_data=" << &TargetTaskData <<
" (0x1f)";
274 StreamTDO1 <<
" target_data=" << &TargetData <<
" (0x7f)";
275 StreamTDO1 <<
" host_op_id=" << &HostOpId <<
" (0x1fff)";
276 StreamTDO1 << CallBackSuffix;
278 StreamTDO2 << CallBackPrefix << std::showbase << std::hex;
279 StreamTDO2 <<
" target_task_data=" << &TargetTaskData <<
" (0x1f)";
280 StreamTDO2 <<
" target_data=" << &TargetData <<
" (0x7f)";
281 StreamTDO2 <<
" host_op_id=(nil) (0x0)";
282 StreamTDO2 << CallBackSuffix;
284 EXPECT_EQ(TDO.
toString(), StreamTDO1.str());
285 EXPECT_EQ(TDO_HostOpIdNull.
toString(), StreamTDO2.str());
288TEST(InternalEvent_toString, TargetSubmit) {
294 " Callback Submit: target_id=7 host_op_id=31 req_num_teams=127");
297TEST(InternalEvent_toString, TargetSubmitEmi) {
298 ompt_data_t TargetData{.value = 127};
299 ompt_id_t HostOpId = 8191;
301 ompt_scope_endpoint_t::ompt_scope_begin,
302 (ompt_data_t *)&TargetData,
303 (ompt_id_t *)&HostOpId,
306 std::ostringstream StreamTS;
307 std::string CallBackPrefix{
308 " Callback Submit EMI: endpoint=1 req_num_teams=7"};
309 StreamTS << CallBackPrefix << std::showbase << std::hex;
310 StreamTS <<
" target_data=" << &TargetData <<
" (0x7f)";
311 StreamTS <<
" host_op_id=" << &HostOpId <<
" (0x1fff)";
313 EXPECT_EQ(TS.
toString(), StreamTS.str());
316TEST(InternalEvent_toString, DeviceInitialize) {
317 const char *Type =
"DeviceType";
318 const char *DocStr =
"DocumentationString";
322 (ompt_device_t *)0x11,
323 (ompt_function_lookup_t)0x22,
329 (ompt_function_lookup_t)0x0,
332 std::ostringstream StreamDI;
333 std::string CallBackPrefix{
"Callback Init: device_num=7 type=DeviceType "
334 "device=0x11 lookup=0x22 doc="};
335 StreamDI << CallBackPrefix << std::showbase << std::hex;
336 StreamDI << (uint64_t)DocStr;
337 EXPECT_EQ(DI.
toString(), StreamDI.str());
340 EXPECT_EQ(DINull.
toString(),
"Callback Init: device_num=0 type=(null) "
341 "device=(nil) lookup=(nil) doc=(nil)");
344TEST(InternalEvent_toString, DeviceFinalize) {
347 EXPECT_EQ(DF.
toString(),
"Callback Fini: device_num=7");
350TEST(InternalEvent_toString, DeviceLoad) {
351 const char *Filename =
"FilenameToLoad";
373 "Callback Load: device_num:7 module_id:8191 "
374 "filename:FilenameToLoad host_addr:0x22 device_addr:0x33 bytes:127");
378 "Callback Load: device_num:0 module_id:0 filename:(null) "
379 "host_addr:(nil) device_addr:(nil) bytes:0");
382TEST(InternalEvent_toString, BufferRequest) {
384 ompt_buffer_t *Buffer = (
void *)0x11;
395 "Allocated 7 bytes at 0x11 in buffer request callback");
397 "Allocated 0 bytes at (nil) in buffer request callback");
400TEST(InternalEvent_toString, BufferComplete) {
401 ompt_buffer_t *Buffer = (
void *)0x11;
416 "Executing buffer complete callback: 7 0x11 127 0x1fff 1");
418 "Executing buffer complete callback: 0 (nil) 0 (nil) 0");
421TEST(InternalEvent_toString, BufferRecordInvalid) {
422 ompt_record_ompt_t InvalidRecord{
423 ompt_callbacks_t::ompt_callback_parallel_begin,
427 {.parallel_begin = {}}};
432 std::ostringstream StreamBRInvalid;
433 StreamBRInvalid <<
"rec=" << std::showbase << std::hex << &InvalidRecord;
434 StreamBRInvalid <<
" type=3 (unsupported record type)";
436 EXPECT_EQ(BRNull.
toString(),
"rec=(nil) type=0 (unsupported record type)");
437 EXPECT_EQ(BRInvalid.
toString(), StreamBRInvalid.str());
440TEST(InternalEvent_toString, BufferRecordTarget) {
441 ompt_record_target_t SubRecordTarget{
442 ompt_target_t::ompt_target_update,
443 ompt_scope_endpoint_t::ompt_scope_begin,
449 ompt_record_ompt_t TargetRecord{
450 ompt_callbacks_t::ompt_callback_target,
454 {.target = SubRecordTarget}};
458 std::ostringstream StreamBR;
459 StreamBR <<
"rec=" << std::showbase << std::hex << &TargetRecord;
460 StreamBR <<
" type=8 (Target task) time=7 thread_id=29 target_id=31 kind=4";
461 StreamBR <<
" endpoint=1 device=2 task_id=127 codeptr=0x11";
463 EXPECT_EQ(BR.
toString(), StreamBR.str());
466TEST(InternalEvent_toString, BufferRecordDataOp) {
467 ompt_record_target_data_op_t SubRecordTargetDataOp{
469 ompt_target_data_op_t::ompt_target_data_alloc_async,
479 ompt_record_ompt_t DataOpRecord{
480 ompt_callbacks_t::ompt_callback_target_data_op_emi,
484 {.target_data_op = SubRecordTargetDataOp}};
488 std::ostringstream StreamBR;
489 StreamBR <<
"rec=" << std::showbase << std::hex << &DataOpRecord;
490 StreamBR <<
" type=34 (Target data op) time=8 thread_id=3 target_id=5";
491 StreamBR <<
" host_op_id=7 optype=17 src_addr=0x11 src_device=1";
492 StreamBR <<
" dest_addr=0x22 dest_device=2 bytes=127 end_time=128";
493 StreamBR <<
" duration=120 ns codeptr=0x33";
495 EXPECT_EQ(BR.
toString(), StreamBR.str());
498TEST(InternalEvent_toString, BufferRecordKernel) {
499 ompt_record_target_kernel_t SubRecordTargetKernel{
506 ompt_record_ompt_t KernelRecord{
507 ompt_callbacks_t::ompt_callback_target_submit_emi,
511 {.target_kernel = SubRecordTargetKernel}};
515 std::ostringstream StreamBR;
516 StreamBR <<
"rec=" << std::showbase << std::hex << &KernelRecord;
517 StreamBR <<
" type=35 (Target kernel) time=9 thread_id=19 target_id=33";
518 StreamBR <<
" host_op_id=11 requested_num_teams=127 granted_num_teams=63";
519 StreamBR <<
" end_time=8191 duration=8182 ns";
521 EXPECT_EQ(BR.
toString(), StreamBR.str());
524TEST(InternalEvent_toString, BufferRecordDeallocation) {
528 EXPECT_EQ(BRD.
toString(),
"Deallocated 0x11");
529 EXPECT_EQ(BRDNull.
toString(),
"Deallocated (nil)");
Declares internal event representations along the default CTOR definition.
#define TEST(test_suite_name, test_name)
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.