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_STATIC_CAST(nvtxMemHeapHandle_t, NVTX_STATIC_CAST(intptr_t, -1)))
66#define NVTX_MEM_REGION_HANDLE_NO_TOOL (NVTX_STATIC_CAST(nvtxMemRegionHandle_t, NVTX_STATIC_CAST(intptr_t, -1)))
74#define NVTX_MEM_PERMISSIONS_HANDLE_NO_TOOL (NVTX_STATIC_CAST(nvtxMemPermissionsHandle_t, -1))
83#define NVTX_MEM_HEAP_USAGE_UNKNOWN 0x0
92#define NVTX_MEM_TYPE_UNKNOWN 0x0
110#define NVTX_MEM_HEAP_HANDLE_PROCESS_WIDE (NVTX_STATIC_CAST(nvtxMemHeapHandle_t, 0))
117#define NVTX_MEM_HEAP_USAGE_TYPE_SUB_ALLOCATOR 0x1
134#define NVTX_MEM_HEAP_USAGE_TYPE_LAYOUT 0x2
147#define NVTX_MEM_TYPE_VIRTUAL_ADDRESS 0x1
156#define NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE (NVTX_STATIC_CAST(nvtxMemPermissionsHandle_t, 0))
158#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_NONE 0x0
159#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_READ 0x1
160#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_WRITE 0x2
161#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_ATOMIC 0x4
167struct nvtxMemHeap_v1;
168typedef struct nvtxMemHeap_v1 nvtxMemHeap_t;
178struct nvtxMemRegion_v1;
179typedef struct nvtxMemRegion_v1 nvtxMemRegion_t;
198struct nvtxMemPermissions_v1;
199typedef struct nvtxMemPermissions_v1 nvtxMemPermissions_t;
218 uint16_t extCompatID;
313 nvtxDomainHandle_t domain,
318 nvtxDomainHandle_t domain,
327 nvtxDomainHandle_t domain,
350 uint16_t extCompatID;
358 size_t regionDescElementSize;
359 void const* regionDescElements;
368 nvtxDomainHandle_t domain,
392 uint16_t extCompatID;
397 size_t regionDescCount;
398 size_t regionDescElementSize;
399 void const* regionDescElements;
407 nvtxDomainHandle_t domain,
411#define NVTX_MEM_REGION_REF_TYPE_UNKNOWN 0x0
412#define NVTX_MEM_REGION_REF_TYPE_POINTER 0x1
413#define NVTX_MEM_REGION_REF_TYPE_HANDLE 0x2
435 uint16_t extCompatID;
441 size_t refElementSize;
454 nvtxDomainHandle_t domain,
459 uint32_t regionRefType;
473 uint16_t extCompatID;
479 size_t regionElementSize;
488 nvtxDomainHandle_t domain,
492#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_NONE 0x0
495#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_READ 0x1
498#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_WRITE 0x2
501#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_ATOMIC 0x4
511#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_RESET 0x8
517 uint32_t regionRefType;
526 uint16_t extCompatID;
534 size_t regionElementSize;
544 nvtxDomainHandle_t domain,
570 nvtxDomainHandle_t domain,
571 int32_t creationflags);
579 nvtxDomainHandle_t domain,
584 nvtxDomainHandle_t domain,
589#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_NONE 0x0
596#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_WRITE 0x2
603#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_READ 0x1
612#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_ATOMIC 0x4
615#define NVTX_MEM_PERMISSIONS_BIND_SCOPE_UNKNOWN 0x0
624#define NVTX_MEM_PERMISSIONS_BIND_SCOPE_CPU_THREAD 0x1
644#define NVTX_MEM_PERMISSIONS_BIND_SCOPE_CUDA_STREAM 0x2
672 nvtxDomainHandle_t domain,
684 nvtxDomainHandle_t domain,
691#ifndef NVTX_MEM_CALLBACK_ID_V1
692#define NVTX_MEM_CALLBACK_ID_V1
694#define NVTX3EXT_CBID_nvtxMemHeapRegister 0
695#define NVTX3EXT_CBID_nvtxMemHeapUnregister 1
696#define NVTX3EXT_CBID_nvtxMemHeapReset 2
697#define NVTX3EXT_CBID_nvtxMemRegionsRegister 3
698#define NVTX3EXT_CBID_nvtxMemRegionsResize 4
699#define NVTX3EXT_CBID_nvtxMemRegionsUnregister 5
700#define NVTX3EXT_CBID_nvtxMemRegionsName 6
701#define NVTX3EXT_CBID_nvtxMemPermissionsAssign 7
702#define NVTX3EXT_CBID_nvtxMemPermissionsCreate 8
703#define NVTX3EXT_CBID_nvtxMemPermissionsDestroy 9
704#define NVTX3EXT_CBID_nvtxMemPermissionsReset 10
705#define NVTX3EXT_CBID_nvtxMemPermissionsBind 11
706#define NVTX3EXT_CBID_nvtxMemPermissionsUnbind 12
709#define NVTX3EXT_CBID_nvtxMemCudaGetProcessWidePermissions 13
710#define NVTX3EXT_CBID_nvtxMemCudaGetDeviceWidePermissions 14
711#define NVTX3EXT_CBID_nvtxMemCudaSetPeerAccess 15
712#define NVTX3EXT_CBID_nvtxMemCudaMarkInitialized 16
717#ifndef NVTX_EXT_MEM_VERSIONED_IDENTIFIERS_V1
718#define NVTX_EXT_MEM_VERSIONED_IDENTIFIERS_V1
719#define NVTX_EXT_MEM_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID) \
720 NAME##_v##VERSION##_mem##COMPATID
721#define NVTX_EXT_MEM_VERSIONED_IDENTIFIER_L2(NAME, VERSION, COMPATID) \
722 NVTX_EXT_MEM_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID)
723#define NVTX_EXT_MEM_VERSIONED_ID(NAME) \
724 NVTX_EXT_MEM_VERSIONED_IDENTIFIER_L2(NAME, NVTX_VERSION, NVTX_EXT_COMPATID_MEM)
728#pragma GCC visibility push(internal)
732#define NVTX_EXT_TYPES_GUARD
733#include "nvtxDetail/nvtxExtTypes.h"
734#undef NVTX_EXT_TYPES_GUARD
738#define NVTX_EXT_IMPL_MEM_GUARD
739#include "nvtxDetail/nvtxExtImplMem_v1.h"
740#undef NVTX_EXT_IMPL_MEM_GUARD
744#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...