PhysicsBasedAnimationToolkit
0.0.10
Cross-platform C++20 library of algorithms and data structures commonly used in computer graphics research on physically-based simulation.
Loading...
Searching...
No Matches
Profiling.h
Go to the documentation of this file.
1
10
11
#ifndef PBAT_GPU_PROFILING_PROFILING_H
12
#define PBAT_GPU_PROFILING_PROFILING_H
13
14
#if defined(PBAT_HAS_TRACY_PROFILER) and defined(__CUDACC__)
15
#define PBAT_CAN_USE_TRACY_C
16
#include <tracy/TracyC.h>
17
#define PBAT_PROFILE_CUDA_HOST_SCOPE_START(var) TracyCZone(var, true)
18
#define PBAT_PROFILE_CUDA_NAMED_HOST_SCOPE_START(var, name) TracyCZoneN(var, name, true)
19
#define PBAT_PROFILE_CUDA_HOST_SCOPE_END(var) TracyCZoneEnd(var)
20
#define PBAT_PROFILE_CUDA_LOG(txt, size) TracyCMessage(txt, size)
21
#define PBAT_PROFILE_CUDA_SCOPED_LOG(ctx, txt, size) TracyCZoneText(ctx, txt, size)
22
#define PBAT_PROFILE_CUDA_PLOT(name, value) TracyCPlot(name, value)
23
24
#define PBAT_PROFILE_CUDA_CONTEXT ___pbat_tracy_ctx
25
#define PBAT_PROFILE_CUDA_NAMED_SCOPE(name) \
26
PBAT_PROFILE_CUDA_NAMED_HOST_SCOPE_START(PBAT_PROFILE_CUDA_CONTEXT, name) \
27
pbat::gpu::profiling::Zone ___pbat_tracy_zone(&PBAT_PROFILE_CUDA_CONTEXT);
28
29
#else
30
#define PBAT_PROFILE_CUDA_HOST_SCOPE_START(var)
31
#define PBAT_PROFILE_CUDA_NAMED_HOST_SCOPE_START(var, name)
32
#define PBAT_PROFILE_CUDA_HOST_SCOPE_END(var)
33
#define PBAT_PROFILE_CUDA_LOG(txt, size)
34
#define PBAT_PROFILE_CUDA_SCOPED_LOG(ctx, txt, size)
35
#define PBAT_PROFILE_CUDA_PLOT(name, value)
36
#define PBAT_PROFILE_CUDA_CONTEXT
37
#define PBAT_PROFILE_CUDA_NAMED_SCOPE(name)
38
#endif
// PBAT_CAN_USE_TRACY
39
40
#include <cstring>
41
#include <fmt/format.h>
42
43
#if defined(PBAT_CAN_USE_TRACY_C)
44
#define PBAT_PROFILE_CUDA_SCOPED_CLOG(txt) \
45
PBAT_PROFILE_CUDA_SCOPED_LOG(PBAT_PROFILE_CUDA_CONTEXT, txt, std::strlen(txt))
46
#define PBAT_PROFILE_CUDA_CLOG(txt) PBAT_PROFILE_CUDA_LOG(txt, std::strlen(txt))
47
#define PBAT_PROFILE_CUDA_SCOPED_SLOG(txt) \
48
{ \
49
auto const& txtref = txt; \
50
PBAT_PROFILE_CUDA_SCOPED_LOG(PBAT_PROFILE_CUDA_CONTEXT, txtref.c_str(), txtref.size()) \
51
}
52
#define PBAT_PROFILE_CUDA_SLOG(txt) \
53
{ \
54
auto const& txtref = txt; \
55
PBAT_PROFILE_CUDA_LOG(txtref.c_str(), txtref.size()) \
56
}
57
#define PBAT_PROFILE_CUDA_SCOPED_FLOG(fmtstr, ...) \
58
{ \
59
auto const& txt = fmt::format(fmtstr, __VA_ARGS__); \
60
PBAT_PROFILE_CUDA_SCOPED_SLOG(txt) \
61
}
62
#define PBAT_PROFILE_CUDA_FLOG(fmtstr, ...) \
63
{ \
64
auto const& txt = fmt::format(fmtstr, __VA_ARGS__); \
65
PBAT_PROFILE_CUDA_LOG(txt.c_str(), txt.size()); \
66
}
67
#endif
// PBAT_CAN_USE_TRACY
68
73
namespace
pbat::gpu::profiling
{
74
78
class
Zone
79
{
80
public
:
81
#ifdef PBAT_CAN_USE_TRACY_C
82
Zone(TracyCZoneCtx* ctx);
83
#else
84
Zone(
void
* ctx);
85
#endif
86
~Zone();
87
88
private
:
89
#ifdef PBAT_CAN_USE_TRACY_C
90
TracyCZoneCtx* mContext;
91
#else
92
void
* mContext;
93
#endif
94
};
95
96
}
// namespace pbat::gpu::profiling
97
98
#endif
// PBAT_GPU_PROFILING_PROFILING_H
pbat::gpu::profiling
Namespace for host-side GPU profiling utilities.
Definition
Profiling.cu:7
source
pbat
gpu
profiling
Profiling.h
Generated by
1.13.2