Ginkgo: gko::log::PerformanceHint Class Reference

| Ginkgo Generated from branch based on main. Ginkgo version 1.11.0 A numerical linear algebra library targeting many-core architectures

Loading...
Searching...
No Matches
gko::log::PerformanceHint Class Reference
Logging

PerformanceHint is a Logger which analyzes the performance of the application and outputs hints for unnecessary copies and allocations. More...

`#include <ginkgo/core/log/performance_hint.hpp>`

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

## Public Member Functions
void | on_allocation_completed (const Executor *exec, const size_type &num_bytes, const uintptr &location) const override
| Executor's allocation completed event.
void | on_free_completed (const Executor *exec, const uintptr &location) const override
| Executor's free completed event.
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.
void | print_status () const
| Writes out the cross-executor writes and allocations that have been stored so far.
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
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.

## Static Public Member Functions
static std::unique_ptr< PerformanceHint > | create (std::ostream &os=std::cerr, size_type allocation_size_limit=16, size_type copy_size_limit=16, size_type histogram_max_size=1024)
| Creates a PerformanceHint logger.

## Additional Inherited Members
Public Types inherited from gko::log::Logger
using | mask_type = gko::uint64
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.
static constexpr mask_type | operation_events_mask
| Bitset Mask which activates all operation events.
static constexpr mask_type | polymorphic_object_events_mask
| Bitset Mask which activates all polymorphic object events.
static constexpr mask_type | linop_events_mask
| Bitset Mask which activates all linop events.
static constexpr mask_type | linop_factory_events_mask
| Bitset Mask which activates all linop factory events.
static constexpr mask_type | batch_linop_factory_events_mask
| Bitset Mask which activates all batch linop factory events.
static constexpr mask_type | criterion_events_mask
| Bitset Mask which activates all criterion events.

## Detailed Description

PerformanceHint is a Logger which analyzes the performance of the application and outputs hints for unnecessary copies and allocations.

The specific patterns it checks for are:

- repeated cross-executor copies from or to the same pointer
- repeated allocation/free pairs of the same size

## Member Function Documentation

## ◆ create()

std::unique_ptr< PerformanceHint > gko::log::PerformanceHint::create | ( | std::ostream & | os = std::cerr,
|  | size_type | allocation_size_limit = 16,
|  | size_type | copy_size_limit = 16,
|  | size_type | histogram_max_size = 1024 )
| inlinestatic

Creates a PerformanceHint logger.

This dynamically allocates the memory, constructs the object and returns an std::unique_ptr to this object.

Parameters

  os | the stream used for this logger
  allocation_size_limit | ignore allocations below this limit (bytes)
  copy_size_limit | ignore copies below this limit (bytes)
  histogram_max_size | how many allocation sizes and/or pointers to keep track of at most?

Returns
  an std::unique_ptr to the the constructed object

## ◆ on_allocation_completed()

void gko::log::PerformanceHint::on_allocation_completed | ( | const Executor * | exec,
|  | const size_type & | num_bytes,
|  | const uintptr & | location ) const
| overridevirtual

Executor's allocation completed event.

Parameters

  exec | the executor used
  num_bytes | the number of bytes allocated
  location | the address at which the data was allocated

Reimplemented from gko::log::Logger.

## ◆ on_copy_completed()

void gko::log::PerformanceHint::on_copy_completed | ( | const Executor * | exec_from,
|  | const Executor * | exec_to,
|  | const uintptr & | loc_from,
|  | const uintptr & | loc_to,
|  | const size_type & | num_bytes ) const
| overridevirtual

Executor's copy completed event.

Parameters

  exec_from | the executor copied from
  exec_to | the executor copied to
  loc_from | the address at which the data was copied from
  loc_to | the address at which the data was copied to
  num_bytes | the number of bytes copied

Reimplemented from gko::log::Logger.

## ◆ on_free_completed()

void gko::log::PerformanceHint::on_free_completed | ( | const Executor * | exec,
|  | const uintptr & | location ) const
| overridevirtual

Executor's free completed event.

Parameters

  exec | the executor used
  location | the address at which the data was freed

Reimplemented from gko::log::Logger.

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

- ginkgo/core/log/performance_hint.hpp