timemory  3.2.1
Modular C++ Toolkit for Performance Analysis and Logging. Profiling API and Tools for C, C++, CUDA, Fortran, and Python. The C++ template API is essentially a framework to creating tools: it is designed to provide a unifying interface for recording various performance measurements alongside data logging and interfaces to other tools.
tim::component::ncclp_handle< Toolset, Tag > Struct Template Reference

#include "timemory/components/gotcha/ncclp.hpp"

+ Collaboration diagram for tim::component::ncclp_handle< Toolset, Tag >:

Public Types

using value_type = void
 
using this_type = ncclp_handle< Toolset, Tag >
 
using base_type = base< this_type, value_type >
 
using string_t = std::string
 
using nccl_toolset_t = Toolset
 
using ncclp_gotcha_t = tim::component::gotcha< ncclp_wrapper_count, nccl_toolset_t, Tag >
 
using ncclp_tuple_t = tim::component_tuple< ncclp_gotcha_t >
 
using toolset_ptr_t = std::shared_ptr< ncclp_tuple_t >
 

Public Member Functions

void get ()
 
void start ()
 
void stop ()
 
int get_count ()
 

Static Public Member Functions

static string_t label ()
 
static string_t description ()
 

Static Public Attributes

static constexpr size_t ncclp_wrapper_count = 15
 

Detailed Description

template<typename Toolset, typename Tag>
struct tim::component::ncclp_handle< Toolset, Tag >

Definition at line 76 of file ncclp.hpp.

Member Typedef Documentation

◆ base_type

template<typename Toolset , typename Tag >
using tim::component::ncclp_handle< Toolset, Tag >::base_type = base<this_type, value_type>

Definition at line 82 of file ncclp.hpp.

◆ nccl_toolset_t

template<typename Toolset , typename Tag >
using tim::component::ncclp_handle< Toolset, Tag >::nccl_toolset_t = Toolset

Definition at line 85 of file ncclp.hpp.

◆ ncclp_gotcha_t

template<typename Toolset , typename Tag >
using tim::component::ncclp_handle< Toolset, Tag >::ncclp_gotcha_t = tim::component::gotcha<ncclp_wrapper_count, nccl_toolset_t, Tag>

Definition at line 86 of file ncclp.hpp.

◆ ncclp_tuple_t

template<typename Toolset , typename Tag >
using tim::component::ncclp_handle< Toolset, Tag >::ncclp_tuple_t = tim::component_tuple<ncclp_gotcha_t>

Definition at line 88 of file ncclp.hpp.

◆ string_t

template<typename Toolset , typename Tag >
using tim::component::ncclp_handle< Toolset, Tag >::string_t = std::string

Definition at line 84 of file ncclp.hpp.

◆ this_type

template<typename Toolset , typename Tag >
using tim::component::ncclp_handle< Toolset, Tag >::this_type = ncclp_handle<Toolset, Tag>

Definition at line 81 of file ncclp.hpp.

◆ toolset_ptr_t

template<typename Toolset , typename Tag >
using tim::component::ncclp_handle< Toolset, Tag >::toolset_ptr_t = std::shared_ptr<ncclp_tuple_t>

Definition at line 89 of file ncclp.hpp.

◆ value_type

template<typename Toolset , typename Tag >
using tim::component::ncclp_handle< Toolset, Tag >::value_type = void

Definition at line 80 of file ncclp.hpp.

Member Function Documentation

◆ description()

template<typename Toolset , typename Tag >
static string_t tim::component::ncclp_handle< Toolset, Tag >::description ( )
inlinestatic

Definition at line 92 of file ncclp.hpp.

92 { return "Handle for activating NCCL wrappers"; }

◆ get()

template<typename Toolset , typename Tag >
void tim::component::ncclp_handle< Toolset, Tag >::get ( )
inline

Definition at line 94 of file ncclp.hpp.

94 {}

Referenced by tim::component::ncclp_handle< Toolset, Tag >::stop().

◆ get_count()

template<typename Toolset , typename Tag >
int tim::component::ncclp_handle< Toolset, Tag >::get_count ( )
inline

Definition at line 116 of file ncclp.hpp.

116 { return get_tool_count().load(); }

◆ label()

template<typename Toolset , typename Tag >
static string_t tim::component::ncclp_handle< Toolset, Tag >::label ( )
inlinestatic

Definition at line 91 of file ncclp.hpp.

91 { return "ncclp_handle"; }

◆ start()

template<typename Toolset , typename Tag >
void tim::component::ncclp_handle< Toolset, Tag >::start ( )
inline

Definition at line 96 of file ncclp.hpp.

97  {
98  if(get_tool_count()++ == 0)
99  {
100  get_tool_instance() = std::make_shared<ncclp_tuple_t>("timemory_ncclp");
101  get_tool_instance()->start();
102  }
103  }

◆ stop()

template<typename Toolset , typename Tag >
void tim::component::ncclp_handle< Toolset, Tag >::stop ( )
inline

Definition at line 105 of file ncclp.hpp.

106  {
107  auto idx = --get_tool_count();
108  if(get_tool_instance().get())
109  {
110  get_tool_instance()->stop();
111  if(idx == 0)
112  get_tool_instance().reset();
113  }
114  }

References tim::component::ncclp_handle< Toolset, Tag >::get().

Member Data Documentation

◆ ncclp_wrapper_count

template<typename Toolset , typename Tag >
constexpr size_t tim::component::ncclp_handle< Toolset, Tag >::ncclp_wrapper_count = 15
staticconstexpr

Definition at line 78 of file ncclp.hpp.


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