200#define __daisy_min(a, b) ((a) < (b) ? (a) : (b))
201#define __daisy_max(a, b) ((a) > (b) ? (a) : (b))
202#define __daisy_fma(a, b, c) a* b + c
224#define __daisy_d2i_hi __nvvm_d2i_hi
225#define __daisy_d2i_lo __nvvm_d2i_lo
226#define __daisy_lohi_i2d __nvvm_lohi_i2d
228#define __daisy_d2i_rn __nvvm_d2i_rn
229#define __daisy_d2i_rm __nvvm_d2i_rm
230#define __daisy_d2i_rp __nvvm_d2i_rp
231#define __daisy_d2i_rz __nvvm_d2i_rz
233#define __daisy_i2d_rn __nvvm_i2d_rn
234#define __daisy_i2d_rm __nvvm_i2d_rm
235#define __daisy_i2d_rp __nvvm_i2d_rp
236#define __daisy_i2d_rz __nvvm_i2d_rz
238#define __daisy_d2f_rn __nvvm_d2f_rn
239#define __daisy_d2f_rm __nvvm_d2f_rm
240#define __daisy_d2f_rp __nvvm_d2f_rp
241#define __daisy_d2f_rz __nvvm_d2f_rz
243#define __daisy_d2ui_rn __nvvm_d2ui_rn
244#define __daisy_d2ui_rm __nvvm_d2ui_rm
245#define __daisy_d2ui_rp __nvvm_d2ui_rp
246#define __daisy_d2ui_rz __nvvm_d2ui_rz
248#define __daisy_ui2d_rn __nvvm_ui2d_rn
249#define __daisy_ui2d_rm __nvvm_ui2d_rm
250#define __daisy_ui2d_rp __nvvm_ui2d_rp
251#define __daisy_ui2d_rz __nvvm_ui2d_rz
253#define __daisy_d2ll_rn __nvvm_d2ll_rn
254#define __daisy_d2ll_rm __nvvm_d2ll_rm
255#define __daisy_d2ll_rp __nvvm_d2ll_rp
256#define __daisy_d2ll_rz __nvvm_d2ll_rz
258#define __daisy_ll2d_rn __nvvm_ll2d_rn
259#define __daisy_ll2d_rm __nvvm_ll2d_rm
260#define __daisy_ll2d_rp __nvvm_ll2d_rp
261#define __daisy_ll2d_rz __nvvm_ll2d_rz
263#define __daisy_d2ull_rn __nvvm_d2ull_rn
264#define __daisy_d2ull_rm __nvvm_d2ull_rm
265#define __daisy_d2ull_rp __nvvm_d2ull_rp
266#define __daisy_d2ull_rz __nvvm_d2ull_rz
268#define __daisy_ull2d_rn __nvvm_ull2d_rn
269#define __daisy_ull2d_rm __nvvm_ull2d_rm
270#define __daisy_ull2d_rp __nvvm_ull2d_rp
271#define __daisy_ull2d_rz __nvvm_ull2d_rz
273#define __daisy_f2i_rn __nvvm_f2i_rn
274#define __daisy_f2i_rm __nvvm_f2i_rm
275#define __daisy_f2i_rp __nvvm_f2i_rp
276#define __daisy_f2i_rz __nvvm_f2i_rz
278#define __daisy_i2f_rn __nvvm_i2f_rn
279#define __daisy_i2f_rm __nvvm_i2f_rm
280#define __daisy_i2f_rp __nvvm_i2f_rp
281#define __daisy_i2f_rz __nvvm_i2f_rz
283#define __daisy_f2ui_rn __nvvm_f2ui_rn
284#define __daisy_f2ui_rm __nvvm_f2ui_rm
285#define __daisy_f2ui_rp __nvvm_f2ui_rp
286#define __daisy_f2ui_rz __nvvm_f2ui_rz
288#define __daisy_ui2f_rn __nvvm_ui2f_rn
289#define __daisy_ui2f_rm __nvvm_ui2f_rm
290#define __daisy_ui2f_rp __nvvm_ui2f_rp
291#define __daisy_ui2f_rz __nvvm_ui2f_rz
293#define __daisy_f2ll_rn __nvvm_f2ll_rn
294#define __daisy_f2ll_rm __nvvm_f2ll_rm
295#define __daisy_f2ll_rp __nvvm_f2ll_rp
296#define __daisy_f2ll_rz __nvvm_f2ll_rz
298#define __daisy_ll2f_rn __nvvm_ll2f_rn
299#define __daisy_ll2f_rm __nvvm_ll2f_rm
300#define __daisy_ll2f_rp __nvvm_ll2f_rp
301#define __daisy_ll2f_rz __nvvm_ll2f_rz
303#define __daisy_f2ull_rn __nvvm_f2ull_rn
304#define __daisy_f2ull_rm __nvvm_f2ull_rm
305#define __daisy_f2ull_rp __nvvm_f2ull_rp
306#define __daisy_f2ull_rz __nvvm_f2ull_rz
308#define __daisy_ull2f_rn __nvvm_ull2f_rn
309#define __daisy_ull2f_rm __nvvm_ull2f_rm
310#define __daisy_ull2f_rp __nvvm_ull2f_rp
311#define __daisy_ull2f_rz __nvvm_ull2f_rz
313#define __daisy_f2bf16_rn __nvvm_f2bf16_rn
314#define __daisy_f2bf16_rz __nvvm_f2bf16_rz
316#define __daisy_f2h_rn __nvvm_f2h_rn
319#define __daisy_saturate_f __nvvm_saturate_f
320#define __daisy_saturate_d __nvvm_saturate_d
323#define __daisy_fma_rn_f __nvvm_fma_rn_f
324#define __daisy_fma_rn_d __nvvm_fma_rn_d
326#define __daisy_fma_rm_f __nvvm_fma_rm_f
327#define __daisy_fma_rm_d __nvvm_fma_rm_d
329#define __daisy_fma_rp_f __nvvm_fma_rp_f
330#define __daisy_fma_rp_d __nvvm_fma_rp_d
332#define __daisy_fma_rz_f __nvvm_fma_rz_f
333#define __daisy_fma_rz_d __nvvm_fma_rz_d
335#define __daisy_fma_rn_ftz_f __nvvm_fma_rn_ftz_f
337#define __daisy_fma_rm_ftz_f __nvvm_fma_rm_ftz_f
339#define __daisy_fma_rp_ftz_f __nvvm_fma_rp_ftz_f
341#define __daisy_fma_rz_ftz_f __nvvm_fma_rz_ftz_f
365#if defined(__CUDACC__) || defined(__HIPCC__)
367#if defined(__HIPCC__)
368#include <hip/hip_bfloat16.h>
369#include <hip/hip_runtime.h>
371#include <cuda_bf16.h>
372#include <cuda_runtime.h>
378#define __DAISY_REDUCE_COMBINE(NAME, TYPE, CASTYPE, TO_VAL, FROM_VAL, COMBINE) \
379 static __device__ inline void NAME(TYPE* __daisy_addr, TYPE __daisy_val) { \
380 CASTYPE* __daisy_p = reinterpret_cast<CASTYPE*>(__daisy_addr); \
381 CASTYPE __daisy_old = *__daisy_p; \
382 CASTYPE __daisy_assumed; \
384 __daisy_assumed = __daisy_old; \
385 TYPE __daisy_cur = (TO_VAL); \
386 TYPE __daisy_new = (COMBINE); \
387 __daisy_old = atomicCAS(__daisy_p, __daisy_assumed, (FROM_VAL)); \
388 } while (__daisy_assumed != __daisy_old); \
392#define __DAISY_REDUCE_COMBINE_ALL(SUFFIX, TYPE, CASTYPE, TO_VAL, FROM_VAL) \
393 __DAISY_REDUCE_COMBINE(__daisy_reduce_combine_add_##SUFFIX, TYPE, CASTYPE, TO_VAL, FROM_VAL, __daisy_cur + __daisy_val) \
394 __DAISY_REDUCE_COMBINE(__daisy_reduce_combine_mul_##SUFFIX, TYPE, CASTYPE, TO_VAL, FROM_VAL, __daisy_cur* __daisy_val) \
395 __DAISY_REDUCE_COMBINE( \
396 __daisy_reduce_combine_min_##SUFFIX, \
401 __daisy_cur < __daisy_val ? __daisy_cur : __daisy_val \
403 __DAISY_REDUCE_COMBINE( \
404 __daisy_reduce_combine_max_##SUFFIX, \
409 __daisy_cur > __daisy_val ? __daisy_cur : __daisy_val \
412#if !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 700
413__DAISY_REDUCE_COMBINE_ALL(
417 __builtin_bit_cast(_Float16, __daisy_assumed),
418 __builtin_bit_cast(
unsigned short, __daisy_new)
421#if defined(__HIPCC__)
422__DAISY_REDUCE_COMBINE_ALL(
426 __builtin_bit_cast(hip_bfloat16, __daisy_assumed),
427 __builtin_bit_cast(
unsigned short, __daisy_new)
430__DAISY_REDUCE_COMBINE_ALL(
434 __builtin_bit_cast(nv_bfloat16, __daisy_assumed),
435 __builtin_bit_cast(
unsigned short, __daisy_new)
439__DAISY_REDUCE_COMBINE_ALL(
float,
float,
unsigned int, __uint_as_float(__daisy_assumed), __float_as_uint(__daisy_new))
440__DAISY_REDUCE_COMBINE_ALL(
444 __longlong_as_double((
long long) __daisy_assumed),
445 (
unsigned long long) __double_as_longlong(__daisy_new)
447__DAISY_REDUCE_COMBINE_ALL(
int,
int,
unsigned int, (
int) __daisy_assumed, (
unsigned int) __daisy_new)
448__DAISY_REDUCE_COMBINE_ALL(
449 unsigned_int,
unsigned int,
unsigned int, (
unsigned int) __daisy_assumed, (
unsigned int) __daisy_new
451__DAISY_REDUCE_COMBINE_ALL(
452 long_long,
long long,
unsigned long long, (
long long) __daisy_assumed, (
unsigned long long) __daisy_new
454__DAISY_REDUCE_COMBINE_ALL(
458 (
unsigned long long) __daisy_assumed,
459 (
unsigned long long) __daisy_new
struct __daisy_metadata __daisy_metadata_t
void __daisy_capture_2d(__daisy_capture_t *context, int arg_idx, const void *data, size_t size, int primitive_type, size_t num_rows, size_t num_cols, bool after, size_t element_id)
void __daisy_capture_raw(__daisy_capture_t *context, int arg_idx, const void *data, size_t size, int primitive_type, bool after, size_t element_id)
bool __daisy_capture_enter(__daisy_capture_t *context, size_t element_id)
__daisy_event_set
Definition daisy_rtl.h:16
@ __DAISY_EVENT_SET_NONE
Definition daisy_rtl.h:19
@ __DAISY_EVENT_SET_CUDA
Definition daisy_rtl.h:18
@ __DAISY_EVENT_SET_CPU
Definition daisy_rtl.h:17
void __daisy_capture_end(__daisy_capture_t *context)
void __daisy_instrumentation_finalize(size_t region_id)
void __daisy_instrumentation_finalize_all(void)
void __daisy_instrumentation_reset_all(void)
void __daisy_capture_3d(__daisy_capture_t *context, int arg_idx, const void *data, size_t size, int primitive_type, size_t num_x, size_t num_y, size_t num_z, bool after, size_t element_id)
__daisy_capture_t * __daisy_capture_init(const char *name, const char *base_dir)
bool __daisy_instrumentation_stats(size_t region_id, double *mean_us, double *variance_us2, long long *count)
bool __daisy_instrumentation_dump(void)
size_t __daisy_instrumentation_init(__daisy_metadata_t *metadata, enum __daisy_event_set event_set)
void __daisy_capture_1d(__daisy_capture_t *context, int arg_idx, const void *data, size_t size, int primitive_type, size_t num_elements, bool after, size_t element_id)
bool __daisy_instrumentation_is_enabled(void)
void __daisy_instrumentation_metric(size_t region_id, const char *name, double value)
void __daisy_instrumentation_start(void)
struct __daisy_capture __daisy_capture_t
Definition daisy_rtl.h:142
int __daisy_sym_pow(int base, int exp)
Definition daisy_rtl.h:205
bool __daisy_instrumentation_should_continue(size_t region_id)
__daisy_instrumentation_mode
Definition daisy_rtl.h:11
@ __DAISY_MODE_TRACE
Definition daisy_rtl.h:12
@ __DAISY_MODE_AGGREGATE
Definition daisy_rtl.h:13
void __daisy_instrumentation_stop(void)
bool __daisy_instrumentation_total_stats(double *mean_us, double *variance_us2, long long *count)
void __daisy_instrumentation_flush_caches(void)
enum __daisy_instrumentation_mode __daisy_instrumentation_mode_t
void __daisy_instrumentation_increment(size_t region_id, const char *name, long long value)
void __daisy_instrumentation_exit(size_t region_id)
void __daisy_instrumentation_enter(size_t region_id)