21#if defined(NVTX_AS_SYSTEM_HEADER)
23#pragma clang system_header
24#elif defined(__GNUC__) || defined(__NVCOMPILER)
25#pragma GCC system_header
26#elif defined(_MSC_VER)
37#ifndef NVTX_EXT_MODULEID_MEM
38#define NVTX_EXT_MODULEID_MEM 1
45#ifndef NVTX_EXT_COMPATID_MEM
46#define NVTX_EXT_COMPATID_MEM 0x0102
51#ifndef NVTX_MEM_CONTENTS_V1
52#define NVTX_MEM_CONTENTS_V1
58#define NVTX_MEM_HEAP_HANDLE_NO_TOOL (NVTX_REINTERPRET_CAST(nvtxMemHeapHandle_t, NVTX_STATIC_CAST(intptr_t, -1)))
66#define NVTX_MEM_REGION_HANDLE_NO_TOOL (NVTX_REINTERPRET_CAST(nvtxMemRegionHandle_t, NVTX_STATIC_CAST(intptr_t, -1)))
74#define NVTX_MEM_PERMISSIONS_HANDLE_NO_TOOL (NVTX_REINTERPRET_CAST(nvtxMemPermissionsHandle_t, -1))
83#define NVTX_MEM_HEAP_USAGE_UNKNOWN 0x0
92#define NVTX_MEM_TYPE_UNKNOWN 0x0
118#define NVTX_MEM_HEAP_HANDLE_PROCESS_WIDE (NVTX_REINTERPRET_CAST(nvtxMemHeapHandle_t, 0))
125#define NVTX_MEM_HEAP_USAGE_TYPE_SUB_ALLOCATOR 0x1
142#define NVTX_MEM_HEAP_USAGE_TYPE_LAYOUT 0x2
155#define NVTX_MEM_TYPE_VIRTUAL_ADDRESS 0x1
164#define NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE (NVTX_REINTERPRET_CAST(nvtxMemPermissionsHandle_t, 0))
166#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_NONE 0x0
167#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_READ 0x1
168#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_WRITE 0x2
169#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_ATOMIC 0x4
175struct nvtxMemHeap_v1;
176typedef struct nvtxMemHeap_v1 nvtxMemHeap_t;
186struct nvtxMemRegion_v1;
187typedef struct nvtxMemRegion_v1 nvtxMemRegion_t;
206struct nvtxMemPermissions_v1;
207typedef struct nvtxMemPermissions_v1 nvtxMemPermissions_t;
226 uint16_t extCompatID;
321 nvtxDomainHandle_t domain,
326 nvtxDomainHandle_t domain,
335 nvtxDomainHandle_t domain,
358 uint16_t extCompatID;
366 size_t regionDescElementSize;
367 void const* regionDescElements;
376 nvtxDomainHandle_t domain,
400 uint16_t extCompatID;
405 size_t regionDescCount;
406 size_t regionDescElementSize;
407 void const* regionDescElements;
415 nvtxDomainHandle_t domain,
419#define NVTX_MEM_REGION_REF_TYPE_UNKNOWN 0x0
420#define NVTX_MEM_REGION_REF_TYPE_POINTER 0x1
421#define NVTX_MEM_REGION_REF_TYPE_HANDLE 0x2
443 uint16_t extCompatID;
449 size_t refElementSize;
462 nvtxDomainHandle_t domain,
467 uint32_t regionRefType;
481 uint16_t extCompatID;
487 size_t regionElementSize;
496 nvtxDomainHandle_t domain,
500#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_NONE 0x0
503#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_READ 0x1
506#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_WRITE 0x2
509#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_ATOMIC 0x4
519#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_RESET 0x8
525 uint32_t regionRefType;
534 uint16_t extCompatID;
542 size_t regionElementSize;
552 nvtxDomainHandle_t domain,
578 nvtxDomainHandle_t domain,
579 int32_t creationflags);
587 nvtxDomainHandle_t domain,
592 nvtxDomainHandle_t domain,
597#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_NONE 0x0
604#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_WRITE 0x2
611#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_READ 0x1
620#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_ATOMIC 0x4
623#define NVTX_MEM_PERMISSIONS_BIND_SCOPE_UNKNOWN 0x0
632#define NVTX_MEM_PERMISSIONS_BIND_SCOPE_CPU_THREAD 0x1
652#define NVTX_MEM_PERMISSIONS_BIND_SCOPE_CUDA_STREAM 0x2
680 nvtxDomainHandle_t domain,
692 nvtxDomainHandle_t domain,
699#ifndef NVTX_MEM_CALLBACK_ID_V1
700#define NVTX_MEM_CALLBACK_ID_V1
702#define NVTX3EXT_CBID_nvtxMemHeapRegister 0
703#define NVTX3EXT_CBID_nvtxMemHeapUnregister 1
704#define NVTX3EXT_CBID_nvtxMemHeapReset 2
705#define NVTX3EXT_CBID_nvtxMemRegionsRegister 3
706#define NVTX3EXT_CBID_nvtxMemRegionsResize 4
707#define NVTX3EXT_CBID_nvtxMemRegionsUnregister 5
708#define NVTX3EXT_CBID_nvtxMemRegionsName 6
709#define NVTX3EXT_CBID_nvtxMemPermissionsAssign 7
710#define NVTX3EXT_CBID_nvtxMemPermissionsCreate 8
711#define NVTX3EXT_CBID_nvtxMemPermissionsDestroy 9
712#define NVTX3EXT_CBID_nvtxMemPermissionsReset 10
713#define NVTX3EXT_CBID_nvtxMemPermissionsBind 11
714#define NVTX3EXT_CBID_nvtxMemPermissionsUnbind 12
717#define NVTX3EXT_CBID_nvtxMemCudaGetProcessWidePermissions 13
718#define NVTX3EXT_CBID_nvtxMemCudaGetDeviceWidePermissions 14
719#define NVTX3EXT_CBID_nvtxMemCudaSetPeerAccess 15
720#define NVTX3EXT_CBID_nvtxMemCudaMarkInitialized 16
725#ifndef NVTX_EXT_MEM_VERSIONED_IDENTIFIERS_V1
726#define NVTX_EXT_MEM_VERSIONED_IDENTIFIERS_V1
727#define NVTX_EXT_MEM_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID) \
728 NAME##_v##VERSION##_mem##COMPATID
729#define NVTX_EXT_MEM_VERSIONED_IDENTIFIER_L2(NAME, VERSION, COMPATID) \
730 NVTX_EXT_MEM_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID)
731#define NVTX_EXT_MEM_VERSIONED_ID(NAME) \
732 NVTX_EXT_MEM_VERSIONED_IDENTIFIER_L2(NAME, NVTX_VERSION, NVTX_EXT_COMPATID_MEM)
736#pragma GCC visibility push(internal)
740#define NVTX_EXT_TYPES_GUARD
741#include "nvtxDetail/nvtxExtTypes.h"
742#undef NVTX_EXT_TYPES_GUARD
746#define NVTX_EXT_IMPL_MEM_GUARD
747#include "nvtxDetail/nvtxExtImplMem_v1.h"
748#undef NVTX_EXT_IMPL_MEM_GUARD
752#pragma GCC visibility pop
NVTX_DECLSPEC void NVTX_API nvtxMemRegionsUnregister(nvtxDomainHandle_t domain, nvtxMemRegionsUnregisterBatch_t const *desc)
Unregistration for regions of process virtual memory.
NVTX_DECLSPEC void NVTX_API nvtxMemRegionsResize(nvtxDomainHandle_t domain, nvtxMemRegionsResizeBatch_t const *desc)
Register a region of memory inside of a heap of linear process virtual memory.
NVTX_DECLSPEC nvtxMemPermissionsHandle_t NVTX_API nvtxMemPermissionsCreate(nvtxDomainHandle_t domain, int32_t creationflags)
Create a permissions object for fine grain thread-local control in multi-threading scenarios.
NVTX_DECLSPEC void NVTX_API nvtxMemRegionsRegister(nvtxDomainHandle_t domain, nvtxMemRegionsRegisterBatch_t const *desc)
Register a region of memory inside of a heap of linear process virtual memory.
NVTX_DECLSPEC void NVTX_API nvtxMemHeapReset(nvtxDomainHandle_t domain, nvtxMemHeapHandle_t heap)
Reset the memory heap wipes out any changes, as if it were a fresh heap.
nvtxMemPermissions_t * nvtxMemPermissionsHandle_t
A handle returned by a tool to represent a memory permissions mask.
NVTX_DECLSPEC void NVTX_API nvtxMemPermissionsBind(nvtxDomainHandle_t domain, nvtxMemPermissionsHandle_t permissions, uint32_t bindScope, uint32_t bindFlags)
Bind the permissions object into a particular scope on the caller thread.
NVTX_DECLSPEC nvtxMemHeapHandle_t NVTX_API nvtxMemHeapRegister(nvtxDomainHandle_t domain, nvtxMemHeapDesc_t const *desc)
Create a memory heap to represent a object or range of memory that will be further sub-divided into r...
NVTX_DECLSPEC void NVTX_API nvtxMemPermissionsDestroy(nvtxDomainHandle_t domain, nvtxMemPermissionsHandle_t permissionsHandle)
Destroy the permissions object.
nvtxMemHeap_t * nvtxMemHeapHandle_t
A handle returned by a tool to represent a memory heap.
NVTX_DECLSPEC void NVTX_API nvtxMemPermissionsReset(nvtxDomainHandle_t domain, nvtxMemPermissionsHandle_t permissionsHandle)
Reset the permissions object back to its created state.
NVTX_DECLSPEC void NVTX_API nvtxMemHeapUnregister(nvtxDomainHandle_t domain, nvtxMemHeapHandle_t heap)
Destroy a memory heap.
NVTX_DECLSPEC void NVTX_API nvtxMemRegionsName(nvtxDomainHandle_t domain, nvtxMemRegionsNameBatch_t const *desc)
Name or rename a region.
nvtxMemRegion_t * nvtxMemRegionHandle_t
A handle returned by a tool to represent a memory region.
NVTX_DECLSPEC void NVTX_API nvtxMemPermissionsAssign(nvtxDomainHandle_t domain, nvtxMemPermissionsAssignBatch_t const *desc)
Change the permissions of a region of process virtual memory.
NVTX_DECLSPEC void NVTX_API nvtxMemPermissionsUnbind(nvtxDomainHandle_t domain, uint32_t bindScope)
Unbind the permissions object bound to the caller thread.
structure to describe a heap in process virtual memory.
uint32_t type
Memory type characteristics of the heap.
uint32_t category
ID of the category the event is assigned to.
uint32_t messageType
Message type specified in this attribute structure.
void const * typeSpecificDesc
Pointer to the heap memory descriptor.
uint32_t usage
Usage characteristics of the heap.
nvtxMessageValue_t message
Message assigned to this attribute structure..
size_t typeSpecificDescSize
size of the heap memory descriptor pointed to by typeSpecificDesc
Register a region of memory inside of a heap.
Register a region of memory inside of a heap.
Register a region of memory inside of a heap.
A reference to a memory region (by pointer or handle). Which member of the union will be determined b...