Skip to content

Commit 0ee0571

Browse files
KristofferCpchintalapudi
authored andcommitted
add tracy support for inc/dec plots
1 parent ed12565 commit 0ee0571

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

src/timing.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ void jl_init_timing(void)
9797
JL_TIMING_COUNTERS
9898
#undef X
9999
#endif
100+
#ifdef USE_TRACY
101+
i = 0;
102+
#define X(counter_name) jl_timing_counters[i].tracy_counter = (jl_tracy_counter_t){0, #counter_name}; \
103+
TracyCPlotConfig(jl_timing_counters[i++].tracy_counter.name, TracyPlotFormatNumber, /* rectilinear */ 1, /* fill */ 1, /* color */ 0);
104+
JL_TIMING_COUNTERS
105+
#undef X
106+
#endif
100107
}
101108

102109
void jl_destroy_timing(void)

src/timing.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ static inline const char *gnu_basename(const char *path)
1616
return base ? base+1 : path;
1717
}
1818

19+
#ifdef USE_TRACY
20+
typedef struct {
21+
_Atomic(int64_t) val;
22+
char* name;
23+
} jl_tracy_counter_t;
24+
#endif
25+
1926
#ifdef __cplusplus
2027
extern "C" {
2128
#endif
@@ -425,6 +432,12 @@ struct jl_timing_suspend_cpp_t {
425432
#define _ITTAPI_COUNTER_MEMBER
426433
#endif
427434

435+
#ifdef USE_TRACY
436+
# define _TRACY_COUNTER_MEMBER jl_tracy_counter_t tracy_counter;
437+
# else
438+
# define _TRACY_COUNTER_MEMBER
439+
#endif
440+
428441
#ifdef USE_TIMING_COUNTS
429442
#define _COUNTS_MEMBER _Atomic(uint64_t) basic_counter;
430443
#else
@@ -433,6 +446,7 @@ struct jl_timing_suspend_cpp_t {
433446

434447
typedef struct {
435448
_ITTAPI_COUNTER_MEMBER
449+
_TRACY_COUNTER_MEMBER
436450
_COUNTS_MEMBER
437451
} jl_timing_counter_t;
438452

@@ -442,6 +456,11 @@ static inline void jl_timing_counter_inc(int counter, uint64_t val) JL_NOTSAFEPO
442456
#ifdef USE_ITTAPI
443457
__itt_counter_inc_delta(jl_timing_counters[counter].ittapi_counter, val);
444458
#endif
459+
#ifdef USE_TRACY
460+
jl_tracy_counter_t *tracy_counter = &jl_timing_counters[counter].tracy_counter;
461+
uint64_t oldval = jl_atomic_fetch_add_relaxed(&tracy_counter->val, val);
462+
TracyCPlotI(tracy_counter->name, oldval + val);
463+
#endif
445464
#ifdef USE_TIMING_COUNTS
446465
jl_atomic_fetch_add_relaxed(&jl_timing_counters[counter].basic_counter, val);
447466
#endif
@@ -451,6 +470,11 @@ static inline void jl_timing_counter_dec(int counter, uint64_t val) JL_NOTSAFEPO
451470
#ifdef USE_ITTAPI
452471
__itt_counter_dec_delta(jl_timing_counters[counter].ittapi_counter, val);
453472
#endif
473+
#ifdef USE_TRACY
474+
jl_tracy_counter_t *tracy_counter = &jl_timing_counters[counter].tracy_counter;
475+
uint64_t oldval = jl_atomic_fetch_add_relaxed(&tracy_counter->val, -val);
476+
TracyCPlotI(tracy_counter->name, oldval - val);
477+
#endif
454478
#ifdef USE_TIMING_COUNTS
455479
jl_atomic_fetch_add_relaxed(&jl_timing_counters[counter].basic_counter, -(int64_t)val);
456480
#endif

0 commit comments

Comments
 (0)