# @generated by tools/gen_cupti_stubs.py -- do not edit.
# Source: cupti_activity.h (CUPTI ABI; nvidia-cuda-cupti build dependency).
# BUILD_CUPTI_API_VERSION: 130301   Source sha256: 306ed811227ae7a0a154fd27f977c72e0e5ea0082f63d5395624f6abfd44596a
"""CUPTI ABI enum catalogs, generated from cupti_activity.h.

One class per activity kind: each attribute is a :class:`Field` (its
``CUpti_Activity*FieldIds`` id plus its :class:`Ctype` for decode); ``records``
curates which of these the monitor selects per kind. ``ActivityAttr`` holds the
``CUpti_ActivityAttribute`` selectors (cuptiActivitySetAttribute_v2).
"""

from torch.profiler._cupti._records_base import Ctype, Field


class Memcpy:
    KIND = Field(0, Ctype.UINT)
    COPY_KIND = Field(1, Ctype.UINT)
    SRC_KIND = Field(2, Ctype.UINT)
    DST_KIND = Field(3, Ctype.UINT)
    FLAGS = Field(4, Ctype.UINT)
    BYTES = Field(5, Ctype.UINT)
    START = Field(6, Ctype.UINT)
    END = Field(7, Ctype.UINT)
    DEVICE_ID = Field(8, Ctype.UINT)
    CONTEXT_ID = Field(9, Ctype.UINT)
    STREAM_ID = Field(10, Ctype.UINT)
    CORRELATION_ID = Field(11, Ctype.UINT)
    GRAPH_NODE_ID = Field(12, Ctype.UINT)
    GRAPH_ID = Field(13, Ctype.UINT)
    CHANNEL_ID = Field(14, Ctype.UINT)
    CHANNEL_TYPE = Field(15, Ctype.UINT)
    IS_DEVICE_LAUNCHED = Field(16, Ctype.UINT)
    COPY_COUNT = Field(17, Ctype.UINT)


class Memcpy2:
    KIND = Field(0, Ctype.UINT)
    COPY_KIND = Field(1, Ctype.UINT)
    SRC_KIND = Field(2, Ctype.UINT)
    DST_KIND = Field(3, Ctype.UINT)
    FLAGS = Field(4, Ctype.UINT)
    BYTES = Field(5, Ctype.UINT)
    START = Field(6, Ctype.UINT)
    END = Field(7, Ctype.UINT)
    DEVICE_ID = Field(8, Ctype.UINT)
    CONTEXT_ID = Field(9, Ctype.UINT)
    STREAM_ID = Field(10, Ctype.UINT)
    SRC_DEVICE_ID = Field(11, Ctype.UINT)
    SRC_CONTEXT_ID = Field(12, Ctype.UINT)
    DST_DEVICE_ID = Field(13, Ctype.UINT)
    DST_CONTEXT_ID = Field(14, Ctype.UINT)
    CORRELATION_ID = Field(15, Ctype.UINT)
    GRAPH_NODE_ID = Field(16, Ctype.UINT)
    GRAPH_ID = Field(17, Ctype.UINT)
    CHANNEL_ID = Field(18, Ctype.UINT)
    CHANNEL_TYPE = Field(19, Ctype.UINT)


class Memset:
    KIND = Field(0, Ctype.UINT)
    VALUE = Field(1, Ctype.UINT)
    BYTES = Field(2, Ctype.UINT)
    START = Field(3, Ctype.UINT)
    END = Field(4, Ctype.UINT)
    DEVICE_ID = Field(5, Ctype.UINT)
    CONTEXT_ID = Field(6, Ctype.UINT)
    STREAM_ID = Field(7, Ctype.UINT)
    CORRELATION_ID = Field(8, Ctype.UINT)
    FLAGS = Field(9, Ctype.UINT)
    MEMORY_KIND = Field(10, Ctype.UINT)
    GRAPH_NODE_ID = Field(11, Ctype.UINT)
    GRAPH_ID = Field(12, Ctype.UINT)
    CHANNEL_ID = Field(13, Ctype.UINT)
    CHANNEL_TYPE = Field(14, Ctype.UINT)
    IS_DEVICE_LAUNCHED = Field(15, Ctype.UINT)


class Memory:
    KIND = Field(0, Ctype.UINT)
    OPERATION_TYPE = Field(1, Ctype.UINT)
    MEMORY_KIND = Field(2, Ctype.UINT)
    CORRELATION_ID = Field(3, Ctype.UINT)
    ADDRESS = Field(4, Ctype.UINT)
    BYTES = Field(5, Ctype.UINT)
    TIMESTAMP = Field(6, Ctype.UINT)
    PROCESS_ID = Field(7, Ctype.UINT)
    DEVICE_ID = Field(8, Ctype.UINT)
    CONTEXT_ID = Field(9, Ctype.UINT)
    STREAM_ID = Field(10, Ctype.UINT)
    IS_ASYNC = Field(11, Ctype.UINT)
    POOL_TYPE = Field(12, Ctype.UINT)
    POOL_ADDRESS = Field(13, Ctype.UINT)
    POOL_RELEASE_THRESHOLD = Field(14, Ctype.UINT)
    POOL_SIZE = Field(15, Ctype.UINT)
    POOL_PROCESS_ID = Field(16, Ctype.UINT)
    POOL_UTILIZED_SIZE = Field(17, Ctype.UINT)
    SOURCE = Field(18, Ctype.CSTR)


class MemoryPool:
    KIND = Field(0, Ctype.UINT)
    OPERATION_TYPE = Field(1, Ctype.UINT)
    POOL_TYPE = Field(2, Ctype.UINT)
    CORRELATION_ID = Field(3, Ctype.UINT)
    PROCESS_ID = Field(4, Ctype.UINT)
    DEVICE_ID = Field(5, Ctype.UINT)
    MIN_BYTES_TO_KEEP = Field(6, Ctype.UINT)
    ADDRESS = Field(7, Ctype.UINT)
    SIZE = Field(8, Ctype.UINT)
    RELEASE_THRESHOLD = Field(9, Ctype.UINT)
    TIMESTAMP = Field(10, Ctype.UINT)
    UTILIZED_SIZE = Field(11, Ctype.UINT)
    IS_MANAGED_POOL = Field(12, Ctype.UINT)


class Kernel:
    KIND = Field(0, Ctype.UINT)
    CACHE_CONFIG_REQUESTED = Field(1, Ctype.UINT)
    CACHE_CONFIG_EXECUTED = Field(2, Ctype.UINT)
    SHARED_MEMORY_CONFIG = Field(3, Ctype.UINT)
    REGISTERS_PER_THREAD = Field(4, Ctype.UINT)
    PARTITIONED_GLOBAL_CACHE_REQUESTED = Field(5, Ctype.UINT)
    PARTITIONED_GLOBAL_CACHE_EXECUTED = Field(6, Ctype.UINT)
    START = Field(7, Ctype.UINT)
    END = Field(8, Ctype.UINT)
    COMPLETED = Field(9, Ctype.UINT)
    DEVICE_ID = Field(10, Ctype.UINT)
    CONTEXT_ID = Field(11, Ctype.UINT)
    STREAM_ID = Field(12, Ctype.UINT)
    GRID_X = Field(13, Ctype.INT)
    GRID_Y = Field(14, Ctype.INT)
    GRID_Z = Field(15, Ctype.INT)
    BLOCK_X = Field(16, Ctype.INT)
    BLOCK_Y = Field(17, Ctype.INT)
    BLOCK_Z = Field(18, Ctype.INT)
    STATIC_SHARED_MEMORY = Field(19, Ctype.INT)
    DYNAMIC_SHARED_MEMORY = Field(20, Ctype.INT)
    LOCAL_MEMORY_PER_THREAD = Field(21, Ctype.UINT)
    CORRELATION_ID = Field(22, Ctype.UINT)
    GRID_ID = Field(23, Ctype.INT)
    NAME = Field(24, Ctype.CSTR)
    QUEUED = Field(25, Ctype.UINT)
    SUBMITTED = Field(26, Ctype.UINT)
    LAUNCH_TYPE = Field(27, Ctype.UINT)
    IS_SHARED_MEMORY_CARVEOUT_REQUESTED = Field(28, Ctype.UINT)
    SHARED_MEMORY_CARVEOUT_REQUESTED = Field(29, Ctype.UINT)
    SHARED_MEMORY_EXECUTED = Field(30, Ctype.UINT)
    GRAPH_NODE_ID = Field(31, Ctype.UINT)
    SHMEM_LIMIT_CONFIG = Field(32, Ctype.UINT)
    GRAPH_ID = Field(33, Ctype.UINT)
    ACCESS_POLICY_WINDOW = Field(34, Ctype.UINT)
    CHANNEL_ID = Field(35, Ctype.UINT)
    CHANNEL_TYPE = Field(36, Ctype.UINT)
    CLUSTER_X = Field(37, Ctype.INT)
    CLUSTER_Y = Field(38, Ctype.INT)
    CLUSTER_Z = Field(39, Ctype.INT)
    CLUSTER_SCHEDULING_POLICY = Field(40, Ctype.UINT)
    LOCAL_MEMORY_TOTAL = Field(41, Ctype.UINT)
    MAX_POTENTIAL_CLUSTER_SIZE = Field(42, Ctype.UINT)
    MAX_ACTIVE_CLUSTERS = Field(43, Ctype.UINT)
    IS_DEVICE_LAUNCHED = Field(44, Ctype.UINT)
    LAUNCH_PRIORITY = Field(45, Ctype.INT)
    EXECUTION_MODEL = Field(46, Ctype.UINT)


class Api:
    KIND = Field(0, Ctype.UINT)
    CBID = Field(1, Ctype.UINT)
    START = Field(2, Ctype.UINT)
    END = Field(3, Ctype.UINT)
    PROCESS_ID = Field(4, Ctype.UINT)
    THREAD_ID = Field(5, Ctype.UINT)
    CORRELATION_ID = Field(6, Ctype.UINT)
    RETURN_VALUE = Field(7, Ctype.UINT)


class Device:
    KIND = Field(0, Ctype.UINT)
    FLAGS = Field(1, Ctype.UINT)
    GLOBAL_MEMORY_BANDWIDTH = Field(2, Ctype.UINT)
    GLOBAL_MEMORY_SIZE = Field(3, Ctype.UINT)
    CONSTANT_MEMORY_SIZE = Field(4, Ctype.UINT)
    L2_CACHE_SIZE = Field(5, Ctype.UINT)
    NUM_THREADS_PER_WARP = Field(6, Ctype.UINT)
    CORE_CLOCK_RATE = Field(7, Ctype.UINT)
    NUM_MEMCPY_ENGINES = Field(8, Ctype.UINT)
    NUM_MULTIPROCESSORS = Field(9, Ctype.UINT)
    MAX_IPC = Field(10, Ctype.UINT)
    MAX_WARPS_PER_MULTIPROCESSOR = Field(11, Ctype.UINT)
    MAX_BLOCKS_PER_MULTIPROCESSOR = Field(12, Ctype.UINT)
    MAX_SHARED_MEMORY_PER_MULTIPROCESSOR = Field(13, Ctype.UINT)
    MAX_REGISTERS_PER_MULTIPROCESSOR = Field(14, Ctype.UINT)
    MAX_REGISTERS_PER_BLOCK = Field(15, Ctype.UINT)
    MAX_SHARED_MEMORY_PER_BLOCK = Field(16, Ctype.UINT)
    MAX_THREADS_PER_BLOCK = Field(17, Ctype.UINT)
    MAX_BLOCK_DIM_X = Field(18, Ctype.UINT)
    MAX_BLOCK_DIM_Y = Field(19, Ctype.UINT)
    MAX_BLOCK_DIM_Z = Field(20, Ctype.UINT)
    MAX_GRID_DIM_X = Field(21, Ctype.UINT)
    MAX_GRID_DIM_Y = Field(22, Ctype.UINT)
    MAX_GRID_DIM_Z = Field(23, Ctype.UINT)
    COMPUTE_CAPABILITY_MAJOR = Field(24, Ctype.UINT)
    COMPUTE_CAPABILITY_MINOR = Field(25, Ctype.UINT)
    ID = Field(26, Ctype.UINT)
    ECC_ENABLED = Field(27, Ctype.UINT)
    UUID = Field(28, Ctype.UINT)
    NAME = Field(29, Ctype.CSTR)
    IS_CUDA_VISIBLE = Field(30, Ctype.UINT)
    IS_MIG_ENABLED = Field(31, Ctype.UINT)
    GPU_INSTANCE_ID = Field(32, Ctype.UINT)
    COMPUTE_INSTANCE_ID = Field(33, Ctype.UINT)
    MIG_UUID = Field(34, Ctype.UINT)
    IS_NUMA_NODE = Field(35, Ctype.UINT)
    NUMA_ID = Field(36, Ctype.UINT)
    NUM_TPCS = Field(37, Ctype.UINT)


class Context:
    KIND = Field(0, Ctype.UINT)
    CONTEXT_ID = Field(1, Ctype.UINT)
    DEVICE_ID = Field(2, Ctype.UINT)
    COMPUTE_API_KIND = Field(3, Ctype.UINT)
    NULL_STREAM_ID = Field(4, Ctype.UINT)
    PARENT_CONTEXT_ID = Field(5, Ctype.UINT)
    IS_GREEN_CONTEXT = Field(6, Ctype.UINT)
    NUM_MULTIPROCESSORS = Field(7, Ctype.UINT)
    CIG_MODE = Field(8, Ctype.UINT)
    PROCESS_ID = Field(9, Ctype.UINT)


class Name:
    KIND = Field(0, Ctype.UINT)
    OBJECT_KIND = Field(1, Ctype.UINT)
    OBJECT_ID = Field(2, Ctype.UINT)
    NAME = Field(3, Ctype.CSTR)


class Marker:
    KIND = Field(0, Ctype.UINT)
    FLAGS = Field(1, Ctype.UINT)
    TIMESTAMP = Field(2, Ctype.UINT)
    ID = Field(3, Ctype.UINT)
    PROCESS_ID = Field(4, Ctype.UINT)
    THREAD_ID = Field(5, Ctype.UINT)
    NAME = Field(6, Ctype.CSTR)
    DOMAIN = Field(7, Ctype.CSTR)


class MarkerData:
    KIND = Field(0, Ctype.UINT)
    FLAGS = Field(1, Ctype.UINT)
    ID = Field(2, Ctype.UINT)
    PAYLOAD_KIND = Field(3, Ctype.UINT)
    PAYLOAD = Field(4, Ctype.UINT)
    COLOR = Field(5, Ctype.UINT)
    CATEGORY = Field(6, Ctype.UINT)
    CUPTI_DOMAIN_ID = Field(7, Ctype.UINT)


class Overhead:
    KIND = Field(0, Ctype.UINT)
    OVERHEAD_KIND = Field(1, Ctype.UINT)
    PROCESS_ID = Field(2, Ctype.UINT)
    THREAD_ID = Field(3, Ctype.UINT)
    START = Field(4, Ctype.UINT)
    END = Field(5, Ctype.UINT)
    CORRELATION_ID = Field(6, Ctype.UINT)
    OVERHEAD_DATA = Field(7, Ctype.UINT)


class Environment:
    KIND = Field(0, Ctype.UINT)
    DEVICE_ID = Field(1, Ctype.UINT)
    TIMESTAMP = Field(2, Ctype.UINT)
    ENVIRONMENT_KIND = Field(3, Ctype.UINT)
    ENVIRONMENT_KIND_DATA = Field(4, Ctype.UINT)


class UvmCounter:
    KIND = Field(0, Ctype.UINT)
    COUNTER_KIND = Field(1, Ctype.UINT)
    VALUE = Field(2, Ctype.UINT)
    START = Field(3, Ctype.UINT)
    END = Field(4, Ctype.UINT)
    ADDRESS = Field(5, Ctype.UINT)
    SRC_ID = Field(6, Ctype.UINT)
    DST_ID = Field(7, Ctype.UINT)
    STREAM_ID = Field(8, Ctype.UINT)
    PROCESS_ID = Field(9, Ctype.UINT)
    FLAGS = Field(10, Ctype.UINT)
    PROCESSORS = Field(11, Ctype.UINT)


class CudaEvent:
    KIND = Field(0, Ctype.UINT)
    CORRELATION_ID = Field(1, Ctype.UINT)
    CONTEXT_ID = Field(2, Ctype.UINT)
    STREAM_ID = Field(3, Ctype.UINT)
    EVENT_ID = Field(4, Ctype.UINT)
    DEVICE_ID = Field(5, Ctype.UINT)
    DEVICE_TIMESTAMP = Field(6, Ctype.UINT)
    CUDA_EVENT_SYNC_ID = Field(7, Ctype.UINT)


class Stream:
    KIND = Field(0, Ctype.UINT)
    CONTEXT_ID = Field(1, Ctype.UINT)
    STREAM_ID = Field(2, Ctype.UINT)
    PRIORITY = Field(3, Ctype.INT)
    FLAG = Field(4, Ctype.UINT)
    CORRELATION_ID = Field(5, Ctype.UINT)


class Synchronization:
    KIND = Field(0, Ctype.UINT)
    TYPE = Field(1, Ctype.UINT)
    START = Field(2, Ctype.UINT)
    END = Field(3, Ctype.UINT)
    CORRELATION_ID = Field(4, Ctype.UINT)
    CONTEXT_ID = Field(5, Ctype.UINT)
    STREAM_ID = Field(6, Ctype.UINT)
    CUDA_EVENT_ID = Field(7, Ctype.UINT)
    CUDA_EVENT_SYNC_ID = Field(8, Ctype.UINT)
    RETURN_VALUE = Field(9, Ctype.UINT)


class OpenAccData:
    KIND = Field(0, Ctype.UINT)
    EVENT_KIND = Field(1, Ctype.UINT)
    PARENT_CONSTRUCT = Field(2, Ctype.UINT)
    VERSION = Field(3, Ctype.UINT)
    IMPLICIT = Field(4, Ctype.UINT)
    DEVICE_TYPE = Field(5, Ctype.UINT)
    DEVICE_NUMBER = Field(6, Ctype.UINT)
    THREAD_ID = Field(7, Ctype.UINT)
    ASYNC = Field(8, Ctype.UINT)
    ASYNC_MAP = Field(9, Ctype.UINT)
    LINE_NO = Field(10, Ctype.UINT)
    END_LINE_NO = Field(11, Ctype.UINT)
    FUNC_LINE_NO = Field(12, Ctype.UINT)
    FUNC_END_LINE_NO = Field(13, Ctype.UINT)
    START = Field(14, Ctype.UINT)
    END = Field(15, Ctype.UINT)
    CU_DEVICE_ID = Field(16, Ctype.UINT)
    CU_CONTEXT_ID = Field(17, Ctype.UINT)
    CU_STREAM_ID = Field(18, Ctype.UINT)
    CU_PROCESS_ID = Field(19, Ctype.UINT)
    CU_THREAD_ID = Field(20, Ctype.UINT)
    EXTERNAL_ID = Field(21, Ctype.UINT)
    SRC_FILE = Field(22, Ctype.CSTR)
    FUNC_NAME = Field(23, Ctype.CSTR)
    BYTES = Field(24, Ctype.UINT)
    HOST_PTR = Field(25, Ctype.UINT)
    DEVICE_PTR = Field(26, Ctype.UINT)
    VAR_NAME = Field(27, Ctype.CSTR)


class OpenAccLaunch:
    KIND = Field(0, Ctype.UINT)
    EVENT_KIND = Field(1, Ctype.UINT)
    PARENT_CONSTRUCT = Field(2, Ctype.UINT)
    VERSION = Field(3, Ctype.UINT)
    IMPLICIT = Field(4, Ctype.UINT)
    DEVICE_TYPE = Field(5, Ctype.UINT)
    DEVICE_NUMBER = Field(6, Ctype.UINT)
    THREAD_ID = Field(7, Ctype.UINT)
    ASYNC = Field(8, Ctype.UINT)
    ASYNC_MAP = Field(9, Ctype.UINT)
    LINE_NO = Field(10, Ctype.UINT)
    END_LINE_NO = Field(11, Ctype.UINT)
    FUNC_LINE_NO = Field(12, Ctype.UINT)
    FUNC_END_LINE_NO = Field(13, Ctype.UINT)
    START = Field(14, Ctype.UINT)
    END = Field(15, Ctype.UINT)
    CU_DEVICE_ID = Field(16, Ctype.UINT)
    CU_CONTEXT_ID = Field(17, Ctype.UINT)
    CU_STREAM_ID = Field(18, Ctype.UINT)
    CU_PROCESS_ID = Field(19, Ctype.UINT)
    CU_THREAD_ID = Field(20, Ctype.UINT)
    EXTERNAL_ID = Field(21, Ctype.UINT)
    SRC_FILE = Field(22, Ctype.CSTR)
    FUNC_NAME = Field(23, Ctype.CSTR)
    NUM_GANGS = Field(24, Ctype.UINT)
    NUM_WORKERS = Field(25, Ctype.UINT)
    VECTOR_LENGTH = Field(26, Ctype.UINT)
    KERNEL_NAME = Field(27, Ctype.CSTR)


class OpenAccOther:
    KIND = Field(0, Ctype.UINT)
    EVENT_KIND = Field(1, Ctype.UINT)
    PARENT_CONSTRUCT = Field(2, Ctype.UINT)
    VERSION = Field(3, Ctype.UINT)
    IMPLICIT = Field(4, Ctype.UINT)
    DEVICE_TYPE = Field(5, Ctype.UINT)
    DEVICE_NUMBER = Field(6, Ctype.UINT)
    THREAD_ID = Field(7, Ctype.UINT)
    ASYNC = Field(8, Ctype.UINT)
    ASYNC_MAP = Field(9, Ctype.UINT)
    LINE_NO = Field(10, Ctype.UINT)
    END_LINE_NO = Field(11, Ctype.UINT)
    FUNC_LINE_NO = Field(12, Ctype.UINT)
    FUNC_END_LINE_NO = Field(13, Ctype.UINT)
    START = Field(14, Ctype.UINT)
    END = Field(15, Ctype.UINT)
    CU_DEVICE_ID = Field(16, Ctype.UINT)
    CU_CONTEXT_ID = Field(17, Ctype.UINT)
    CU_STREAM_ID = Field(18, Ctype.UINT)
    CU_PROCESS_ID = Field(19, Ctype.UINT)
    CU_THREAD_ID = Field(20, Ctype.UINT)
    EXTERNAL_ID = Field(21, Ctype.UINT)
    SRC_FILE = Field(22, Ctype.CSTR)
    FUNC_NAME = Field(23, Ctype.CSTR)


class OpenMp:
    KIND = Field(0, Ctype.UINT)
    EVENT_KIND = Field(1, Ctype.UINT)
    START = Field(2, Ctype.UINT)
    END = Field(3, Ctype.UINT)
    CU_THREAD_ID = Field(4, Ctype.UINT)
    CU_PROCESS_ID = Field(5, Ctype.UINT)


class ExternalCorrelation:
    KIND = Field(0, Ctype.UINT)
    EXTERNAL_KIND = Field(1, Ctype.UINT)
    EXTERNAL_ID = Field(2, Ctype.UINT)
    CORRELATION_ID = Field(3, Ctype.UINT)


class NvLink:
    KIND = Field(0, Ctype.UINT)
    NVLINK_VERSION = Field(1, Ctype.UINT)
    TYPE_DEV0 = Field(2, Ctype.UINT)
    TYPE_DEV1 = Field(3, Ctype.UINT)
    ID_DEV0 = Field(4, Ctype.UINT)
    ID_DEV1 = Field(5, Ctype.UINT)
    FLAG = Field(6, Ctype.UINT)
    PHYSICAL_NVLINK_COUNT = Field(7, Ctype.UINT)
    PORT_DEV0 = Field(8, Ctype.UINT)
    PORT_DEV1 = Field(9, Ctype.UINT)
    BANDWIDTH = Field(10, Ctype.UINT)
    NVSWITCH_CONNECTED = Field(11, Ctype.UINT)


class Pcie:
    KIND = Field(0, Ctype.UINT)
    TYPE = Field(1, Ctype.UINT)
    ID = Field(2, Ctype.UINT)
    DOMAIN = Field(3, Ctype.UINT)
    PCIE_GENERATION = Field(4, Ctype.UINT)
    LINK_RATE = Field(5, Ctype.UINT)
    LINK_WIDTH = Field(6, Ctype.UINT)
    UPSTREAM_BUS = Field(7, Ctype.UINT)
    ATTR = Field(8, Ctype.UINT)


class ConfidentialComputeRotation:
    KIND = Field(0, Ctype.UINT)
    EVENT_TYPE = Field(1, Ctype.UINT)
    DEVICE_ID = Field(2, Ctype.UINT)
    CONTEXT_ID = Field(3, Ctype.UINT)
    CHANNEL_ID = Field(4, Ctype.UINT)
    CHANNEL_TYPE = Field(5, Ctype.UINT)
    TIMESTAMP = Field(6, Ctype.UINT)


class Jit:
    KIND = Field(0, Ctype.UINT)
    ENTRY_TYPE = Field(1, Ctype.UINT)
    OPERATION_TYPE = Field(2, Ctype.UINT)
    DEVICE_ID = Field(3, Ctype.UINT)
    START = Field(4, Ctype.UINT)
    END = Field(5, Ctype.UINT)
    CORRELATION_ID = Field(6, Ctype.UINT)
    OPERATION_CORRELATION_ID = Field(7, Ctype.UINT)
    CACHE_SIZE = Field(8, Ctype.UINT)
    CACHE_PATH = Field(9, Ctype.CSTR)
    PROCESS_ID = Field(10, Ctype.UINT)
    THREAD_ID = Field(11, Ctype.UINT)


class GraphTrace:
    KIND = Field(0, Ctype.UINT)
    CORRELATION_ID = Field(1, Ctype.UINT)
    START = Field(2, Ctype.UINT)
    END = Field(3, Ctype.UINT)
    DEVICE_ID = Field(4, Ctype.UINT)
    GRAPH_ID = Field(5, Ctype.UINT)
    CONTEXT_ID = Field(6, Ctype.UINT)
    STREAM_ID = Field(7, Ctype.UINT)
    END_DEVICE_ID = Field(8, Ctype.UINT)
    END_CONTEXT_ID = Field(9, Ctype.UINT)


class DeviceGraphTrace:
    KIND = Field(0, Ctype.UINT)
    DEVICE_ID = Field(1, Ctype.UINT)
    START = Field(2, Ctype.UINT)
    END = Field(3, Ctype.UINT)
    GRAPH_ID = Field(4, Ctype.UINT)
    LAUNCHER_GRAPH_ID = Field(5, Ctype.UINT)
    DEVICE_LAUNCH_MODE = Field(6, Ctype.UINT)
    CONTEXT_ID = Field(7, Ctype.UINT)
    STREAM_ID = Field(8, Ctype.UINT)


class MemDecompress:
    KIND = Field(0, Ctype.UINT)
    DEVICE_ID = Field(1, Ctype.UINT)
    CONTEXT_ID = Field(2, Ctype.UINT)
    STREAM_ID = Field(3, Ctype.UINT)
    CHANNEL_ID = Field(4, Ctype.UINT)
    CHANNEL_TYPE = Field(5, Ctype.UINT)
    CORRELATION_ID = Field(6, Ctype.UINT)
    NUMBER_OF_OPERATIONS = Field(7, Ctype.UINT)
    SOURCE_BYTES = Field(8, Ctype.UINT)
    START = Field(9, Ctype.UINT)
    END = Field(10, Ctype.UINT)


class GraphHostNode:
    KIND = Field(0, Ctype.UINT)
    STREAM_ID = Field(1, Ctype.UINT)
    CONTEXT_ID = Field(2, Ctype.UINT)
    DEVICE_ID = Field(3, Ctype.UINT)
    CORRELATION_ID = Field(4, Ctype.UINT)
    GRAPH_ID = Field(5, Ctype.UINT)
    GRAPH_NODE_ID = Field(6, Ctype.UINT)
    PROCESS_ID = Field(7, Ctype.UINT)
    THREAD_ID = Field(8, Ctype.UINT)
    START = Field(9, Ctype.UINT)
    END = Field(10, Ctype.UINT)


class ComputeEngineCtxSwitch:
    KIND = Field(0, Ctype.UINT)
    CONTEXT_ID = Field(1, Ctype.UINT)
    TIMESTAMP = Field(2, Ctype.UINT)
    OPERATION_TYPE = Field(3, Ctype.UINT)


class HostLaunch:
    KIND = Field(0, Ctype.UINT)
    STREAM_ID = Field(1, Ctype.UINT)
    CONTEXT_ID = Field(2, Ctype.UINT)
    DEVICE_ID = Field(3, Ctype.UINT)
    CORRELATION_ID = Field(4, Ctype.UINT)
    PROCESS_ID = Field(5, Ctype.UINT)
    THREAD_ID = Field(6, Ctype.UINT)
    START = Field(7, Ctype.UINT)
    END = Field(8, Ctype.UINT)


class GreenContext:
    KIND = Field(0, Ctype.UINT)
    CONTEXT_ID = Field(1, Ctype.UINT)
    PARENT_CONTEXT_ID = Field(2, Ctype.UINT)
    DEVICE_ID = Field(3, Ctype.UINT)
    NUM_MULTIPROCESSORS = Field(4, Ctype.UINT)
    NUM_TPCS = Field(5, Ctype.UINT)
    LOGICAL_TPC_MASK_SIZE = Field(6, Ctype.UINT)
    LOGICAL_TPC_MASK = Field(7, Ctype.UINT)
    WORKQUEUE_RESOURCE_ID = Field(8, Ctype.UINT)
    WORKQUEUE_CONCURRENCY_LIMIT = Field(9, Ctype.UINT)
    WORKQUEUE_SHARING_SCOPE = Field(10, Ctype.UINT)


class ActivityAttr:
    """CUpti_ActivityAttribute selectors (cuptiActivitySetAttribute_v2), by name."""
    DEVICE_BUFFER_SIZE = 0
    DEVICE_BUFFER_SIZE_CDP = 1
    DEVICE_BUFFER_POOL_LIMIT = 2
    PROFILING_SEMAPHORE_POOL_SIZE = 3
    PROFILING_SEMAPHORE_POOL_LIMIT = 4
    ZEROED_OUT_ACTIVITY_BUFFER = 5
    DEVICE_BUFFER_PRE_ALLOCATE_VALUE = 6
    PROFILING_SEMAPHORE_PRE_ALLOCATE_VALUE = 7
    MEM_ALLOCATION_TYPE_HOST_PINNED = 8
    PER_THREAD_ACTIVITY_BUFFER = 9
    DEVICE_BUFFER_SIZE_DEVICE_GRAPHS = 10
    USER_DEFINED_RECORDS = 11
    MULTIPLE_SUBSCRIBER_STATE = 12
    ENABLE_HES = 13
    ENABLE_ALLOCATION_SOURCE_TRACKING = 14
    ENABLE_KERNEL_LATENCY_TIMESTAMPS = 15
    ENABLE_ALL_SYNC_RECORDS = 16
    ENABLE_CUDA_EVENT_DEVICE_TIMESTAMPS = 17
    ENABLE_KERNEL_LAUNCH_ATTRIBUTES = 18
    ENABLE_DEVICE_GRAPH_TRACE = 19
    ENABLE_MULTI_SUBSCRIBER_GRAPH_TRACE = 20
    THREAD_ID_TYPE = 21
    TIMESTAMP_CALLBACK = 22
    ENABLE_CIG_MODE = 23
