Hedgehog  0.0.0
A library to generate hybrid pipeline workflow systems
hh::NvtxProfiler Class Reference

A class to wrap calls to the NVTX library for tracking events that occur within an Hedgehog task graph. More...

#include "nvtx_profiler.h"

Collaboration diagram for hh::NvtxProfiler:
Collaboration graph

Public Member Functions

 NvtxProfiler ()=delete
 Deleted default constructor.
 
 NvtxProfiler (std::string_view const &)
 Constructs the NvtxProfiler with the name of the task. More...
 
 ~NvtxProfiler ()=default
 Destructor, deletes all attributes allocated.
 
void initialize ([[maybe_unused]]int threadId)
 Initializes the NvtxProfiler, and adds the threadId that is associated with the task. More...
 
void addReleaseMarker ()
 Adds a release marker into the timeline to show when the task released memory.
 
void startRangeInitializing ()
 Starts tracking intialization in the timeline to show when the task has started its initialization phase.
 
void startRangeExecuting ()
 Starts tracking execution in the timeline to show when the task has started executing on data.
 
void startRangeWaiting ([[maybe_unused]]uint64_t const &queueSize)
 Starts tracking execution in the timeline to show when the task has started waiting for data. More...
 
void startRangeWaitingForMemory ()
 Starts tracking waiting for memory in the timeline to show when the task has started waiting for memory from a memory manager.
 
void startRangeShuttingDown ()
 Starts tracking shutdown in the timeline to show when the task has started its shutdown phase.
 
void endRangeInitializing ()
 Ends tracking the initialization phase for a task.
 
void endRangeExecuting ()
 Ends tracking the execute for a task.
 
void endRangeWaiting ()
 Ends tracking the waiting for data for a task.
 
void endRangeWaitingForMem ()
 Ends tracking the waiting for memory from a memory edge.
 
void endRangeShuttingDown ()
 Ends tracking the shutdown phase for a task.
 

Detailed Description

A class to wrap calls to the NVTX library for tracking events that occur within an Hedgehog task graph.

Hedgehog uses the NVTX API and NVIDIA Nsight Systems to visualize the execution of a graph of tasks.

The current profiling mode is to have one NVTX domain per task.

In this mode, a task uses the single domain to visualize when the task is initializing, executing, waiting for memory, waiting for data, releasing memory, and shutting down. This has the effect of visualizing all tasks and their threads to identify precisely what that task is doing at any moment in time. This is useful for visualizing the interaction between tasks and identify bottlenecks.

Depending on the version of the Nsight Systems tool, there may be limitations to the number of NVTX domains. If your graph is extremely large, it is recommended to get the latest version of the NVIDIA Nsight Systems tool.

Note
To enable NVTX profiling you must add the USE_NVTX directive.
Add 'FindNVTX.cmake' to your project to assist in finding the necessary includes and libraries for use with NVTX

Definition at line 57 of file nvtx_profiler.h.

Constructor & Destructor Documentation

◆ NvtxProfiler()

hh::NvtxProfiler::NvtxProfiler ( std::string_view const &  )
inlineexplicit

Constructs the NvtxProfiler with the name of the task.

Each NvtxProfiler will hold profiling information for each task. It will profile all stages of the task's life cycle: initialize, execution, waiting for data, waiting for memory, releasing memory, and shutting down.

Definition at line 133 of file nvtx_profiler.h.

Member Function Documentation

◆ initialize()

void hh::NvtxProfiler::initialize ( [[maybe_unused] ]int  threadId)
inline

Initializes the NvtxProfiler, and adds the threadId that is associated with the task.

Initialization of the NvtxProfiler creates and cache's the string names of the various event attributes

Parameters
threadIdthe thread identifier

Definition at line 155 of file nvtx_profiler.h.

◆ startRangeWaiting()

void hh::NvtxProfiler::startRangeWaiting ( [[maybe_unused] ]uint64_t const &  queueSize)
inline

Starts tracking execution in the timeline to show when the task has started waiting for data.

This event shows the current queue size in the payload within the attribute.

Parameters
queueSizethe queue size

Definition at line 216 of file nvtx_profiler.h.


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