112#define GKO_LOGGER_REGISTER_EVENT(_id, _event_name, ...) \
114 virtual void on_##_event_name(__VA_ARGS__) const {} \
117 template <size_type Event, typename... Params> \
118 std::enable_if_t<Event == _id && (_id < event_count_max)> on( \
119 Params&&... params) const \
121 if (enabled_events_ & (mask_type{1} << _id)) { \
122 this->on_##_event_name(std::forward<Params>(params)...); \
125 static constexpr size_type _event_name{_id}; \
126 static constexpr mask_type _event_name##_mask{mask_type{1} << _id};
134 GKO_LOGGER_REGISTER_EVENT(0, allocation_started,
const Executor* exec,
144 GKO_LOGGER_REGISTER_EVENT(1, allocation_completed,
const Executor* exec,
154 GKO_LOGGER_REGISTER_EVENT(2, free_started,
const Executor* exec,
163 GKO_LOGGER_REGISTER_EVENT(3, free_completed,
const Executor* exec,
198 GKO_LOGGER_REGISTER_EVENT(6, operation_launched,
const Executor* exec,
212 GKO_LOGGER_REGISTER_EVENT(7, operation_completed,
const Executor* exec,
221 GKO_LOGGER_REGISTER_EVENT(8, polymorphic_object_create_started,
231 GKO_LOGGER_REGISTER_EVENT(9, polymorphic_object_create_completed,
243 GKO_LOGGER_REGISTER_EVENT(10, polymorphic_object_copy_started,
255 GKO_LOGGER_REGISTER_EVENT(11, polymorphic_object_copy_completed,
266 GKO_LOGGER_REGISTER_EVENT(12, polymorphic_object_deleted,
276 GKO_LOGGER_REGISTER_EVENT(13, linop_apply_started,
const LinOp* A,
286 GKO_LOGGER_REGISTER_EVENT(14, linop_apply_completed,
const LinOp* A,
298 GKO_LOGGER_REGISTER_EVENT(15, linop_advanced_apply_started,
const LinOp* A,
311 GKO_LOGGER_REGISTER_EVENT(16, linop_advanced_apply_completed,
322 GKO_LOGGER_REGISTER_EVENT(17, linop_factory_generate_started,
333 GKO_LOGGER_REGISTER_EVENT(18, linop_factory_generate_completed,
348 GKO_LOGGER_REGISTER_EVENT(19, criterion_check_started,
352 const uint8& stopping_id,
353 const bool& set_finalized)
375 GKO_LOGGER_REGISTER_EVENT(
378 const uint8& stopping_id,
const bool& set_finalized,
399 virtual void on_criterion_check_completed(
402 const uint8& stopping_id,
const bool& set_finalized,
407 stopping_id, set_finalized, status,
412 static constexpr size_type iteration_complete{21};
413 static constexpr mask_type iteration_complete_mask{mask_type{1} << 21};
419 if (enabled_events_ & (mask_type{1} << 21)) {
420 this->on_iteration_complete(std::forward<Params>(
params)...);
438 "Please use the version with the additional stopping "
459 "Please use the version with the additional stopping "
466 GKO_BEGIN_DISABLE_DEPRECATION_WARNINGS
467 this->on_iteration_complete(
solver,
it, r, x,
tau);
468 GKO_END_DISABLE_DEPRECATION_WARNINGS
486 virtual void on_iteration_complete(
const LinOp*
solver,
const LinOp* b,
488 const LinOp* r,
const LinOp*
tau,
493 GKO_BEGIN_DISABLE_DEPRECATION_WARNINGS
495 GKO_END_DISABLE_DEPRECATION_WARNINGS
506 GKO_LOGGER_REGISTER_EVENT(22, polymorphic_object_move_started,
507 const Executor* exec,
508 const PolymorphicObject* input,
509 const PolymorphicObject* output)
518 GKO_LOGGER_REGISTER_EVENT(23, polymorphic_object_move_completed,
519 const Executor* exec,
520 const PolymorphicObject* input,
521 const PolymorphicObject* output)
530 GKO_LOGGER_REGISTER_EVENT(24, batch_linop_factory_generate_started,
531 const batch::BatchLinOpFactory*
factory,
532 const batch::BatchLinOp* input)
542 GKO_LOGGER_REGISTER_EVENT(25, batch_linop_factory_generate_completed,
543 const batch::BatchLinOpFactory*
factory,
544 const batch::BatchLinOp* input,
545 const batch::BatchLinOp* output)
548 static constexpr size_type batch_solver_completed{26};
549 static constexpr mask_type batch_solver_completed_mask{mask_type{1} << 26};
555 if (enabled_events_ & batch_solver_completed_mask) {
556 this->on_batch_solver_completed(std::forward<Params>(
params)...);
568 virtual void on_batch_solver_completed(
579 virtual void on_batch_solver_completed(
584#undef GKO_LOGGER_REGISTER_EVENT
590 allocation_started_mask | allocation_completed_mask |
591 free_started_mask | free_completed_mask | copy_started_mask |
598 operation_launched_mask | operation_completed_mask;
604 polymorphic_object_create_started_mask |
605 polymorphic_object_create_completed_mask |
606 polymorphic_object_copy_started_mask |
607 polymorphic_object_copy_completed_mask |
608 polymorphic_object_move_started_mask |
609 polymorphic_object_move_completed_mask |
610 polymorphic_object_deleted_mask;
616 linop_apply_started_mask | linop_apply_completed_mask |
617 linop_advanced_apply_started_mask | linop_advanced_apply_completed_mask;
623 linop_factory_generate_started_mask |
624 linop_factory_generate_completed_mask;
630 batch_linop_factory_generate_started_mask |
631 batch_linop_factory_generate_completed_mask;
637 criterion_check_started_mask | criterion_check_completed_mask;
662 GKO_DEPRECATED(
"use single-parameter constructor")
687 mask_type enabled_events_;