#if defined(NVTX_AS_SYSTEM_HEADER)
#if defined(__clang__)
#pragma clang system_header
#elif defined(__GNUC__) || defined(__NVCOMPILER)
#pragma GCC system_header
#elif defined(_MSC_VER)
#pragma system_header
#endif
#endif
#include "nvToolsExtPayload.h"
#ifndef NVTX_EXT_COUNTERS_COMPATID
#define NVTX_EXT_COUNTERS_COMPATID 0x0102
#endif
#ifndef NVTX_EXT_COUNTERS_MODULEID
#define NVTX_EXT_COUNTERS_MODULEID 4
#endif
#ifndef NVTX_COUNTER_IDS_V1
#define NVTX_COUNTER_IDS_V1
#define NVTX_COUNTER_ID_NONE 0
#define NVTX_COUNTER_ID_STATIC_START (1 << 24)
#define NVTX_COUNTER_ID_DYNAMIC_START (NVTX_STATIC_CAST(uint64_t, 1) << 32)
#endif
#ifndef NVTX_COUNTER_SAMPLES_V1
#define NVTX_COUNTER_SAMPLES_V1
#define NVTX_COUNTER_SAMPLE_ZERO 0
#define NVTX_COUNTER_SAMPLE_UNCHANGED 1
#define NVTX_COUNTER_SAMPLE_UNAVAILABLE 2
#endif
#ifndef NVTX_COUNTER_BATCH_FLAGS_V1
#define NVTX_COUNTER_BATCH_FLAGS_V1
#define NVTX_COUNTER_BATCH_FLAG_BEGINTIME_INTERVAL_PAIR (NVTX_STATIC_CAST(uint64_t, 1) << 32)
#define NVTX_COUNTER_BATCH_FLAG_ENDTIME_INTERVAL_PAIR (NVTX_STATIC_CAST(uint64_t, 2) << 32)
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifndef NVTX_COUNTER_TYPEDEFS_V1
#define NVTX_COUNTER_TYPEDEFS_V1
typedef struct nvtxCounterAttr_v1
{
size_t structSize;
uint64_t schemaId;
const char* name;
const char* description;
uint64_t scopeId;
const nvtxSemanticsHeader_t* semantics;
uint64_t counterId;
} nvtxCounterAttr_t;
typedef struct nvtxCounterBatch_v1
{
uint64_t counterId;
const void* counters;
size_t countersSize;
uint64_t flags;
const int64_t* timestamps;
size_t timestampsSize;
} nvtxCounterBatch_t;
#endif
#ifndef NVTX_COUNTER_API_FUNCTIONS_V1
#define NVTX_COUNTER_API_FUNCTIONS_V1
NVTX_DECLSPEC uint64_t NVTX_API nvtxCounterRegister(
nvtxDomainHandle_t hDomain,
const nvtxCounterAttr_t* attr);
NVTX_DECLSPEC void NVTX_API nvtxCounterSampleInt64(
nvtxDomainHandle_t hDomain,
uint64_t counterId,
int64_t value);
NVTX_DECLSPEC void NVTX_API nvtxCounterSampleFloat64(
nvtxDomainHandle_t hDomain,
uint64_t counterId,
double value);
NVTX_DECLSPEC void NVTX_API nvtxCounterSample(
nvtxDomainHandle_t hDomain,
uint64_t counterId,
const void* value,
size_t size);
NVTX_DECLSPEC void NVTX_API nvtxCounterSampleNoValue(
nvtxDomainHandle_t hDomain,
uint64_t counterId,
uint8_t reason);
NVTX_DECLSPEC void NVTX_API nvtxCounterBatchSubmit(
nvtxDomainHandle_t hDomain,
const nvtxCounterBatch_t* counterData);
#endif
#ifndef NVTX_COUNTER_CALLBACK_ID_V1
#define NVTX_COUNTER_CALLBACK_ID_V1
#define NVTX3EXT_CBID_nvtxCounterRegister 0
#define NVTX3EXT_CBID_nvtxCounterSampleInt64 1
#define NVTX3EXT_CBID_nvtxCounterSampleFloat64 2
#define NVTX3EXT_CBID_nvtxCounterSample 3
#define NVTX3EXT_CBID_nvtxCounterSampleNoValue 4
#define NVTX3EXT_CBID_nvtxCounterBatchSubmit 5
#endif
#ifndef NVTX_EXT_COUNTERS_VERSIONED_IDENTIFIERS_V1
#define NVTX_EXT_COUNTERS_VERSIONED_IDENTIFIERS_V1
#define NVTX_EXT_COUNTERS_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID) \
NAME##_v##VERSION##_cnt##COMPATID
#define NVTX_EXT_COUNTERS_VERSIONED_IDENTIFIER_L2(NAME, VERSION, COMPATID) \
NVTX_EXT_COUNTERS_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID)
#define NVTX_EXT_COUNTERS_VERSIONED_ID(NAME) \
NVTX_EXT_COUNTERS_VERSIONED_IDENTIFIER_L2(NAME, NVTX_VERSION, NVTX_EXT_COUNTERS_COMPATID)
#endif
#ifdef __GNUC__
#pragma GCC visibility push(internal)
#endif
#define NVTX_EXT_TYPES_GUARD
#include "nvtxDetail/nvtxExtTypes.h"
#undef NVTX_EXT_TYPES_GUARD
#ifndef NVTX_NO_IMPL
#define NVTX_EXT_IMPL_COUNTERS_GUARD
#include "nvtxDetail/nvtxExtImplCounters_v1.h"
#undef NVTX_EXT_IMPL_COUNTERS_GUARD
#endif
#ifdef __GNUC__
#pragma GCC visibility pop
#endif
#ifdef __cplusplus
}
#endif