Ginkgo  Generated from pipelines/1589998975 branch based on develop. Ginkgo version 1.10.0
A numerical linear algebra library targeting many-core architectures
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
gko::log::ProfilerHook Class Reference

This Logger can be used to annotate the execution of Ginkgo functionality with profiler-specific ranges. More...

#include <ginkgo/core/log/profiler_hook.hpp>

Inheritance diagram for gko::log::ProfilerHook:
[legend]
Collaboration diagram for gko::log::ProfilerHook:
[legend]

Classes

struct  nested_summary_entry
 
class  NestedSummaryWriter
 Receives the results from ProfilerHook::create_nested_summary(). More...
 
struct  summary_entry
 
class  SummaryWriter
 Receives the results from ProfilerHook::create_summary(). More...
 
class  TableSummaryWriter
 Writes the results from ProfilerHook::create_summary() and ProfilerHook::create_nested_summary() to a ASCII table in Markdown format. More...
 

Public Types

using hook_function = std::function< void(const char *, profile_event_category)>
 
- Public Types inherited from gko::log::Logger
using mask_type = gko::uint64
 

Public Member Functions

void on_allocation_started (const gko::Executor *exec, const gko::size_type &) const override
 Executor's allocation started event. More...
 
void on_allocation_completed (const gko::Executor *exec, const gko::size_type &, const gko::uintptr &) const override
 Executor's allocation completed event. More...
 
void on_free_started (const gko::Executor *exec, const gko::uintptr &) const override
 Executor's free started event. More...
 
void on_free_completed (const gko::Executor *exec, const gko::uintptr &) const override
 Executor's free completed event. More...
 
void on_copy_started (const gko::Executor *from, const gko::Executor *to, const gko::uintptr &, const gko::uintptr &, const gko::size_type &) const override
 Executor's copy started event. More...
 
void on_copy_completed (const gko::Executor *from, const gko::Executor *to, const gko::uintptr &, const gko::uintptr &, const gko::size_type &) const override
 Executor's copy completed event. More...
 
void on_operation_launched (const Executor *exec, const Operation *operation) const override
 Executor's operation launched event (method run). More...
 
void on_operation_completed (const Executor *exec, const Operation *operation) const override
 Executor's operation completed event (method run). More...
 
void on_polymorphic_object_copy_started (const Executor *exec, const PolymorphicObject *from, const PolymorphicObject *to) const override
 PolymorphicObject's copy started event. More...
 
void on_polymorphic_object_copy_completed (const Executor *exec, const PolymorphicObject *from, const PolymorphicObject *to) const override
 PolymorphicObject's copy completed event. More...
 
void on_polymorphic_object_move_started (const Executor *exec, const PolymorphicObject *from, const PolymorphicObject *to) const override
 PolymorphicObject's move started event. More...
 
void on_polymorphic_object_move_completed (const Executor *exec, const PolymorphicObject *from, const PolymorphicObject *to) const override
 PolymorphicObject's move completed event. More...
 
void on_linop_apply_started (const LinOp *A, const LinOp *b, const LinOp *x) const override
 LinOp's apply started event. More...
 
void on_linop_apply_completed (const LinOp *A, const LinOp *b, const LinOp *x) const override
 LinOp's apply completed event. More...
 
void on_linop_advanced_apply_started (const LinOp *A, const LinOp *alpha, const LinOp *b, const LinOp *beta, const LinOp *x) const override
 LinOp's advanced apply started event. More...
 
void on_linop_advanced_apply_completed (const LinOp *A, const LinOp *alpha, const LinOp *b, const LinOp *beta, const LinOp *x) const override
 LinOp's advanced apply completed event. More...
 
void on_linop_factory_generate_started (const LinOpFactory *factory, const LinOp *input) const override
 LinOp Factory's generate started event. More...
 
void on_linop_factory_generate_completed (const LinOpFactory *factory, const LinOp *input, const LinOp *output) const override
 LinOp Factory's generate completed event. More...
 
void on_criterion_check_started (const stop::Criterion *criterion, const size_type &num_iterations, const LinOp *residual, const LinOp *residual_norm, const LinOp *solution, const uint8 &stopping_id, const bool &set_finalized) const override
 stop::Criterion's check started event. More...
 
void on_criterion_check_completed (const stop::Criterion *criterion, const size_type &num_iterations, const LinOp *residual, const LinOp *residual_norm, const LinOp *solution, const uint8 &stopping_id, const bool &set_finalized, const array< stopping_status > *status, const bool &one_changed, const bool &all_stopped) const override
 stop::Criterion's check completed event. More...
 
void on_criterion_check_completed (const stop::Criterion *criterion, const size_type &num_iterations, const LinOp *residual, const LinOp *residual_norm, const LinOp *implicit_sq_resnorm, const LinOp *solution, const uint8 &stopping_id, const bool &set_finalized, const array< stopping_status > *status, const bool &one_changed, const bool &all_stopped) const override
 stop::Criterion's check completed event. More...
 
void on_iteration_complete (const LinOp *solver, const LinOp *right_hand_side, const LinOp *solution, const size_type &num_iterations, const LinOp *residual, const LinOp *residual_norm, const LinOp *implicit_sq_residual_norm, const array< stopping_status > *status, bool stopped) const override
 Register the iteration_complete event which logs every completed iterations. More...
 
void on_iteration_complete (const LinOp *solver, const size_type &num_iterations, const LinOp *residual, const LinOp *solution, const LinOp *residual_norm) const override
 Register the iteration_complete event which logs every completed iterations. More...
 
void on_iteration_complete (const LinOp *solver, const size_type &num_iterations, const LinOp *residual, const LinOp *solution, const LinOp *residual_norm, const LinOp *implicit_sq_residual_norm) const override
 Register the iteration_complete event which logs every completed iterations. More...
 
bool needs_propagation () const override
 Returns true if this logger, when attached to an Executor, needs to be forwarded all events from objects on this executor.
 
void set_object_name (ptr_param< const PolymorphicObject > obj, std::string name)
 Sets the name for an object to be profiled. More...
 
void set_synchronization (bool synchronize)
 Should the events call executor->synchronize on operations and copy/allocation? This leads to a certain overhead, but makes the execution timeline of kernels synchronous.
 
profiling_scope_guard user_range (const char *name) const
 Creates a scope guard for a user-defined range to be included in the profile. More...
 
- Public Member Functions inherited from gko::log::Logger
template<size_type Event, typename... Params>
std::enable_if_t< Event==0 &&(0< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==1 &&(1< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==2 &&(2< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==3 &&(3< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==4 &&(4< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==5 &&(5< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==6 &&(6< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==7 &&(7< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==8 &&(8< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==9 &&(9< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==10 &&(10< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==11 &&(11< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==12 &&(12< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==13 &&(13< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==14 &&(14< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==15 &&(15< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==16 &&(16< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==17 &&(17< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==18 &&(18< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==19 &&(19< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==20 &&(20< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==21 &&(21< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==22 &&(22< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==23 &&(23< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==24 &&(24< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==25 &&(25< event_count_max)> on (Params &&... params) const
 
template<size_type Event, typename... Params>
std::enable_if_t< Event==26 &&(26< event_count_max)> on (Params &&... params) const
 

Static Public Member Functions

static std::shared_ptr< ProfilerHookcreate_tau (bool initialize=true)
 Creates a logger annotating Ginkgo events with TAU ranges via PerfStubs. More...
 
static std::shared_ptr< ProfilerHookcreate_vtune ()
 Creates a logger annotating Ginkgo events with VTune ITT ranges.
 
static std::shared_ptr< ProfilerHookcreate_nvtx (uint32 color_argb=color_yellow_argb)
 Creates a logger annotating Ginkgo events with NVTX ranges for CUDA. More...
 
static std::shared_ptr< ProfilerHookcreate_roctx ()
 Creates a logger annotating Ginkgo events with ROCTX ranges for HIP.
 
static std::shared_ptr< ProfilerHookcreate_for_executor (std::shared_ptr< const Executor > exec)
 Creates a logger annotating Ginkgo events with the most suitable backend for the given executor: NVTX for NSight Systems in CUDA, ROCTX for rocprof in HIP, TAU for everything else.
 
static std::shared_ptr< ProfilerHookcreate_summary (std::shared_ptr< Timer > timer=std::make_shared< CpuTimer >(), std::unique_ptr< SummaryWriter > writer=std::make_unique< TableSummaryWriter >(), bool debug_check_nesting=false)
 Creates a logger measuring the runtime of Ginkgo events and printing a summary when it is destroyed. More...
 
static std::shared_ptr< ProfilerHookcreate_nested_summary (std::shared_ptr< Timer > timer=std::make_shared< CpuTimer >(), std::unique_ptr< NestedSummaryWriter > writer=std::make_unique< TableSummaryWriter >(), bool debug_check_nesting=false)
 Creates a logger measuring the runtime of Ginkgo events in a nested fashion and printing a summary when it is destroyed. More...
 
static std::shared_ptr< ProfilerHookcreate_custom (hook_function begin, hook_function end)
 Creates a logger annotating Ginkgo events with a custom set of functions for range begin and end.
 

Static Public Attributes

constexpr static uint32 color_yellow_argb = 0xFFFFCB05U
 The Ginkgo yellow background color as packed 32 bit ARGB value.
 
- Static Public Attributes inherited from gko::log::Logger
static constexpr size_type event_count_max = sizeof(mask_type) * byte_size
 Maximum amount of events (bits) with the current implementation.
 
static constexpr mask_type all_events_mask = ~mask_type{0}
 Bitset Mask which activates all events.
 
static constexpr size_type allocation_started { 0 }
 
static constexpr mask_type allocation_started_mask {mask_type{1} << 0 }
 
static constexpr size_type allocation_completed { 1 }
 
static constexpr mask_type allocation_completed_mask {mask_type{1} << 1 }
 
static constexpr size_type free_started { 2 }
 
static constexpr mask_type free_started_mask {mask_type{1} << 2 }
 
static constexpr size_type free_completed { 3 }
 
static constexpr mask_type free_completed_mask {mask_type{1} << 3 }
 
static constexpr size_type copy_started { 4 }
 
static constexpr mask_type copy_started_mask {mask_type{1} << 4 }
 
static constexpr size_type copy_completed { 5 }
 
static constexpr mask_type copy_completed_mask {mask_type{1} << 5 }
 
static constexpr size_type operation_launched { 6 }
 
static constexpr mask_type operation_launched_mask {mask_type{1} << 6 }
 
static constexpr size_type operation_completed { 7 }
 
static constexpr mask_type operation_completed_mask {mask_type{1} << 7 }
 
static constexpr size_type polymorphic_object_create_started { 8 }
 
static constexpr mask_type polymorphic_object_create_started_mask {mask_type{1} << 8 }
 
static constexpr size_type polymorphic_object_create_completed { 9 }
 
static constexpr mask_type polymorphic_object_create_completed_mask {mask_type{1} << 9 }
 
static constexpr size_type polymorphic_object_copy_started { 10 }
 
static constexpr mask_type polymorphic_object_copy_started_mask {mask_type{1} << 10 }
 
static constexpr size_type polymorphic_object_copy_completed { 11 }
 
static constexpr mask_type polymorphic_object_copy_completed_mask {mask_type{1} << 11 }
 
static constexpr size_type polymorphic_object_deleted { 12 }
 
static constexpr mask_type polymorphic_object_deleted_mask {mask_type{1} << 12 }
 
static constexpr size_type linop_apply_started { 13 }
 
static constexpr mask_type linop_apply_started_mask {mask_type{1} << 13 }
 
static constexpr size_type linop_apply_completed { 14 }
 
static constexpr mask_type linop_apply_completed_mask {mask_type{1} << 14 }
 
static constexpr size_type linop_advanced_apply_started { 15 }
 
static constexpr mask_type linop_advanced_apply_started_mask {mask_type{1} << 15 }
 
static constexpr size_type linop_advanced_apply_completed { 16 }
 
static constexpr mask_type linop_advanced_apply_completed_mask {mask_type{1} << 16 }
 
static constexpr size_type linop_factory_generate_started { 17 }
 
static constexpr mask_type linop_factory_generate_started_mask {mask_type{1} << 17 }
 
static constexpr size_type linop_factory_generate_completed { 18 }
 
static constexpr mask_type linop_factory_generate_completed_mask {mask_type{1} << 18 }
 
static constexpr size_type criterion_check_started { 19 }
 
static constexpr mask_type criterion_check_started_mask {mask_type{1} << 19 }
 
static constexpr size_type criterion_check_completed { 20 }
 
static constexpr mask_type criterion_check_completed_mask {mask_type{1} << 20 }
 
static constexpr size_type iteration_complete {21}
 
static constexpr mask_type iteration_complete_mask {mask_type{1} << 21}
 
static constexpr size_type polymorphic_object_move_started { 22 }
 
static constexpr mask_type polymorphic_object_move_started_mask {mask_type{1} << 22 }
 
static constexpr size_type polymorphic_object_move_completed { 23 }
 
static constexpr mask_type polymorphic_object_move_completed_mask {mask_type{1} << 23 }
 
static constexpr size_type batch_linop_factory_generate_started { 24 }
 
static constexpr mask_type batch_linop_factory_generate_started_mask {mask_type{1} << 24 }
 
static constexpr size_type batch_linop_factory_generate_completed { 25 }
 
static constexpr mask_type batch_linop_factory_generate_completed_mask {mask_type{1} << 25 }
 
static constexpr size_type batch_solver_completed {26}
 
static constexpr mask_type batch_solver_completed_mask {mask_type{1} << 26}
 
static constexpr mask_type executor_events_mask
 Bitset Mask which activates all executor events. More...
 
static constexpr mask_type operation_events_mask
 Bitset Mask which activates all operation events. More...
 
static constexpr mask_type polymorphic_object_events_mask
 Bitset Mask which activates all polymorphic object events. More...
 
static constexpr mask_type linop_events_mask
 Bitset Mask which activates all linop events. More...
 
static constexpr mask_type linop_factory_events_mask
 Bitset Mask which activates all linop factory events. More...
 
static constexpr mask_type batch_linop_factory_events_mask
 Bitset Mask which activates all batch linop factory events. More...
 
static constexpr mask_type criterion_events_mask
 Bitset Mask which activates all criterion events. More...
 

Detailed Description

This Logger can be used to annotate the execution of Ginkgo functionality with profiler-specific ranges.

It currently supports TAU, VTune, NSightSystems (NVTX) and rocPROF(ROCTX) and custom profiler hooks.

The Logger should be attached to the Executor that is being used to run the application for a full, program-wide annotation, or to individual objects to only highlight events caused directly by them (not operations and memory allocations though)

Member Function Documentation

◆ create_nested_summary()

static std::shared_ptr<ProfilerHook> gko::log::ProfilerHook::create_nested_summary ( std::shared_ptr< Timer timer = std::make_shared< CpuTimer >(),
std::unique_ptr< NestedSummaryWriter writer = std::make_unique< TableSummaryWriter >(),
bool  debug_check_nesting = false 
)
static

Creates a logger measuring the runtime of Ginkgo events in a nested fashion and printing a summary when it is destroyed.

Parameters
timerThe timer used to record time points.
writerThe NestedSummaryWriter to receive the performance results.
debug_check_nestingEnable this flag if the output looks like it might contain incorrect nesting. This increases the overhead slightly, but recognizes mismatching push/pop pairs on the range stack.
Note
For this logger to provide reliable GPU timings, either use Timer::create_for_executor or enable synchronization via set_synchronization(true).

◆ create_nvtx()

static std::shared_ptr<ProfilerHook> gko::log::ProfilerHook::create_nvtx ( uint32  color_argb = color_yellow_argb)
static

Creates a logger annotating Ginkgo events with NVTX ranges for CUDA.

Parameters
color_argbThe color of the NVTX ranges in the NSight Systems output. It has to be a 32 bit packed ARGB value.

◆ create_summary()

static std::shared_ptr<ProfilerHook> gko::log::ProfilerHook::create_summary ( std::shared_ptr< Timer timer = std::make_shared< CpuTimer >(),
std::unique_ptr< SummaryWriter writer = std::make_unique< TableSummaryWriter >(),
bool  debug_check_nesting = false 
)
static

Creates a logger measuring the runtime of Ginkgo events and printing a summary when it is destroyed.

Parameters
timerThe timer used to record time points.
writerThe SummaryWriter to receive the performance results.
debug_check_nestingEnable this flag if the output looks like it might contain incorrect nesting. This increases the overhead slightly, but recognizes mismatching push/pop pairs on the range stack.
Note
For this logger to provide reliable GPU timings, either use Timer::create_for_executor or enable synchronization via set_synchronization(true).

◆ create_tau()

static std::shared_ptr<ProfilerHook> gko::log::ProfilerHook::create_tau ( bool  initialize = true)
static

Creates a logger annotating Ginkgo events with TAU ranges via PerfStubs.

Parameters
initializeShould we call TAU's initialization and finalization functions, or does the application take care of it? The initialization will happen immediately, the finalization at program exit.

◆ on_allocation_completed()

void gko::log::ProfilerHook::on_allocation_completed ( const gko::Executor exec,
const gko::size_type num_bytes,
const gko::uintptr location 
) const
overridevirtual

Executor's allocation completed event.

Parameters
execthe executor used
num_bytesthe number of bytes allocated
locationthe address at which the data was allocated

Reimplemented from gko::log::Logger.

◆ on_allocation_started()

void gko::log::ProfilerHook::on_allocation_started ( const gko::Executor exec,
const gko::size_type num_bytes 
) const
overridevirtual

Executor's allocation started event.

Parameters
execthe executor used
num_bytesthe number of bytes to allocate

Reimplemented from gko::log::Logger.

◆ on_copy_completed()

void gko::log::ProfilerHook::on_copy_completed ( const gko::Executor exec_from,
const gko::Executor exec_to,
const gko::uintptr loc_from,
const gko::uintptr loc_to,
const gko::size_type num_bytes 
) const
overridevirtual

Executor's copy completed event.

Parameters
exec_fromthe executor copied from
exec_tothe executor copied to
loc_fromthe address at which the data was copied from
loc_tothe address at which the data was copied to
num_bytesthe number of bytes copied

Reimplemented from gko::log::Logger.

◆ on_copy_started()

void gko::log::ProfilerHook::on_copy_started ( const gko::Executor exec_from,
const gko::Executor exec_to,
const gko::uintptr loc_from,
const gko::uintptr loc_to,
const gko::size_type num_bytes 
) const
overridevirtual

Executor's copy started event.

Parameters
exec_fromthe executor to be copied from
exec_tothe executor to be copied to
loc_fromthe address at which the data will be copied from
loc_tothe address at which the data will be copied to
num_bytesthe number of bytes to be copied

Reimplemented from gko::log::Logger.

◆ on_criterion_check_completed() [1/2]

void gko::log::ProfilerHook::on_criterion_check_completed ( const stop::Criterion criterion,
const size_type it,
const LinOp r,
const LinOp tau,
const LinOp implicit_tau_sq,
const LinOp x,
const uint8 stopping_id,
const bool &  set_finalized,
const array< stopping_status > *  status,
const bool &  one_changed,
const bool &  all_converged 
) const
overridevirtual

stop::Criterion's check completed event.

Parameters are the Criterion, the stoppingId, the finalized boolean, the stopping status, plus the output one_changed boolean and output all_converged boolean.

Parameters
criterionthe criterion used
itthe current iteration count
rthe residual
tauthe residual norm
implicit_tau_sqthe implicit residual norm squared
xthe solution
stopping_idthe id of the stopping criterion
set_finalizedwhether this finalizes the iteration
statusthe stopping status of the right hand sides
one_changedwhether at least one right hand side converged or not
all_convergedwhether all right hand sides are converged

Reimplemented from gko::log::Logger.

◆ on_criterion_check_completed() [2/2]

void gko::log::ProfilerHook::on_criterion_check_completed ( const stop::Criterion criterion,
const size_type it,
const LinOp r,
const LinOp tau,
const LinOp x,
const uint8 stopping_id,
const bool &  set_finalized,
const array< stopping_status > *  status,
const bool &  one_changed,
const bool &  all_converged 
) const
overridevirtual

stop::Criterion's check completed event.

Parameters are the Criterion, the stoppingId, the finalized boolean, the stopping status, plus the output one_changed boolean and output all_converged boolean.

Parameters
criterionthe criterion used
itthe current iteration count
rthe residual
tauthe residual norm
xthe solution
stopping_idthe id of the stopping criterion
set_finalizedwhether this finalizes the iteration
statusthe stopping status of the right hand sides
one_changedwhether at least one right hand side converged or not
all_convergedwhether all right hand sides
Note
The on_criterion_check_completed function that this macro declares is deprecated. Please use the one with the additional implicit_tau_sq parameter as below.

Reimplemented from gko::log::Logger.

◆ on_criterion_check_started()

void gko::log::ProfilerHook::on_criterion_check_started ( const stop::Criterion criterion,
const size_type it,
const LinOp r,
const LinOp tau,
const LinOp x,
const uint8 stopping_id,
const bool &  set_finalized 
) const
overridevirtual

stop::Criterion's check started event.

Parameters
criterionthe criterion used
itthe current iteration count
rthe residual
tauthe residual norm
xthe solution
stopping_idthe id of the stopping criterion
set_finalizedwhether this finalizes the iteration

Reimplemented from gko::log::Logger.

◆ on_free_completed()

void gko::log::ProfilerHook::on_free_completed ( const gko::Executor exec,
const gko::uintptr location 
) const
overridevirtual

Executor's free completed event.

Parameters
execthe executor used
locationthe address at which the data was freed

Reimplemented from gko::log::Logger.

◆ on_free_started()

void gko::log::ProfilerHook::on_free_started ( const gko::Executor exec,
const gko::uintptr location 
) const
overridevirtual

Executor's free started event.

Parameters
execthe executor used
locationthe address at which the data will be freed

Reimplemented from gko::log::Logger.

◆ on_iteration_complete() [1/3]

void gko::log::ProfilerHook::on_iteration_complete ( const LinOp solver,
const LinOp b,
const LinOp x,
const size_type it,
const LinOp r,
const LinOp tau,
const LinOp implicit_tau_sq,
const array< stopping_status > *  status,
bool  stopped 
) const
overridevirtual

Register the iteration_complete event which logs every completed iterations.

Parameters
solverthe solver executing the iteration
bthe right-hand-side vector
xthe solution vector
itthe current iteration count
rthe residual (optional)
tauthe implicit residual norm squared (optional)
implicit_tau_sqthe residual norm (optional)
statusthe stopping status of the right hand sides (optional)
stoppedwhether all right hand sides have stopped (invalid if status is not provided)

Reimplemented from gko::log::Logger.

◆ on_iteration_complete() [2/3]

void gko::log::ProfilerHook::on_iteration_complete ( const LinOp solver,
const size_type it,
const LinOp r,
const LinOp x,
const LinOp tau 
) const
overridevirtual

Register the iteration_complete event which logs every completed iterations.

Parameters
itthe current iteration count
rthe residual
xthe solution vector (optional)
tauthe residual norm (optional)
Warning
This on_iteration_complete function that this macro declares is deprecated. Please use the version with the stopping information.

Reimplemented from gko::log::Logger.

◆ on_iteration_complete() [3/3]

void gko::log::ProfilerHook::on_iteration_complete ( const LinOp solver,
const size_type it,
const LinOp r,
const LinOp x,
const LinOp tau,
const LinOp implicit_tau_sq 
) const
overridevirtual

Register the iteration_complete event which logs every completed iterations.

Parameters
itthe current iteration count
rthe residual
xthe solution vector (optional)
tauthe residual norm (optional)
implicit_tau_sqthe implicit residual norm squared (optional)
Warning
This on_iteration_complete function that this macro declares is deprecated. Please use the version with the stopping information.

Reimplemented from gko::log::Logger.

◆ on_linop_advanced_apply_completed()

void gko::log::ProfilerHook::on_linop_advanced_apply_completed ( const LinOp A,
const LinOp alpha,
const LinOp b,
const LinOp beta,
const LinOp x 
) const
overridevirtual

LinOp's advanced apply completed event.

Parameters
Athe system matrix
alphascaling of the result of op(b)
bthe input vector(s)
betascaling of the input x
xthe output vector(s)

Reimplemented from gko::log::Logger.

◆ on_linop_advanced_apply_started()

void gko::log::ProfilerHook::on_linop_advanced_apply_started ( const LinOp A,
const LinOp alpha,
const LinOp b,
const LinOp beta,
const LinOp x 
) const
overridevirtual

LinOp's advanced apply started event.

Parameters
Athe system matrix
alphascaling of the result of op(b)
bthe input vector(s)
betascaling of the input x
xthe output vector(s)

Reimplemented from gko::log::Logger.

◆ on_linop_apply_completed()

void gko::log::ProfilerHook::on_linop_apply_completed ( const LinOp A,
const LinOp b,
const LinOp x 
) const
overridevirtual

LinOp's apply completed event.

Parameters
Athe system matrix
bthe input vector(s)
xthe output vector(s)

Reimplemented from gko::log::Logger.

◆ on_linop_apply_started()

void gko::log::ProfilerHook::on_linop_apply_started ( const LinOp A,
const LinOp b,
const LinOp x 
) const
overridevirtual

LinOp's apply started event.

Parameters
Athe system matrix
bthe input vector(s)
xthe output vector(s)

Reimplemented from gko::log::Logger.

◆ on_linop_factory_generate_completed()

void gko::log::ProfilerHook::on_linop_factory_generate_completed ( const LinOpFactory factory,
const LinOp input,
const LinOp output 
) const
overridevirtual

LinOp Factory's generate completed event.

Parameters
factorythe factory used
inputthe LinOp object used as input for the generation (usually a system matrix)
outputthe generated LinOp object

Reimplemented from gko::log::Logger.

◆ on_linop_factory_generate_started()

void gko::log::ProfilerHook::on_linop_factory_generate_started ( const LinOpFactory factory,
const LinOp input 
) const
overridevirtual

LinOp Factory's generate started event.

Parameters
factorythe factory used
inputthe LinOp object used as input for the generation (usually a system matrix)

Reimplemented from gko::log::Logger.

◆ on_operation_completed()

void gko::log::ProfilerHook::on_operation_completed ( const Executor exec,
const Operation op 
) const
overridevirtual

Executor's operation completed event (method run).

Parameters
execthe executor used
opthe completed operation
Note
For the GPU, to be certain that the operation completed it is required to call synchronize. This burden falls on the logger. Most of the loggers will do lightweight logging, and therefore this operation for the GPU just notes that the Operation has been sent to the GPU.

Reimplemented from gko::log::Logger.

◆ on_operation_launched()

void gko::log::ProfilerHook::on_operation_launched ( const Executor exec,
const Operation op 
) const
overridevirtual

Executor's operation launched event (method run).

Parameters
execthe executor used
opthe operation launched

Reimplemented from gko::log::Logger.

◆ on_polymorphic_object_copy_completed()

void gko::log::ProfilerHook::on_polymorphic_object_copy_completed ( const Executor exec,
const PolymorphicObject input,
const PolymorphicObject output 
) const
overridevirtual

PolymorphicObject's copy completed event.

Parameters
execthe executor used
inputthe PolymorphicObject to be copied from
outputthe PolymorphicObject to be copied to

Reimplemented from gko::log::Logger.

◆ on_polymorphic_object_copy_started()

void gko::log::ProfilerHook::on_polymorphic_object_copy_started ( const Executor exec,
const PolymorphicObject input,
const PolymorphicObject output 
) const
overridevirtual

PolymorphicObject's copy started event.

Parameters
execthe executor used
inputthe PolymorphicObject to be copied from
outputthe PolymorphicObject to be copied to

Reimplemented from gko::log::Logger.

◆ on_polymorphic_object_move_completed()

void gko::log::ProfilerHook::on_polymorphic_object_move_completed ( const Executor exec,
const PolymorphicObject input,
const PolymorphicObject output 
) const
overridevirtual

PolymorphicObject's move completed event.

Parameters
execthe executor used
inputthe PolymorphicObject to be move from
outputthe PolymorphicObject to be move into

Reimplemented from gko::log::Logger.

◆ on_polymorphic_object_move_started()

void gko::log::ProfilerHook::on_polymorphic_object_move_started ( const Executor exec,
const PolymorphicObject input,
const PolymorphicObject output 
) const
overridevirtual

PolymorphicObject's move started event.

Parameters
execthe executor used
inputthe PolymorphicObject to be move from
outputthe PolymorphicObject to be move into

Reimplemented from gko::log::Logger.

◆ set_object_name()

void gko::log::ProfilerHook::set_object_name ( ptr_param< const PolymorphicObject obj,
std::string  name 
)

Sets the name for an object to be profiled.

Every instance of that object in the profile will be replaced by the name instead of its runtime type.

Parameters
objthe object
nameits name

◆ user_range()

profiling_scope_guard gko::log::ProfilerHook::user_range ( const char *  name) const

Creates a scope guard for a user-defined range to be included in the profile.

Parameters
namethe name of the range
Returns
the scope guard. It will begin a range immediately and end it at the end of its scope.

The documentation for this class was generated from the following file: