|
Hedgehog
0.0.0
A library to generate hybrid pipeline workflow systems
|
A class to wrap calls to the NVTX library for tracking events that occur within an Hedgehog task graph. More...
#include "nvtx_profiler.h"

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. | |
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.
Definition at line 57 of file nvtx_profiler.h.
|
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.
|
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
| threadId | the thread identifier |
Definition at line 155 of file nvtx_profiler.h.
|
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.
| queueSize | the queue size |
Definition at line 216 of file nvtx_profiler.h.