|
void | on_allocation_started (const Executor *exec, const size_type &num_bytes) const override |
| Executor's allocation started event. More...
|
|
void | on_allocation_completed (const Executor *exec, const size_type &num_bytes, const uintptr &location) const override |
| Executor's allocation completed event. More...
|
|
void | on_free_started (const Executor *exec, const uintptr &location) const override |
| Executor's free started event. More...
|
|
void | on_free_completed (const Executor *exec, const uintptr &location) const override |
| Executor's free completed event. More...
|
|
void | on_copy_started (const Executor *from, const Executor *to, const uintptr &location_from, const uintptr &location_to, const size_type &num_bytes) const override |
| Executor's copy started event. More...
|
|
void | on_copy_completed (const Executor *from, const Executor *to, const uintptr &location_from, const uintptr &location_to, const size_type &num_bytes) 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_create_started (const Executor *, const PolymorphicObject *po) const override |
| PolymorphicObject's create started event. More...
|
|
void | on_polymorphic_object_create_completed (const Executor *exec, const PolymorphicObject *input, const PolymorphicObject *output) const override |
| PolymorphicObject's create completed event. 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_polymorphic_object_deleted (const Executor *exec, const PolymorphicObject *po) const override |
| PolymorphicObject's deleted 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_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_converged) const override |
| stop::Criterion's check completed event. More...
|
|
void | on_iteration_complete (const LinOp *solver, const LinOp *b, const LinOp *x, const size_type &num_iterations, const LinOp *residual, const LinOp *residual_norm, const LinOp *implicit_resnorm_sq, 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...
|
|
const std::string | get_handle_name () const |
| Returns the unique name of this logger, which can be used in the PAPI_read() call. More...
|
|
const papi_handle_t | get_handle () const |
| Returns the corresponding papi_handle_t for this logger. More...
|
|
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 |
|
virtual bool | needs_propagation () const |
| Returns true if this logger, when attached to an Executor, needs to be forwarded all events from objects on this executor.
|
|
|
using | mask_type = gko::uint64 |
|
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...
|
|
template<typename ValueType = default_precision>
class gko::log::Papi< ValueType >
Papi is a Logger which logs every event to the PAPI software.
Thanks to this logger, applications which interface with PAPI can access Ginkgo internal data through PAPI. For an example of usage, see examples/papi_logging/papi_logging.cpp
The logged values for each event are the following:
- all allocation events: number of bytes per executor
- all free events: number of calls per executor
- copy_started: number of bytes per executor from (to), in copy_started_from (respectively copy_started_to).
- copy_completed: number of bytes per executor from (to), in copy_completed_from (respectively copy_completed_to).
- all polymorphic objects and operation events: number of calls per executor
- all apply events: number of calls per LinOp (argument "A").
- all factory events: number of calls per factory
- criterion_check_completed event: the residual norm is stored in a record (per criterion)
- iteration_complete event: the number of iteration is counted (per solver)
- Template Parameters
-
ValueType | the type of values stored in the class (e.g. residuals) |