@@ -276,6 +276,11 @@ void call_ranges_unique(std::shared_ptr<gko::log::ProfilerHook> logger)
276
276
}
277
277
}
278
278
auto range6 = logger->user_range (" bazzzz" );
279
+ // an operation that requires accumulation of work estimates
280
+ logger->on_copy_started (nullptr , nullptr , 0 , 0 , 10 );
281
+ logger->on_copy_completed (nullptr , nullptr , 0 , 0 , 10 );
282
+ logger->on_copy_started (nullptr , nullptr , 0 , 0 , 35 );
283
+ logger->on_copy_completed (nullptr , nullptr , 0 , 0 , 35 );
279
284
}
280
285
281
286
struct TestSummaryWriter : gko::log::ProfilerHook::SummaryWriter {
@@ -291,11 +296,14 @@ struct TestSummaryWriter : gko::log::ProfilerHook::SummaryWriter {
291
296
* bazz()
292
297
* bazzz()
293
298
* )
294
- * bazzzz()
299
+ * bazzzz(
300
+ * copy()
301
+ * copy()
302
+ * )
295
303
* )
296
304
* )
297
305
*/
298
- ASSERT_EQ (e.size (), 7 );
306
+ ASSERT_EQ (e.size (), 8 );
299
307
ASSERT_EQ (e[0 ].name , " total" );
300
308
ASSERT_EQ (e[0 ].count , 1 );
301
309
ASSERT_EQ (e[1 ].name , " foo" );
@@ -310,6 +318,8 @@ struct TestSummaryWriter : gko::log::ProfilerHook::SummaryWriter {
310
318
ASSERT_EQ (e[5 ].count , 1 );
311
319
ASSERT_EQ (e[6 ].name , " bazzzz" );
312
320
ASSERT_EQ (e[6 ].count , 1 );
321
+ ASSERT_EQ (e[7 ].name , " copy" );
322
+ ASSERT_EQ (e[7 ].count , 2 );
313
323
ASSERT_EQ (e[0 ].inclusive , e[0 ].exclusive + e[1 ].inclusive );
314
324
ASSERT_EQ (e[1 ].inclusive , e[1 ].exclusive + e[2 ].inclusive +
315
325
e[3 ].inclusive + e[6 ].inclusive );
@@ -318,7 +328,12 @@ struct TestSummaryWriter : gko::log::ProfilerHook::SummaryWriter {
318
328
e[3 ].exclusive + e[4 ].inclusive + e[5 ].inclusive );
319
329
ASSERT_EQ (e[4 ].inclusive , e[4 ].exclusive );
320
330
ASSERT_EQ (e[5 ].inclusive , e[5 ].exclusive );
321
- ASSERT_EQ (e[6 ].inclusive , e[6 ].exclusive );
331
+ ASSERT_EQ (e[6 ].inclusive , e[6 ].exclusive + e[7 ].inclusive );
332
+ ASSERT_EQ (e[7 ].inclusive , e[7 ].exclusive );
333
+ const auto work_estimate = std::get<gko::memory_bound_work_estimate>(
334
+ e[7 ].work_estimate .value ());
335
+ ASSERT_EQ (work_estimate.bytes_read , 45 );
336
+ ASSERT_EQ (work_estimate.bytes_written , 45 );
322
337
}
323
338
};
324
339
@@ -353,6 +368,11 @@ void call_ranges(std::shared_ptr<gko::log::ProfilerHook> logger)
353
368
}
354
369
}
355
370
auto range6 = logger->user_range (" baz" );
371
+ // an operation that requires accumulation of work estimates
372
+ logger->on_copy_started (nullptr , nullptr , 0 , 0 , 10 );
373
+ logger->on_copy_completed (nullptr , nullptr , 0 , 0 , 10 );
374
+ logger->on_copy_started (nullptr , nullptr , 0 , 0 , 35 );
375
+ logger->on_copy_completed (nullptr , nullptr , 0 , 0 , 35 );
356
376
}
357
377
358
378
@@ -369,7 +389,10 @@ struct TestNestedSummaryWriter : gko::log::ProfilerHook::NestedSummaryWriter {
369
389
* baz()
370
390
* bazz()
371
391
* )
372
- * baz()
392
+ * baz(
393
+ * copy()
394
+ * copy()
395
+ * )
373
396
* )
374
397
* )
375
398
*/
@@ -388,12 +411,19 @@ struct TestNestedSummaryWriter : gko::log::ProfilerHook::NestedSummaryWriter {
388
411
ASSERT_EQ (f.children [1 ].children .size (), 2 );
389
412
ASSERT_EQ (f.children [2 ].name , " baz" );
390
413
ASSERT_EQ (f.children [2 ].count , 1 );
391
- ASSERT_EQ (f.children [2 ].children .size (), 0 );
414
+ ASSERT_EQ (f.children [2 ].children .size (), 1 );
392
415
auto & b = f.children [1 ];
393
416
ASSERT_EQ (b.children [0 ].name , " baz" );
394
417
ASSERT_EQ (b.children [0 ].count , 1 );
395
418
ASSERT_EQ (b.children [1 ].name , " bazz" );
396
419
ASSERT_EQ (b.children [1 ].count , 1 );
420
+ auto & bb = f.children [2 ];
421
+ ASSERT_EQ (bb.children [0 ].name , " copy" );
422
+ ASSERT_EQ (bb.children [0 ].count , 2 );
423
+ const auto work_estimate = std::get<gko::memory_bound_work_estimate>(
424
+ bb.children [0 ].work_estimate .value ());
425
+ ASSERT_EQ (work_estimate.bytes_read , 45 );
426
+ ASSERT_EQ (work_estimate.bytes_written , 45 );
397
427
}
398
428
};
399
429
0 commit comments