140#define GKO_LOGGER_REGISTER_EVENT(_id, _event_name, ...) \
142 virtual void on_##_event_name(__VA_ARGS__) const {} \
145 template <size_type Event, typename... Params> \
146 std::enable_if_t<Event == _id && (_id < event_count_max)> on( \
147 Params&&... params) const \
149 if (enabled_events_ & (mask_type{1} << _id)) { \
150 this->on_##_event_name(std::forward<Params>(params)...); \
153 static constexpr size_type _event_name{_id}; \
154 static constexpr mask_type _event_name##_mask{mask_type{1} << _id};
162 GKO_LOGGER_REGISTER_EVENT(0, allocation_started,
const Executor* exec,
172 GKO_LOGGER_REGISTER_EVENT(1, allocation_completed,
const Executor* exec,
182 GKO_LOGGER_REGISTER_EVENT(2, free_started,
const Executor* exec,
191 GKO_LOGGER_REGISTER_EVENT(3, free_completed,
const Executor* exec,
226 GKO_LOGGER_REGISTER_EVENT(6, operation_launched,
const Executor* exec,
240 GKO_LOGGER_REGISTER_EVENT(7, operation_completed,
const Executor* exec,
249 GKO_LOGGER_REGISTER_EVENT(8, polymorphic_object_create_started,
259 GKO_LOGGER_REGISTER_EVENT(9, polymorphic_object_create_completed,
271 GKO_LOGGER_REGISTER_EVENT(10, polymorphic_object_copy_started,
283 GKO_LOGGER_REGISTER_EVENT(11, polymorphic_object_copy_completed,
294 GKO_LOGGER_REGISTER_EVENT(12, polymorphic_object_deleted,
304 GKO_LOGGER_REGISTER_EVENT(13, linop_apply_started,
const LinOp* A,
314 GKO_LOGGER_REGISTER_EVENT(14, linop_apply_completed,
const LinOp* A,
326 GKO_LOGGER_REGISTER_EVENT(15, linop_advanced_apply_started,
const LinOp* A,
339 GKO_LOGGER_REGISTER_EVENT(16, linop_advanced_apply_completed,
350 GKO_LOGGER_REGISTER_EVENT(17, linop_factory_generate_started,
361 GKO_LOGGER_REGISTER_EVENT(18, linop_factory_generate_completed,
376 GKO_LOGGER_REGISTER_EVENT(19, criterion_check_started,
380 const uint8& stopping_id,
381 const bool& set_finalized)
403 GKO_LOGGER_REGISTER_EVENT(
406 const uint8& stopping_id,
const bool& set_finalized,
427 virtual void on_criterion_check_completed(
430 const uint8& stopping_id,
const bool& set_finalized,
435 stopping_id, set_finalized, status,
440 static constexpr size_type iteration_complete{21};
441 static constexpr mask_type iteration_complete_mask{mask_type{1} << 21};
447 if (enabled_events_ & (mask_type{1} << 21)) {
448 this->on_iteration_complete(std::forward<Params>(
params)...);
466 "Please use the version with the additional stopping "
487 "Please use the version with the additional stopping "
494 GKO_BEGIN_DISABLE_DEPRECATION_WARNINGS
495 this->on_iteration_complete(
solver,
it, r, x,
tau);
496 GKO_END_DISABLE_DEPRECATION_WARNINGS
514 virtual void on_iteration_complete(
const LinOp*
solver,
const LinOp* b,
516 const LinOp* r,
const LinOp*
tau,
521 GKO_BEGIN_DISABLE_DEPRECATION_WARNINGS
523 GKO_END_DISABLE_DEPRECATION_WARNINGS
534 GKO_LOGGER_REGISTER_EVENT(22, polymorphic_object_move_started,
535 const Executor* exec,
536 const PolymorphicObject* input,
537 const PolymorphicObject* output)
546 GKO_LOGGER_REGISTER_EVENT(23, polymorphic_object_move_completed,
547 const Executor* exec,
548 const PolymorphicObject* input,
549 const PolymorphicObject* output)
558 GKO_LOGGER_REGISTER_EVENT(24, batch_linop_factory_generate_started,
559 const batch::BatchLinOpFactory*
factory,
560 const batch::BatchLinOp* input)
570 GKO_LOGGER_REGISTER_EVENT(25, batch_linop_factory_generate_completed,
571 const batch::BatchLinOpFactory*
factory,
572 const batch::BatchLinOp* input,
573 const batch::BatchLinOp* output)
576 static constexpr size_type batch_solver_completed{26};
577 static constexpr mask_type batch_solver_completed_mask{mask_type{1} << 26};
583 if (enabled_events_ & batch_solver_completed_mask) {
584 this->on_batch_solver_completed(std::forward<Params>(
params)...);
596 virtual void on_batch_solver_completed(
607 virtual void on_batch_solver_completed(
612#undef GKO_LOGGER_REGISTER_EVENT
618 allocation_started_mask | allocation_completed_mask |
619 free_started_mask | free_completed_mask | copy_started_mask |
626 operation_launched_mask | operation_completed_mask;
632 polymorphic_object_create_started_mask |
633 polymorphic_object_create_completed_mask |
634 polymorphic_object_copy_started_mask |
635 polymorphic_object_copy_completed_mask |
636 polymorphic_object_move_started_mask |
637 polymorphic_object_move_completed_mask |
638 polymorphic_object_deleted_mask;
644 linop_apply_started_mask | linop_apply_completed_mask |
645 linop_advanced_apply_started_mask | linop_advanced_apply_completed_mask;
651 linop_factory_generate_started_mask |
652 linop_factory_generate_completed_mask;
658 batch_linop_factory_generate_started_mask |
659 batch_linop_factory_generate_completed_mask;
665 criterion_check_started_mask | criterion_check_completed_mask;
690 GKO_DEPRECATED(
"use single-parameter constructor")
715 mask_type enabled_events_;