![]() |
Ginkgo
Generated from pipelines/1727914675 branch based on develop. Ginkgo version 1.10.0
A numerical linear algebra library targeting many-core architectures
|
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>
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. More... | |
void | on_free_completed (const Executor *exec, const uintptr &location) const override |
Executor's free completed 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 | print_status () const |
Writes out the cross-executor writes and allocations that have been stored so far. | |
![]() | |
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. More... | |
Additional Inherited Members | |
![]() | |
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... | |
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:
|
inlinestatic |
Creates a PerformanceHint logger.
This dynamically allocates the memory, constructs the object and returns an std::unique_ptr to this object.
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? |
|
overridevirtual |
Executor's allocation completed event.
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.
|
overridevirtual |
Executor's copy completed event.
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.
|
overridevirtual |
Executor's free completed event.
exec | the executor used |
location | the address at which the data was freed |
Reimplemented from gko::log::Logger.