5.1. CUPTI Activity API

实现 CUPTI Activity API 的函数、类型和枚举。

数据结构

CUpti_Activity

基础活动记录。

CUpti_ActivityAPI

驱动程序或运行时 API 调用的活动记录。

CUpti_ActivityAutoBoostState

设备自动加速状态结构。

CUpti_ActivityBranch2

源级别结果分支的活动记录。

CUpti_ActivityCdpKernel

CDP (CUDA 动态并行) 内核的活动记录。

CUpti_ActivityContext3

上下文的活动记录。

CUpti_ActivityCudaEvent2

CUDA 事件的活动记录。

CUpti_ActivityDevice5

设备的活动记录。

CUpti_ActivityDeviceAttribute

设备属性的活动记录。

CUpti_ActivityDeviceGraphTrace

设备图执行跟踪的活动记录。

CUpti_ActivityEnvironment

CUPTI 环境数据的活动记录。

CUpti_ActivityEvent

CUPTI 事件的活动记录。

CUpti_ActivityEventInstance

具有实例信息的 CUPTI 事件的活动记录。

CUpti_ActivityExternalCorrelation

与外部记录关联的活动记录。

CUpti_ActivityFunction

全局/设备函数的活动记录。

CUpti_ActivityGlobalAccess3

源级别全局访问的活动记录。

CUpti_ActivityGraphTrace2

图执行跟踪的活动记录。

CUpti_ActivityInstantaneousEvent

瞬时 CUPTI 事件的活动记录。

CUpti_ActivityInstantaneousEventInstance

具有事件域实例信息的瞬时 CUPTI 事件的活动记录。

CUpti_ActivityInstantaneousMetric

瞬时 CUPTI 指标的活动记录。

CUpti_ActivityInstantaneousMetricInstance

具有实例信息的 CUPTI 指标的瞬时活动记录。

CUpti_ActivityInstructionCorrelation

源级别 sass/源行到行关联的活动记录。

CUpti_ActivityInstructionExecution

源级别指令执行的活动记录。

CUpti_ActivityJit2

JIT 操作的活动记录。

CUpti_ActivityKernel9

内核的活动记录。

CUpti_ActivityMarker2

提供标记的活动记录,标记是时间上的瞬时点。

CUpti_ActivityMarkerData

提供标记详细信息的活动记录。

CUpti_ActivityMemDecompress

解压缩操作跟踪的活动记录。

CUpti_ActivityMemcpy6

内存复制的活动记录。

CUpti_ActivityMemcpyPtoP4

点对点内存复制的活动记录。

CUpti_ActivityMemory

内存的活动记录。

CUpti_ActivityMemory4

内存的活动记录。

CUpti_ActivityMemoryPool2

内存池的活动记录。

CUpti_ActivityMemset4

memset 的活动记录。

CUpti_ActivityMetric

CUPTI 指标的活动记录。

CUpti_ActivityMetricInstance

具有实例信息的 CUPTI 指标的活动记录。

CUpti_ActivityModule

CUDA 模块的活动记录。

CUpti_ActivityName

提供名称的活动记录。

CUpti_ActivityNvLink4

NVLink 信息。

CUpti_ActivityObjectKindId

CUpti_ActivityObjectKind 指定的对象类型的标识符。

CUpti_ActivityOpenAcc

OpenAcc 记录的基础活动记录。

CUpti_ActivityOpenAccData

OpenACC 数据的活动记录。

CUpti_ActivityOpenAccLaunch

OpenACC 启动的活动记录。

CUpti_ActivityOpenAccOther

其他 OpenACC 的活动记录。

CUpti_ActivityOpenMp

OpenMp 记录的基础活动记录。

CUpti_ActivityOverhead3

CUPTI 和驱动程序开销的活动记录。

CUpti_ActivityOverheadCommandBufferFullData

为 CUPTI_ACTIVITY_OVERHEAD_COMMAND_BUFFER_FULL 提供附加数据的结构。

CUpti_ActivityPCSampling3

PC 采样的活动记录。

CUpti_ActivityPCSamplingConfig

PC 采样配置结构。

CUpti_ActivityPCSamplingRecordInfo

PC 采样的记录状态的活动记录。

CUpti_ActivityPcie

构建拓扑所需的 PCI 设备信息。

CUpti_ActivityPreemption

CDP 内核抢占的活动记录。

CUpti_ActivitySharedAccess

源级别共享访问的活动记录。

CUpti_ActivitySourceLocator

源定位符的活动记录。

CUpti_ActivityStream

CUDA 流的活动记录。

CUpti_ActivitySynchronization2

同步管理的活动记录。

CUpti_ActivityUnifiedMemoryCounter3

统一内存计数器的活动记录 (CUDA 7.0 及更高版本)

CUpti_ActivityUnifiedMemoryCounterConfig

统一内存计数器配置结构。

CUPTI_AUTO_BOOST_INVALID_CLIENT_PID

无效/未知进程 ID。

CUPTI_CORRELATION_ID_UNKNOWN

无效/未知关联 ID。

CUPTI_DECOMPRESSED_BYTES_UNKNOWN

解压缩字节的无效/未知值。

CUPTI_FUNCTION_INDEX_ID_INVALID

无效的函数索引 ID。

CUPTI_GRID_ID_UNKNOWN

无效/未知网格 ID。

CUPTI_MAX_GPUS

CUPTI_MAX_NVLINK_PORTS

最大 NVLink 端口号。

CUPTI_NVLINK_INVALID_PORT

无效/未知 NVLink 端口号。

CUPTI_SOURCE_LOCATOR_ID_UNKNOWN

指示未知源位置的源定位符 ID。

CUPTI_SYNCHRONIZATION_INVALID_VALUE

无效/未知值。

CUPTI_TIMESTAMP_UNKNOWN

开始、结束、排队、提交或完成时间的无效/未知时间戳。

枚举

CUpti_ActivityAttribute

活动属性。

CUpti_ActivityComputeApiKind

计算 API 的种类。

CUpti_ActivityEnvironmentKind

环境数据的种类。

CUpti_ActivityFlag

与活动记录关联的标志。

CUpti_ActivityInstructionClass

SASS 指令分类。

CUpti_ActivityJitEntryType

JIT 条目的类型。

CUpti_ActivityJitOperationType

JIT 编译操作的类型。

CUpti_ActivityKind

活动记录的种类。

CUpti_ActivityLaunchType

CUDA 内核启动的类型。

CUpti_ActivityMemcpyKind

内存复制的种类,指示复制的源和目标。

CUpti_ActivityMemoryKind

内存操作/复制访问的内存种类。

CUpti_ActivityMemoryOperationType

内存操作类型。

CUpti_ActivityMemoryPoolOperationType

内存池操作类型。

CUpti_ActivityMemoryPoolType

内存池类型。

CUpti_ActivityObjectKind

活动对象的种类。

CUpti_ActivityOverheadKind

活动开销的种类。

CUpti_ActivityPCSamplingPeriod

PC 采样方法的采样周期。

CUpti_ActivityPCSamplingStallReason

PC 采样活动的停顿原因。

CUpti_ActivityPartitionedGlobalCacheConfig

分区全局缓存选项。

CUpti_ActivityPreemptionKind

抢占活动的种类。

CUpti_ActivityStreamFlag

流类型。

CUpti_ActivitySynchronizationType

同步类型。

CUpti_ActivityThreadIdType

线程 ID 类型。

CUpti_ActivityUnifiedMemoryAccessType

统一内存页错误的内存访问类型。

CUpti_ActivityUnifiedMemoryCounterKind

统一内存计数器的种类。

CUpti_ActivityUnifiedMemoryCounterScope

统一内存计数器的范围(在 CUDA 7.0 中已弃用)

CUpti_ActivityUnifiedMemoryMigrationCause

统一内存计数器的迁移原因。

CUpti_ActivityUnifiedMemoryRemoteMapCause

统一内存计数器的远程内存映射原因。

CUpti_ChannelType

CUpti_ContextCigMode

CIG (图形中的 CUDA) 模式。

CUpti_DevType

连接到 NVLink 的设备的设备类型。

CUpti_DeviceGraphLaunchMode

设备图执行的启动模式。

CUpti_DeviceVirtualizationMode

指示 CUDA 设备运行的虚拟化模式。

CUpti_EnvironmentClocksThrottleReason

时钟节流的原因。

CUpti_ExternalCorrelationKind

关联支持的外部 API 的种类。

CUpti_FuncShmemLimitConfig

内核的每个块配置的共享内存限制。这应用于在占用率计算器 API 中设置 'cudaOccFuncShmemConfig' 字段。

CUpti_LinkFlag

链接标志。

CUpti_OpenAccConstructKind

OpenAcc 活动记录的 OpenAcc 父构造种类。

CUpti_OpenAccEventKind

OpenAcc 活动记录的 OpenAcc 事件种类。

CUpti_OpenMpEventKind

CUpti_PcieDeviceType

区分 PCIE 活动记录是 GPU 还是 PCI 桥的字段。

CUpti_PcieGen

PCIE 代。

函数

CUptiResult cuptiActivityConfigurePCSampling(CUcontext ctx, CUpti_ActivityPCSamplingConfig *config)

设置 PC 采样配置。

CUptiResult cuptiActivityConfigureUnifiedMemoryCounter(CUpti_ActivityUnifiedMemoryCounterConfig *config, uint32_t count)

设置统一内存计数器配置。

CUptiResult cuptiActivityDisable(CUpti_ActivityKind kind)

禁用特定类型活动记录的收集。

CUptiResult cuptiActivityDisableContext(CUcontext context, CUpti_ActivityKind kind)

禁用上下文中特定类型活动记录的收集。

CUptiResult cuptiActivityEnable(CUpti_ActivityKind kind)

启用特定类型活动记录的收集。

CUptiResult cuptiActivityEnableAllSyncRecords(uint8_t enable)

启用收集所有同步操作的记录。

CUptiResult cuptiActivityEnableAllocationSource(uint8_t enable)

启用跟踪内存分配请求的源库。

CUptiResult cuptiActivityEnableAndDump(CUpti_ActivityKind kind)

启用特定类型活动记录的收集。

CUptiResult cuptiActivityEnableContext(CUcontext context, CUpti_ActivityKind kind)

启用上下文中特定类型活动记录的收集。

CUptiResult cuptiActivityEnableDeviceGraph(uint8_t enable)

控制设备启动图的记录收集。

CUptiResult cuptiActivityEnableDriverApi(CUpti_CallbackId cbid, uint8_t enable)

控制特定 CUDA 驱动程序 API 的活动记录收集。

CUptiResult cuptiActivityEnableHWTrace(uint8_t enable)

启用通过硬件事件收集 CUDA 内核时间戳。

CUptiResult cuptiActivityEnableLatencyTimestamps(uint8_t enable)

控制内核的排队和提交时间戳的收集。

CUptiResult cuptiActivityEnableLaunchAttributes(uint8_t enable)

控制内核的启动属性的收集。

CUptiResult cuptiActivityEnableRuntimeApi(CUpti_CallbackId cbid, uint8_t enable)

控制特定 CUDA 运行时 API 的活动记录收集。

CUptiResult cuptiActivityFlush(CUcontext context, uint32_t streamId, uint32_t flag)

等待所有活动记录通过完成回调传递。

CUptiResult cuptiActivityFlushAll(uint32_t flag)

请求通过缓冲区完成回调传递活动记录。

CUptiResult cuptiActivityFlushPeriod(uint32_t time)

设置工作线程的刷新周期。

CUptiResult cuptiActivityGetAttribute(CUpti_ActivityAttribute attr, size_t *valueSize, void *value)

读取活动 API 属性。

CUptiResult cuptiActivityGetNextRecord(uint8_t *buffer, size_t validBufferSizeBytes, CUpti_Activity **record)

迭代缓冲区中的活动记录。

CUptiResult cuptiActivityGetNumDroppedRecords(CUcontext context, uint32_t streamId, size_t *dropped)

获取因缓冲区空间不足而丢弃的活动记录数。

CUptiResult cuptiActivityPopExternalCorrelationId(CUpti_ExternalCorrelationKind kind, uint64_t *lastId)

为调用线程弹出外部关联 ID。

CUptiResult cuptiActivityPushExternalCorrelationId(CUpti_ExternalCorrelationKind kind, uint64_t id)

为调用线程推送外部关联 ID。

CUptiResult cuptiActivityRegisterCallbacks(CUpti_BuffersCallbackRequestFunc funcBufferRequested, CUpti_BuffersCallbackCompleteFunc funcBufferCompleted)

向 CUPTI 注册回调函数以进行活动缓冲区处理。

CUptiResult cuptiActivityRegisterTimestampCallback(CUpti_TimestampCallbackFunc funcTimestamp)

向 CUPTI 注册回调函数以提供时间戳。

CUptiResult cuptiActivitySetAttribute(CUpti_ActivityAttribute attr, size_t *valueSize, void *value)

写入活动 API 属性。

CUptiResult cuptiComputeCapabilitySupported(int major, int minor, int *support)

检查对计算能力的支持。

CUptiResult cuptiDeviceSupported(CUdevice dev, int *support)

检查对计算设备的支持。

CUptiResult cuptiDeviceVirtualizationMode(CUdevice dev, CUpti_DeviceVirtualizationMode *mode)

查询设备的虚拟化模式。

CUptiResult cuptiFinalize(void)

将 CUPTI 从运行的进程中分离。

CUptiResult cuptiGetAutoBoostState(CUcontext context, CUpti_ActivityAutoBoostState *state)

获取自动加速状态。

CUptiResult cuptiGetContextId(CUcontext context, uint32_t *contextId)

获取上下文的 ID。

CUptiResult cuptiGetDeviceId(CUcontext context, uint32_t *deviceId)

获取设备的 ID。

CUptiResult cuptiGetGraphExecId(CUgraphExec graphExec, uint32_t *pId)

获取可执行图的唯一 ID。

CUptiResult cuptiGetGraphId(CUgraph graph, uint32_t *pId)

获取图的唯一 ID。

CUptiResult cuptiGetGraphNodeId(CUgraphNode node, uint64_t *nodeId)

获取图节点的唯一 ID。

CUptiResult cuptiGetLastError(void)

返回来自 cupti 调用或回调的最后一个错误。

CUptiResult cuptiGetStreamId(CUcontext context, CUstream stream, uint32_t *streamId)

获取流的 ID。

CUptiResult cuptiGetStreamIdEx(CUcontext context, CUstream stream, uint8_t perThreadStream, uint32_t *streamId)

获取流的 ID。

CUptiResult cuptiGetThreadIdType(CUpti_ActivityThreadIdType *type)

获取线程 ID 类型。

CUptiResult cuptiGetTimestamp(uint64_t *timestamp)

获取 CUPTI 时间戳。

CUptiResult cuptiSetThreadIdType(CUpti_ActivityThreadIdType type)

设置线程 ID 类型。

类型定义

CUpti_BuffersCallbackCompleteFunc

CUPTI 用于返回活动记录缓冲区的回调函数类型。

CUpti_BuffersCallbackRequestFunc

CUPTI 用于请求空缓冲区以存储活动记录的回调函数类型。

CUpti_TimestampCallbackFunc

CUPTI 用于请求在活动记录中使用的时间戳的回调函数类型。

5.1.1.

CUPTI_AUTO_BOOST_INVALID_CLIENT_PID

无效/未知进程 ID。

CUPTI_CORRELATION_ID_UNKNOWN

无效/未知关联 ID。

此值的关联 ID 表示活动记录没有关联。

CUPTI_DECOMPRESSED_BYTES_UNKNOWN

解压缩字节的无效/未知值。

CUPTI_FUNCTION_INDEX_ID_INVALID

无效的函数索引 ID。

CUPTI_GRID_ID_UNKNOWN

无效/未知网格 ID。

CUPTI_MAX_GPUS

最大 NVLink 端口号。

无效/未知 NVLink 端口号。

CUPTI_SOURCE_LOCATOR_ID_UNKNOWN

指示未知源位置的源定位符 ID。

没有与此值对应的实际 CUpti_ActivitySourceLocator 对象。

CUPTI_SYNCHRONIZATION_INVALID_VALUE

无效/未知值。

CUPTI_TIMESTAMP_UNKNOWN

开始、结束、排队、提交或完成时间的无效/未知时间戳。

5.1.2. 枚举

enum CUpti_ActivityAttribute

活动属性。

这些属性用于控制活动 API 的行为。

enumerator CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_SIZE

设备内存大小(以字节为单位),用于存储并发内核(活动类型 CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL)、内存复制和内存设置的分析数据,每个上下文中每个缓冲区。

该值是 size_t。

每个上下文可以分配的设备缓冲区数量有限制。用户可以使用属性 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_POOL_LIMIT 查询和设置此限制。CUPTI 不会预先分配所有缓冲区,它仅预先分配由属性 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_PRE_ALLOCATE_VALUE 设置的缓冲区。当缓冲区中的所有数据都被消耗时,它会被添加到重用池中,当需要新缓冲区时,CUPTI 会从此池中选择一个缓冲区。因此,内存占用量不会随内核数量而扩展。具有高密度内核、内存复制和内存设置的应用程序可能会导致 CUPTI 分配更多设备缓冲区。只有当重用池中的缓冲区用完时,CUPTI 才会分配另一个缓冲区。

由于缓冲区分配发生在主应用程序线程中,这可能会导致关键路径中的停顿。CUPTI 预先分配 3 个相同大小的缓冲区来缓解此问题。用户可以使用属性 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_PRE_ALLOCATE_VALUE 查询和设置预分配限制。

较大的缓冲区大小会为应用程序留下较少的设备内存。较小的缓冲区大小会增加在一次启动太多内核或内存复制或内存设置时,记录的时间戳被丢弃的风险。

此值仅适用于新的缓冲区分配。在初始化 CUDA 或创建上下文之前设置此值,以确保将其考虑用于以下分配。

默认值为 3200000 (~3MB),可以容纳最多 100,000 个内核、内存复制和内存设置的组合的分析数据。

注意:从 CUDA 12.0 Update 1 版本开始,CUPTI 默认在设备内存中分配分析缓冲区,因为这可能有助于提高跟踪运行的性能。有关更多详细信息,请参阅属性 CUPTI_ACTIVITY_ATTR_MEM_ALLOCATION_TYPE_HOST_PINNED 的描述。内存大小和最大池数量仍由属性 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_SIZECUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_POOL_LIMIT 控制。

注意:CUPTI 为每个缓冲区保留的实际设备内存量可能会更大。

enumerator CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_SIZE_CDP

设备内存大小(以字节为单位),用于存储 CDP 操作的分析数据,每个上下文中每个缓冲区。

该值是 size_t。

较大的缓冲区大小意味着更少的刷新操作,但会消耗更多的设备内存。此值仅适用于新的分配。

在初始化 CUDA 或创建上下文之前设置此值,以确保将其考虑用于以下分配。

默认值为 8388608 (8MB)。

注意:CUPTI 为每个上下文保留的实际设备内存量可能会更大。

enumerator CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_POOL_LIMIT

每个上下文的最大设备内存缓冲区数。

该值是 size_t。

对于具有高内核启动率、内存复制和内存设置的应用程序,具有更大的池限制有助于收集所有这些活动的时间戳,但代价是更大的内存占用量。有关更多详细信息,请参阅属性 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_SIZE 的描述。

设置此值不会修改当前存储的内存缓冲区数量。

在初始化 CUDA 之前设置此值,以确保不超过限制。

默认值为 250。

enumerator CUPTI_ACTIVITY_ATTR_PROFILING_SEMAPHORE_POOL_SIZE

从 CUDA 12.3 开始不支持此属性,CUPTI 不再使用分析信号量池来存储分析数据。

每个上下文可以分配的信号量池数量有限制。用户可以使用属性 CUPTI_ACTIVITY_ATTR_PROFILING_SEMAPHORE_POOL_LIMIT 查询和设置此限制。CUPTI 不会预先分配所有信号量池,它仅预先分配由属性 CUPTI_ACTIVITY_ATTR_PROFILING_SEMAPHORE_PRE_ALLOCATE_VALUE 设置的信号量池。当信号量池中的所有数据都被消耗时,它会被添加到重用池中,当需要新的信号量池时,CUPTI 会从重用池中选择一个信号量池。因此,内存占用量不会随内核数量而扩展。具有高密度内核的应用程序可能会导致 CUPTI 分配更多信号量池。只有当重用池中的信号量池用完时,CUPTI 才会分配另一个信号量池。

由于信号量池分配发生在主应用程序线程中,这可能会导致关键路径中的停顿。CUPTI 预先分配 3 个相同大小的信号量池来缓解此问题。用户可以使用属性 CUPTI_ACTIVITY_ATTR_PROFILING_SEMAPHORE_PRE_ALLOCATE_VALUE 查询和设置预分配限制。

较大的信号量池大小会为应用程序留下较少的设备内存。较小的信号量池大小会增加在一次发出/启动太多内核时,内核记录的时间戳被丢弃的风险。

此值仅适用于新的信号量池分配。在初始化 CUDA 或创建上下文之前设置此值,以确保将其考虑用于以下分配。

默认值为 25000,可以容纳最多 25,000 个内核的分析数据。

enumerator CUPTI_ACTIVITY_ATTR_PROFILING_SEMAPHORE_POOL_LIMIT

从 CUDA 12.3 开始不支持此属性,CUPTI 不再使用分析信号量池来存储分析数据。

每个上下文的最大分析信号量池数。该值是 size_t。

有关更多详细信息,请参阅属性 CUPTI_ACTIVITY_ATTR_PROFILING_SEMAPHORE_POOL_SIZE 的描述。

在初始化 CUDA 之前设置此值,以确保不超过限制。

默认值为 250。

enumerator CUPTI_ACTIVITY_ATTR_ZEROED_OUT_ACTIVITY_BUFFER

指示用户是否应提供零值活动缓冲区的标志。

该值是 uint8_t。

如果此属性的值为非零,则用户应在 CUpti_BuffersCallbackRequestFunc 中提供零值缓冲区。如果用户在设置为非零后未提供零值缓冲区,则当 CUPTI 在 CUpti_BuffersCallbackCompleteFunc 中返回活动缓冲区时,该缓冲区可能包含一些未初始化的值

如果此属性的值为零,则 CUPTI 将在填充用户缓冲区之前,将 CUpti_BuffersCallbackRequestFunc 中接收到的用户缓冲区初始化为零。如果用户将其设置为零,则在关键路径中可能会出现一些停顿,因为 CUPTI 将在主线程中清零缓冲区。在从 CUpti_BuffersCallbackRequestFunc 返回之前设置此值,以确保所有后续用户缓冲区都考虑此值。

默认值为 0。

enumerator CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_PRE_ALLOCATE_VALUE

在初始化阶段为上下文预分配的设备缓冲区数量。

该值是 size_t。

有关详细信息,请参阅属性 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_SIZE 的描述。

此值必须小于使用属性 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_POOL_LIMIT 设置的最大设备缓冲区数量。

在初始化 CUDA 或创建上下文之前设置此值,以确保 CUPTI 考虑此值。

默认值设置为 3,以便在这些缓冲区之间进行乒乓操作(如果可能)。

enumerator CUPTI_ACTIVITY_ATTR_PROFILING_SEMAPHORE_PRE_ALLOCATE_VALUE

从 CUDA 12.3 开始不支持此属性,CUPTI 不再使用分析信号量池来存储分析数据。

在初始化阶段为上下文预分配的分析信号量池的数量。该值是一个 size_t。

有关详细信息,请参阅属性 CUPTI_ACTIVITY_ATTR_PROFILING_SEMAPHORE_POOL_SIZE 的描述。

此值必须小于使用属性 CUPTI_ACTIVITY_ATTR_PROFILING_SEMAPHORE_POOL_LIMIT 设置的最大分析信号量池数量。

在初始化 CUDA 或创建上下文之前设置此值,以确保 CUPTI 考虑此值。

默认值设置为 3,以便在这些池之间进行乒乓操作(如果可能)。

enumerator CUPTI_ACTIVITY_ATTR_MEM_ALLOCATION_TYPE_HOST_PINNED

为并发内核、内存复制和内存设置分配页锁定(pinned)主机内存,用于存储上下文中每个缓冲区的分析数据。

该值是 uint8_t。

从 CUDA 11.2 版本开始,CUPTI 默认在 pinned 主机内存中分配分析缓冲区,因为这可能有助于提高跟踪运行的性能。分配过多的 pinned 内存可能会降低系统性能,因为它减少了系统可用于分页的内存量。因此,用户可能希望通过将此属性的值设置为 0,将位置从 pinned 主机内存更改为设备内存。

保密计算设备不支持使用页锁定(pinned)主机内存缓冲区。如果将此属性设置为 1,CUPTI 将返回 CUPTI_ERROR_NOT_SUPPORTED。

默认值为 1。

enumerator CUPTI_ACTIVITY_ATTR_PER_THREAD_ACTIVITY_BUFFER

请求每个线程的活动缓冲区,以在每个线程的基础上将 CUPTI 活动记录存储在活动缓冲区中。

该值是 uint8_t。

应在通过 cuptiActivityRegisterCallbacks API 注册缓冲区回调之前,以及在启用任何 CUPTI 活动类型之前设置此属性。这确保所有记录都存储在每个线程分配的活动缓冲区中。在分析会话中间更改此属性将导致未定义的行为。

默认值为 0。

enumerator CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_FORCE_INT
enum CUpti_ActivityComputeApiKind

计算 API 的种类。

enumerator CUPTI_ACTIVITY_COMPUTE_API_UNKNOWN

计算 API 未知。

enumerator CUPTI_ACTIVITY_COMPUTE_API_CUDA

计算 API 用于 CUDA。

enumerator CUPTI_ACTIVITY_COMPUTE_API_CUDA_MPS

计算 API 用于在 MPS(多进程服务)环境中运行的 CUDA。

enumerator CUPTI_ACTIVITY_COMPUTE_API_FORCE_INT
enum CUpti_ActivityEnvironmentKind

环境数据的种类。

用于指示环境活动记录报告的数据类型。

enumerator CUPTI_ACTIVITY_ENVIRONMENT_UNKNOWN

未知数据。

enumerator CUPTI_ACTIVITY_ENVIRONMENT_SPEED

环境数据与速度相关。

enumerator CUPTI_ACTIVITY_ENVIRONMENT_TEMPERATURE

环境数据与温度相关。

enumerator CUPTI_ACTIVITY_ENVIRONMENT_POWER

环境数据与功耗相关。

enumerator CUPTI_ACTIVITY_ENVIRONMENT_COOLING

环境数据与散热相关。

enumerator CUPTI_ACTIVITY_ENVIRONMENT_COUNT
enumerator CUPTI_ACTIVITY_ENVIRONMENT_KIND_FORCE_INT
enum CUpti_ActivityFlag

与活动记录关联的标志。

活动记录标志。标志可以通过按位 OR 组合,以将多个标志与活动记录关联。每个标志都特定于某种活动类型,如下所述。

enumerator CUPTI_ACTIVITY_FLAG_NONE

表示活动记录没有标志。

enumerator CUPTI_ACTIVITY_FLAG_DEVICE_CONCURRENT_KERNELS

表示该设备支持并发内核执行。

对 CUPTI_ACTIVITY_KIND_DEVICE 有效。

enumerator CUPTI_ACTIVITY_FLAG_DEVICE_ATTRIBUTE_CUDEVICE

指示活动表示 CUdevice_attribute 值还是 CUpti_DeviceAttribute 值。

对 CUPTI_ACTIVITY_KIND_DEVICE_ATTRIBUTE 有效。

enumerator CUPTI_ACTIVITY_FLAG_MEMCPY_ASYNC

表示活动表示异步 memcpy 操作。

对 CUPTI_ACTIVITY_KIND_MEMCPY 有效。

enumerator CUPTI_ACTIVITY_FLAG_MARKER_INSTANTANEOUS

表示活动表示瞬时标记。

对 CUPTI_ACTIVITY_KIND_MARKER 有效。

enumerator CUPTI_ACTIVITY_FLAG_MARKER_START

表示活动表示区域开始标记。

对 CUPTI_ACTIVITY_KIND_MARKER 有效。

enumerator CUPTI_ACTIVITY_FLAG_MARKER_END

表示活动表示区域结束标记。

对 CUPTI_ACTIVITY_KIND_MARKER 有效。

enumerator CUPTI_ACTIVITY_FLAG_MARKER_SYNC_ACQUIRE

表示活动表示尝试获取用户定义的同步对象。

对 CUPTI_ACTIVITY_KIND_MARKER 有效。

enumerator CUPTI_ACTIVITY_FLAG_MARKER_SYNC_ACQUIRE_SUCCESS

表示活动表示成功获取用户定义的同步对象。

对 CUPTI_ACTIVITY_KIND_MARKER 有效。

enumerator CUPTI_ACTIVITY_FLAG_MARKER_SYNC_ACQUIRE_FAILED

表示活动表示未能获取用户定义的同步对象。

对 CUPTI_ACTIVITY_KIND_MARKER 有效。

enumerator CUPTI_ACTIVITY_FLAG_MARKER_SYNC_RELEASE

表示活动表示释放用户定义的同步对象上的保留。

对 CUPTI_ACTIVITY_KIND_MARKER 有效。

enumerator CUPTI_ACTIVITY_FLAG_MARKER_COLOR_NONE

表示活动表示不指定颜色的标记。

对 CUPTI_ACTIVITY_KIND_MARKER_DATA 有效。

enumerator CUPTI_ACTIVITY_FLAG_MARKER_COLOR_ARGB

表示活动表示以 alpha-红-绿-蓝格式指定颜色的标记。

对 CUPTI_ACTIVITY_KIND_MARKER_DATA 有效。

enumerator CUPTI_ACTIVITY_FLAG_GLOBAL_ACCESS_KIND_SIZE_MASK

每个线程请求的字节数。对 CUpti_ActivityGlobalAccess3 有效。

enumerator CUPTI_ACTIVITY_FLAG_GLOBAL_ACCESS_KIND_LOAD

如果此标志中的位已设置,则访问是加载,否则是存储访问。

CUpti_ActivityGlobalAccess3 有效。

enumerator CUPTI_ACTIVITY_FLAG_GLOBAL_ACCESS_KIND_CACHED

如果此标志中的位已设置,则加载访问已缓存,否则未缓存。

CUpti_ActivityGlobalAccess3 有效。

enumerator CUPTI_ACTIVITY_FLAG_METRIC_OVERFLOWED

如果此标志中的位已设置,则指标值溢出。

CUpti_ActivityMetricCUpti_ActivityMetricInstance 有效。

enumerator CUPTI_ACTIVITY_FLAG_METRIC_VALUE_INVALID

如果此标志中的位已设置,则无法计算指标值。

当计算指标所需的值缺失时,会发生这种情况。对 CUpti_ActivityMetricCUpti_ActivityMetricInstance 有效。

enumerator CUPTI_ACTIVITY_FLAG_INSTRUCTION_VALUE_INVALID

如果此标志中的位已设置,则无法计算源级别指标值。

当无法评估计算源级别指标所需的值时,会发生这种情况。对 CUpti_ActivityInstructionExecution 有效。

enumerator CUPTI_ACTIVITY_FLAG_INSTRUCTION_CLASS_MASK

指令类别的掩码,CUpti_ActivityInstructionClass。对 CUpti_ActivityInstructionExecutionCUpti_ActivityInstructionCorrelation 有效。

enumerator CUPTI_ACTIVITY_FLAG_FLUSH_FORCED

当调用 cuptiActivityFlushAll 时,可以设置此标志以强制 CUPTI 刷新缓冲区中的所有记录,无论是否已完成。

enumerator CUPTI_ACTIVITY_FLAG_SHARED_ACCESS_KIND_SIZE_MASK

每个线程请求的字节数。对 CUpti_ActivitySharedAccess 有效。

enumerator CUPTI_ACTIVITY_FLAG_SHARED_ACCESS_KIND_LOAD

如果此标志中的位已设置,则访问是加载,否则是存储访问。

CUpti_ActivitySharedAccess 有效。

enumerator CUPTI_ACTIVITY_FLAG_MEMSET_ASYNC

表示活动表示异步 memset 操作。

对 CUPTI_ACTIVITY_KIND_MEMSET 有效。

enumerator CUPTI_ACTIVITY_FLAG_THRASHING_IN_CPU

表示活动表示 CPU 中的抖动。

对 CUPTI_ACTIVITY_KIND_UNIFIED_MEMORY_COUNTER 中 CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_THRASHING 类型的计数器有效。

enumerator CUPTI_ACTIVITY_FLAG_THROTTLING_IN_CPU

表示活动表示 CPU 中的页面限制。

对 CUPTI_ACTIVITY_KIND_UNIFIED_MEMORY_COUNTER 中 CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_THROTTLING 类型的计数器有效。

enumerator CUPTI_ACTIVITY_FLAG_FORCE_INT
enum CUpti_ActivityInstructionClass

SASS 指令分类。

sass 指令大致分为不同的类别。每个枚举代表一个分类。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_UNKNOWN

指令类别未知。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_FP_32

表示 32 位浮点运算。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_FP_64

表示 64 位浮点运算。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_INTEGER

表示整数运算。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_BIT_CONVERSION

表示位转换运算。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_CONTROL_FLOW

表示控制流指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_GLOBAL

表示全局加载-存储指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_SHARED

表示共享加载-存储指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_LOCAL

表示本地加载-存储指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_GENERIC

表示通用加载-存储指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_SURFACE

表示表面加载-存储指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_CONSTANT

表示常量加载指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_TEXTURE

表示纹理加载-存储指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_GLOBAL_ATOMIC

表示全局原子指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_SHARED_ATOMIC

表示共享原子指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_SURFACE_ATOMIC

表示表面原子指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_INTER_THREAD_COMMUNICATION

表示线程间通信指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_BARRIER

表示屏障指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_MISCELLANEOUS

表示一些不属于上述分类的杂项指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_FP_16

表示 16 位浮点运算。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_UNIFORM

表示统一指令。

enumerator CUPTI_ACTIVITY_INSTRUCTION_CLASS_KIND_FORCE_INT
enum CUpti_ActivityJitEntryType

JIT 条目的类型。

用于 CUpti_ActivityJit

enumerator CUPTI_ACTIVITY_JIT_ENTRY_INVALID
enumerator CUPTI_ACTIVITY_JIT_ENTRY_PTX_TO_CUBIN

PTX 到 CUBIN。

enumerator CUPTI_ACTIVITY_JIT_ENTRY_NVVM_IR_TO_PTX

NVVM-IR 到 PTX。

enumerator CUPTI_ACTIVITY_JIT_ENTRY_TYPE_FORCE_INT
enum CUpti_ActivityJitOperationType

JIT 编译操作的类型。

用于 CUpti_ActivityJit

enumerator CUPTI_ACTIVITY_JIT_OPERATION_INVALID
enumerator CUPTI_ACTIVITY_JIT_OPERATION_CACHE_LOAD

从计算缓存加载。

enumerator CUPTI_ACTIVITY_JIT_OPERATION_CACHE_STORE

存储在计算缓存中。

enumerator CUPTI_ACTIVITY_JIT_OPERATION_COMPILE

JIT 编译。

enumerator CUPTI_ACTIVITY_JIT_OPERATION_TYPE_FORCE_INT
enum CUpti_ActivityKind

活动记录的种类。

每种活动记录类型表示关于 GPU 或 CPU 或 GPU 上发生的活动的信息。每种类型都与一个活动记录结构相关联,该结构保存与该类型关联的信息。

另请参阅

CUpti_Activity

另请参阅

CUpti_ActivityAPI

另请参阅

CUpti_ActivityContext

另请参阅

CUpti_ActivityContext2

另请参阅

CUpti_ActivityContext3

另请参阅

CUpti_ActivityDevice

另请参阅

CUpti_ActivityDevice2

另请参阅

CUpti_ActivityDevice3

另请参阅

CUpti_ActivityDevice4

另请参阅

CUpti_ActivityEvent

另请参阅

CUpti_ActivityKernel

另请参阅

CUpti_ActivityKernel2

另请参阅

CUpti_ActivityKernel3

另请参阅

CUpti_ActivityKernel4

另请参阅

CUpti_ActivityKernel5

另请参阅

CUpti_ActivityKernel6

另请参阅

CUpti_ActivityKernel7

另请参阅

CUpti_ActivityKernel8

另请参阅

CUpti_ActivityKernel9

另请参阅

CUpti_ActivityMemcpy

另请参阅

CUpti_ActivityMemcpy3

另请参阅

CUpti_ActivityMemcpy4

另请参阅

CUpti_ActivityMemcpy5

另请参阅

CUpti_ActivityMemcpy6

另请参阅

CUpti_ActivityMemset

另请参阅

CUpti_ActivityMemset2

另请参阅

CUpti_ActivityMemset3

另请参阅

CUpti_ActivityMemset4

另请参阅

CUpti_ActivityMemory

另请参阅

CUpti_ActivityMemory2

另请参阅

CUpti_ActivityMemory3

另请参阅

CUpti_ActivityMemory4

另请参阅

CUpti_ActivityMetric

另请参阅

CUpti_ActivityName

另请参阅

CUpti_ActivityMarker

另请参阅

CUpti_ActivityMarker2

另请参阅

CUpti_ActivityBranch

另请参阅

CUpti_ActivityBranch2

另请参阅

CUpti_ActivityFunction

另请参阅

CUpti_ActivityModule

另请参阅

CUpti_ActivityStream

另请参阅

CUpti_ActivityOpenMp

另请参阅

CUpti_ActivityNvLink

另请参阅

CUpti_ActivityNvLink2

另请参阅

CUpti_ActivityNvLink3

另请参阅

CUpti_ActivityNvLink4

另请参阅

CUpti_ActivityPcie

另请参阅

CUpti_ActivityConfidentialComputeRotation

enumerator CUPTI_ACTIVITY_KIND_INVALID

活动记录无效。

enumerator CUPTI_ACTIVITY_KIND_MEMCPY

主机<->主机、主机<->设备或设备<->设备内存复制。

对于对等内存复制,请使用类型 CUPTI_ACTIVITY_KIND_MEMCPY2。相应的活动记录结构是 CUpti_ActivityMemcpy6

enumerator CUPTI_ACTIVITY_KIND_MEMSET

在 GPU 上执行的内存设置。

相应的活动记录结构是 CUpti_ActivityMemset4

enumerator CUPTI_ACTIVITY_KIND_KERNEL

在 GPU 上执行的内核。

此活动类型可能会显著改变应用程序的整体性能特征,因为所有内核执行都在 GPU 上串行化。内核的其他活动类型 CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL 不会破坏内核并发性。相应的活动记录结构是 CUpti_ActivityKernel9

enumerator CUPTI_ACTIVITY_KIND_DRIVER

CUDA 驱动程序 API 函数执行。

相应的活动记录结构是 CUpti_ActivityAPI

enumerator CUPTI_ACTIVITY_KIND_RUNTIME

CUDA 运行时 API 函数执行。

相应的活动记录结构是 CUpti_ActivityAPI

enumerator CUPTI_ACTIVITY_KIND_EVENT

性能计数器(又称事件)值。

相应的活动记录结构是 CUpti_ActivityEvent。此活动无法直接启用或禁用。使用 Event API 收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_METRIC

性能指标值。

相应的活动记录结构是 CUpti_ActivityMetric。此活动无法直接启用或禁用。使用 Metric API 收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_DEVICE

关于 CUDA 设备的信息。

相应的活动记录结构是 CUpti_ActivityDevice5

enumerator CUPTI_ACTIVITY_KIND_CONTEXT

关于 CUDA 上下文的信息。

相应的活动记录结构是 CUpti_ActivityContext3

enumerator CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL

在 GPU 上执行的内核。

此活动类型不会破坏内核并发性。相应的活动记录结构是 CUpti_ActivityKernel9

enumerator CUPTI_ACTIVITY_KIND_NAME

通过 NVTX API 完成的线程、设备、上下文等资源命名。

相应的活动记录结构是 CUpti_ActivityName

enumerator CUPTI_ACTIVITY_KIND_MARKER

瞬时、开始或结束 NVTX 标记。

相应的活动记录结构是 CUpti_ActivityMarker2

enumerator CUPTI_ACTIVITY_KIND_MARKER_DATA

关于 NVTX 标记的扩展、可选数据。

用户还必须启用 CUPTI_ACTIVITY_KIND_MARKER 才能获取标记数据的记录。相应的活动记录结构是 CUpti_ActivityMarkerData

enumerator CUPTI_ACTIVITY_KIND_SOURCE_LOCATOR

关于源级别结果的源信息。

相应的活动记录结构是 CUpti_ActivitySourceLocator。在 CUDA 12.6 中,对于 Volta 及更高版本的 GPU 架构,此类型已被弃用,建议使用 cupti_sass_metrics.h 头文件中的 SASS 指标 API。

enumerator CUPTI_ACTIVITY_KIND_GLOBAL_ACCESS

源级别全局访问的结果。

相应的活动记录结构是 CUpti_ActivityGlobalAccess3。在 CUDA 12.6 中,对于 Volta 及更高版本的 GPU 架构,此类型已被弃用,建议使用 cupti_sass_metrics.h 头文件中的 SASS 指标 API。

enumerator CUPTI_ACTIVITY_KIND_BRANCH

源级别分支的结果。

相应的活动记录结构是 CUpti_ActivityBranch2。在 CUDA 12.6 中,对于 Volta 及更高版本的 GPU 架构,此类型已被弃用,建议使用 cupti_sass_metrics.h 头文件中的 SASS 指标 API。

enumerator CUPTI_ACTIVITY_KIND_OVERHEAD

由 CUPTI、编译器、CUDA 驱动程序等添加的开销。

相应的活动记录结构是 CUpti_ActivityOverhead3

enumerator CUPTI_ACTIVITY_KIND_CDP_KERNEL

在 GPU 上执行的 CDP(CUDA 动态并行)内核。

相应的活动记录结构是 CUpti_ActivityCdpKernel。此活动无法直接启用或禁用。它通过并发内核活动(即 _CONCURRENT_KERNEL)启用和禁用。

enumerator CUPTI_ACTIVITY_KIND_PREEMPTION

抢占活动记录,指示 GPU 上执行的 CDP(CUDA 动态并行)内核的抢占。

相应的活动记录结构是 CUpti_ActivityPreemption

enumerator CUPTI_ACTIVITY_KIND_ENVIRONMENT

环境活动记录,指示 GPU 的功耗、时钟、热量等水平。

相应的活动记录结构是 CUpti_ActivityEnvironment

enumerator CUPTI_ACTIVITY_KIND_EVENT_INSTANCE

与特定事件域实例关联的性能计数器值。

相应的活动记录结构是 CUpti_ActivityEventInstance。此活动无法直接启用或禁用。使用 Event API 收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_MEMCPY2

对等内存复制。

相应的活动记录结构是 CUpti_ActivityMemcpyPtoP4

enumerator CUPTI_ACTIVITY_KIND_METRIC_INSTANCE

与特定指标域实例关联的性能指标值。

相应的活动记录结构是 CUpti_ActivityMetricInstance。此活动无法直接启用或禁用。使用 Metric API 收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_INSTRUCTION_EXECUTION

源级别指令执行的结果。

相应的活动记录结构是 CUpti_ActivityInstructionExecution。在 CUDA 12.6 中,对于 Volta 及更高版本的 GPU 架构,此类型已被弃用,建议使用 cupti_sass_metrics.h 头文件中的 SASS 指标 API。

enumerator CUPTI_ACTIVITY_KIND_UNIFIED_MEMORY_COUNTER

统一内存计数器记录。

相应的活动记录结构是 CUpti_ActivityUnifiedMemoryCounter3

enumerator CUPTI_ACTIVITY_KIND_FUNCTION

设备全局/函数记录。

相应的活动记录结构是 CUpti_ActivityFunction

enumerator CUPTI_ACTIVITY_KIND_MODULE

CUDA 模块记录。

相应的活动记录结构是 CUpti_ActivityModule。此活动无法直接启用或禁用。使用模块回调收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_DEVICE_ATTRIBUTE

设备属性值。

相应的活动记录结构是 CUpti_ActivityDeviceAttribute。此活动无法直接启用或禁用。使用属性 CUpti_DeviceAttribute 或 CUdevice_attribute 收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_SHARED_ACCESS

源级别共享访问的结果。

相应的活动记录结构是 CUpti_ActivitySharedAccess。在 CUDA 12.6 中,对于 Volta 及更高版本的 GPU 架构,此类型已被弃用,建议使用 cupti_sass_metrics.h 头文件中的 SASS 指标 API。

enumerator CUPTI_ACTIVITY_KIND_PC_SAMPLING

内核的 PC 采样信息。

这将串行化内核。相应的活动记录结构是 CUpti_ActivityPCSampling3。在 CUDA 12.5 中,对于 Volta 及更高版本的 GPU 架构,此类型已被弃用,建议使用 cupti_pcsampling.h 头文件中的 PC 采样 API,该 API 允许并发内核执行。

enumerator CUPTI_ACTIVITY_KIND_PC_SAMPLING_RECORD_INFO

关于 PC 采样记录的摘要信息。

对应的活动记录结构是 CUpti_ActivityPCSamplingRecordInfo。在 CUDA 12.5 中,Volta 及更新的 GPU 架构已弃用此类型,推荐使用 cupti_pcsampling.h 头文件中的 PC 采样 API。

enumerator CUPTI_ACTIVITY_KIND_INSTRUCTION_CORRELATION

SASS/源代码逐行关联记录。

这将为具有源代码级分析或 PC 采样结果的函数生成 sass/源代码关联。只有在启用源代码级分析或 PC 采样活动时才会生成记录。对应的活动记录结构是 CUpti_ActivityInstructionCorrelation。在 CUDA 12.6 中,Volta 及更新的 GPU 架构已弃用此类型,推荐使用 cupti_sass_metrics.h 头文件中的 SASS 指标 API。

enumerator CUPTI_ACTIVITY_KIND_OPENACC_DATA

OpenACC 数据事件。

对应的活动记录结构是 CUpti_ActivityOpenAccData

enumerator CUPTI_ACTIVITY_KIND_OPENACC_LAUNCH

OpenACC 启动事件。

对应的活动记录结构是 CUpti_ActivityOpenAccLaunch

enumerator CUPTI_ACTIVITY_KIND_OPENACC_OTHER

OpenACC 其他事件。

对应的活动记录结构是 CUpti_ActivityOpenAccOther

enumerator CUPTI_ACTIVITY_KIND_CUDA_EVENT

关于 CUDA 事件 (cudaEvent) 的信息。

此活动无法直接启用或禁用。它通过活动 CUPTI_ACTIVITY_KIND_SYNCHRONIZATION 启用和禁用。对应的活动记录结构是 CUpti_ActivityCudaEvent2

enumerator CUPTI_ACTIVITY_KIND_STREAM

关于 CUDA 流的信息。

对应的活动记录结构是 CUpti_ActivityStream

enumerator CUPTI_ACTIVITY_KIND_SYNCHRONIZATION

CUDA 同步原语的记录。

对应的活动记录结构是 CUpti_ActivitySynchronization2

enumerator CUPTI_ACTIVITY_KIND_EXTERNAL_CORRELATION

不同编程 API 关联的记录。

对应的活动记录结构是 CUpti_ActivityExternalCorrelation

enumerator CUPTI_ACTIVITY_KIND_NVLINK

NVLink 拓扑信息。

对应的活动记录结构是 CUpti_ActivityNvLink4

enumerator CUPTI_ACTIVITY_KIND_INSTANTANEOUS_EVENT

瞬时事件信息。

对应的活动记录结构是 CUpti_ActivityInstantaneousEvent。此活动无法直接启用或禁用。使用 Event API 收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_INSTANTANEOUS_EVENT_INSTANCE

特定事件域实例的瞬时事件信息。

对应的活动记录结构是 CUpti_ActivityInstantaneousEventInstance。此活动无法直接启用或禁用。使用 Event API 收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_INSTANTANEOUS_METRIC

瞬时指标信息。对应的活动记录结构是 CUpti_ActivityInstantaneousMetric

此活动无法直接启用或禁用。使用 Metric API 收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_INSTANTANEOUS_METRIC_INSTANCE

特定指标域实例的瞬时指标信息。

对应的活动记录结构是 CUpti_ActivityInstantaneousMetricInstance。此活动无法直接启用或禁用。使用 Metric API 收集的信息可以存储在相应的活动记录中。

enumerator CUPTI_ACTIVITY_KIND_MEMORY

内存活动跟踪内存的分配和释放。对应的活动记录结构是 CUpti_ActivityMemory

enumerator CUPTI_ACTIVITY_KIND_PCIE

用于 PCI 拓扑的 PCI 设备信息。

对应的活动记录结构是 CUpti_ActivityPcie

enumerator CUPTI_ACTIVITY_KIND_OPENMP

OpenMP 并行事件。

对应的活动记录结构是 CUpti_ActivityOpenMp

enumerator CUPTI_ACTIVITY_KIND_INTERNAL_LAUNCH_API

在任何公共 API 函数执行之外发生的 CUDA 驱动程序内核启动。

工具可以像处理驱动程序 API 启动函数的记录一样处理这些,尽管此处未使用 cbid 字段。对应的活动记录结构是 CUpti_ActivityAPI

enumerator CUPTI_ACTIVITY_KIND_MEMORY2

内存活动跟踪内存的分配和释放。对应的活动记录结构是 CUpti_ActivityMemory4

enumerator CUPTI_ACTIVITY_KIND_MEMORY_POOL

内存池活动跟踪内存池的创建、销毁和修剪。

对应的活动记录结构是 CUpti_ActivityMemoryPool2

enumerator CUPTI_ACTIVITY_KIND_GRAPH_TRACE

图级别信息的活动记录。

对应的活动记录结构是 CUpti_ActivityGraphTrace2

enumerator CUPTI_ACTIVITY_KIND_JIT

JIT(即时)操作跟踪。

对应的活动记录结构是 CUpti_ActivityJit

enumerator CUPTI_ACTIVITY_KIND_DEVICE_GRAPH_TRACE

此活动无法直接启用或禁用。

当启用 CUPTI_ACTIVITY_KIND_GRAPH_TRACE 并且通过 API cuptiActivityEnableDeviceGraph() 启用设备图跟踪时,此活动将被启用。对应的活动记录结构是 CUpti_ActivityDeviceGraphTrace

enumerator CUPTI_ACTIVITY_KIND_MEM_DECOMPRESS

跟踪要解压缩的复制批次。

对应的活动记录结构是 CUpti_ActivityMemDecompress

enumerator CUPTI_ACTIVITY_KIND_COUNT

支持的活动类型计数。

enumerator CUPTI_ACTIVITY_KIND_FORCE_INT
enum CUpti_ActivityLaunchType

CUDA 内核启动的类型。

enumerator CUPTI_ACTIVITY_LAUNCH_TYPE_REGULAR

内核通过常规内核调用启动。

enumerator CUPTI_ACTIVITY_LAUNCH_TYPE_COOPERATIVE_SINGLE_DEVICE

内核通过 API cudaLaunchCooperativeKernel() 或 cuLaunchCooperativeKernel() 启动

enumerator CUPTI_ACTIVITY_LAUNCH_TYPE_COOPERATIVE_MULTI_DEVICE

内核通过 API cudaLaunchCooperativeKernelMultiDevice() 或 cuLaunchCooperativeKernelMultiDevice() 启动

enumerator CUPTI_ACTIVITY_LAUNCH_TYPE_CBL_COMMANDLIST

内核作为 CBL 命令列表启动。

enum CUpti_ActivityMemcpyKind

内存复制的种类,指示复制的源和目标。

每种类型代表内存复制的源和目标。目标是主机、设备和数组。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_UNKNOWN

内存复制类型未知。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_HTOD

主机到设备内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_DTOH

设备到主机内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_HTOA

主机到设备数组内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_ATOH

设备数组到主机内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_ATOA

设备数组到设备数组内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_ATOD

设备数组到设备内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_DTOA

设备到设备数组内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_DTOD

同一设备上的设备到设备内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_HTOH

主机到主机内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_PTOP

跨不同设备的对等内存复制。

enumerator CUPTI_ACTIVITY_MEMCPY_KIND_FORCE_INT
enum CUpti_ActivityMemoryKind

内存操作/复制访问的内存种类。

每种类型代表内存操作/复制访问的内存类型。

enumerator CUPTI_ACTIVITY_MEMORY_KIND_UNKNOWN

内存类型未知。

enumerator CUPTI_ACTIVITY_MEMORY_KIND_PAGEABLE

内存是可分页的。

enumerator CUPTI_ACTIVITY_MEMORY_KIND_PINNED

内存是已锁定的。

enumerator CUPTI_ACTIVITY_MEMORY_KIND_DEVICE

内存位于设备上。

enumerator CUPTI_ACTIVITY_MEMORY_KIND_ARRAY

内存是一个数组。

enumerator CUPTI_ACTIVITY_MEMORY_KIND_MANAGED

内存是托管的。

enumerator CUPTI_ACTIVITY_MEMORY_KIND_DEVICE_STATIC

内存是设备静态的。

enumerator CUPTI_ACTIVITY_MEMORY_KIND_MANAGED_STATIC

内存是托管静态的。

enumerator CUPTI_ACTIVITY_MEMORY_KIND_FORCE_INT
enum CUpti_ActivityMemoryOperationType

内存操作类型。

描述内存操作的类型,与 CUpti_ActivityMemory4 一起使用。

enumerator CUPTI_ACTIVITY_MEMORY_OPERATION_TYPE_INVALID

操作无效。

enumerator CUPTI_ACTIVITY_MEMORY_OPERATION_TYPE_ALLOCATION

内存已分配。

enumerator CUPTI_ACTIVITY_MEMORY_OPERATION_TYPE_RELEASE

内存已释放。

enumerator CUPTI_ACTIVITY_MEMORY_OPERATION_TYPE_FORCE_INT
enum CUpti_ActivityMemoryPoolOperationType

内存池操作类型。

描述内存池操作的类型,与 CUpti_ActivityMemoryPool2 一起使用。

enumerator CUPTI_ACTIVITY_MEMORY_POOL_OPERATION_TYPE_INVALID

操作无效。

enumerator CUPTI_ACTIVITY_MEMORY_POOL_OPERATION_TYPE_CREATED

内存池已创建。

enumerator CUPTI_ACTIVITY_MEMORY_POOL_OPERATION_TYPE_DESTROYED

内存池已销毁。

enumerator CUPTI_ACTIVITY_MEMORY_POOL_OPERATION_TYPE_TRIMMED

内存池已被修剪。

enumerator CUPTI_ACTIVITY_MEMORY_POOL_OPERATION_TYPE_FORCE_INT
enum CUpti_ActivityMemoryPoolType

内存池类型。

描述内存池的类型,与 CUpti_ActivityMemory4 一起使用。

enumerator CUPTI_ACTIVITY_MEMORY_POOL_TYPE_INVALID

操作无效。

enumerator CUPTI_ACTIVITY_MEMORY_POOL_TYPE_LOCAL

内存池是进程本地的。

enumerator CUPTI_ACTIVITY_MEMORY_POOL_TYPE_IMPORTED

内存池由进程导入。

enumerator CUPTI_ACTIVITY_MEMORY_POOL_TYPE_FORCE_INT
enum CUpti_ActivityObjectKind

活动对象的种类。

enumerator CUPTI_ACTIVITY_OBJECT_UNKNOWN

对象类型未知。

enumerator CUPTI_ACTIVITY_OBJECT_PROCESS

一个进程。

enumerator CUPTI_ACTIVITY_OBJECT_THREAD

一个线程。

enumerator CUPTI_ACTIVITY_OBJECT_DEVICE

一个设备。

enumerator CUPTI_ACTIVITY_OBJECT_CONTEXT

一个上下文。

enumerator CUPTI_ACTIVITY_OBJECT_STREAM

一个流。

enumerator CUPTI_ACTIVITY_OBJECT_FORCE_INT
enum CUpti_ActivityOverheadKind

活动开销的种类。

enumerator CUPTI_ACTIVITY_OVERHEAD_UNKNOWN

开销类型未知。

enumerator CUPTI_ACTIVITY_OVERHEAD_DRIVER_COMPILER

编译器开销。

enumerator CUPTI_ACTIVITY_OVERHEAD_CUPTI_BUFFER_FLUSH

活动缓冲区刷新开销。

enumerator CUPTI_ACTIVITY_OVERHEAD_CUPTI_INSTRUMENTATION

CUPTI Instrumentation 开销。

enumerator CUPTI_ACTIVITY_OVERHEAD_CUPTI_RESOURCE

CUPTI 资源创建和销毁开销。

enumerator CUPTI_ACTIVITY_OVERHEAD_RUNTIME_TRIGGERED_MODULE_LOADING

CUDA 运行时触发的模块加载开销。

enumerator CUPTI_ACTIVITY_OVERHEAD_LAZY_FUNCTION_LOADING

延迟函数加载开销。

enumerator CUPTI_ACTIVITY_OVERHEAD_COMMAND_BUFFER_FULL

由于缺少命令缓冲区空间导致的开销。

有关更多详细信息,请参阅 CUpti_ActivityOverheadCommandBufferFullData

enumerator CUPTI_ACTIVITY_OVERHEAD_ACTIVITY_BUFFER_REQUEST

由于活动缓冲区请求导致的开销。

enumerator CUPTI_ACTIVITY_OVERHEAD_UVM_ACTIVITY_INIT

由于 UVM 活动初始化导致的开销。

enumerator CUPTI_ACTIVITY_OVERHEAD_FORCE_INT
enum CUpti_ActivityPCSamplingPeriod

PC 采样方法的采样周期。

采样周期可以使用 cuptiActivityConfigurePCSampling 进行设置

enumerator CUPTI_ACTIVITY_PC_SAMPLING_PERIOD_INVALID

PC 采样周期未设置。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_PERIOD_MIN

设备上可用的最小采样周期。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_PERIOD_LOW

较低范围内的采样周期。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_PERIOD_MID

中等采样周期。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_PERIOD_HIGH

较高范围内的采样周期。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_PERIOD_MAX

设备上可用的最大采样周期。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_PERIOD_FORCE_INT
enum CUpti_ActivityPCSamplingStallReason

PC 采样活动的停顿原因。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_INVALID

无效原因。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_NONE

没有停顿,指令被选中以供执行。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_INST_FETCH

线程束被阻止,因为下一个指令尚不可用,由于指令缓存未命中或分支效应。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_EXEC_DEPENDENCY

指令正在等待算术依赖关系。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_MEMORY_DEPENDENCY

线程束被阻止,因为它正在等待内存访问完成。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_TEXTURE

纹理子系统已完全利用或有太多未完成的请求。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_SYNC

线程束被阻止,因为它正在 __syncthreads() 或内存屏障处等待。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_CONSTANT_MEMORY_DEPENDENCY

线程束被阻止,等待常量内存和立即内存访问完成。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_PIPE_BUSY

由于所需资源不可用,无法执行计算操作。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_MEMORY_THROTTLE

线程束被阻止,因为有太多挂起的内存操作。

在 Kepler 架构中,它通常表示大量的内存重放。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_NOT_SELECTED

线程束已准备好执行,但其他线程束代替执行。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_OTHER

其他原因。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_SLEEPING

睡眠中。

enumerator CUPTI_ACTIVITY_PC_SAMPLING_STALL_FORCE_INT
enum CUpti_ActivityPartitionedGlobalCacheConfig

分区全局缓存选项。

enumerator CUPTI_ACTIVITY_PARTITIONED_GLOBAL_CACHE_CONFIG_UNKNOWN

分区全局缓存配置未知。

enumerator CUPTI_ACTIVITY_PARTITIONED_GLOBAL_CACHE_CONFIG_NOT_SUPPORTED

不支持分区全局缓存。

enumerator CUPTI_ACTIVITY_PARTITIONED_GLOBAL_CACHE_CONFIG_OFF

分区全局缓存配置关闭。

enumerator CUPTI_ACTIVITY_PARTITIONED_GLOBAL_CACHE_CONFIG_ON

分区全局缓存配置开启。

enumerator CUPTI_ACTIVITY_PARTITIONED_GLOBAL_CACHE_CONFIG_FORCE_INT
enum CUpti_ActivityPreemptionKind

抢占活动的种类。

enumerator CUPTI_ACTIVITY_PREEMPTION_KIND_UNKNOWN

抢占类型未知。

enumerator CUPTI_ACTIVITY_PREEMPTION_KIND_SAVE

抢占以保存 CDP 块。

enumerator CUPTI_ACTIVITY_PREEMPTION_KIND_RESTORE

抢占以恢复 CDP 块。

enumerator CUPTI_ACTIVITY_PREEMPTION_KIND_FORCE_INT
enum CUpti_ActivityStreamFlag

流类型。

要与 CUpti_ActivityStream 一起使用的流类型。

enumerator CUPTI_ACTIVITY_STREAM_CREATE_FLAG_UNKNOWN

未知数据。

enumerator CUPTI_ACTIVITY_STREAM_CREATE_FLAG_DEFAULT

默认流。

enumerator CUPTI_ACTIVITY_STREAM_CREATE_FLAG_NON_BLOCKING

非阻塞流。

enumerator CUPTI_ACTIVITY_STREAM_CREATE_FLAG_NULL

空流。

enumerator CUPTI_ACTIVITY_STREAM_CREATE_MASK

流创建掩码。

enumerator CUPTI_ACTIVITY_STREAM_CREATE_FLAG_FORCE_INT
enum CUpti_ActivitySynchronizationType

同步类型。

CUpti_ActivitySynchronization2 一起使用的同步类型。

enumerator CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_UNKNOWN

未知数据。

enumerator CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_EVENT_SYNCHRONIZE

事件同步 API。

enumerator CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_STREAM_WAIT_EVENT

流等待事件 API。

enumerator CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_STREAM_SYNCHRONIZE

流同步 API。

enumerator CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_CONTEXT_SYNCHRONIZE

上下文同步 API。

enumerator CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_FORCE_INT
enum CUpti_ActivityThreadIdType

线程 ID 类型。

CUPTI 使用不同的方法来获取线程 ID,具体取决于支持和底层平台。此枚举记录了每种类型的方法。API cuptiSetThreadIdTypecuptiGetThreadIdType 可用于设置和获取线程 ID 类型。

enumerator CUPTI_ACTIVITY_THREAD_ID_TYPE_DEFAULT

默认类型 Windows 使用 API GetCurrentThreadId() Linux/Mac/Android/QNX 使用 POSIX pthread API pthread_self()

enumerator CUPTI_ACTIVITY_THREAD_ID_TYPE_SYSTEM

此类型基于底层平台上可用的系统 API,并且获取的线程 ID 应该在进程生命周期内是唯一的。

Windows 使用 API GetCurrentThreadId() Linux 使用 syscall SYS_gettid Mac 使用 syscall SYS_thread_selfid Android/QNX 使用 gettid()

enumerator CUPTI_ACTIVITY_THREAD_ID_TYPE_SIZE

在此字段之前添加新的枚举。

enumerator CUPTI_ACTIVITY_THREAD_ID_TYPE_FORCE_INT
enum CUpti_ActivityUnifiedMemoryAccessType

统一内存页错误的内存访问类型。

这对于 CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_GPU_PAGE_FAULTCUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_CPU_PAGE_FAULT_COUNT 有效

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_ACCESS_TYPE_UNKNOWN

统一内存访问类型未知。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_ACCESS_TYPE_READ

页错误是由读取内存指令触发的。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_ACCESS_TYPE_WRITE

页错误是由写入内存指令触发的。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_ACCESS_TYPE_ATOMIC

页错误是由原子内存指令触发的。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_ACCESS_TYPE_PREFETCH

页错误是由内存预取操作触发的。

enum CUpti_ActivityUnifiedMemoryCounterKind

统一内存计数器的种类。

许多活动与统一内存机制相关联;其中包括从主机到设备、设备到主机以及主机端的页错误传输。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_UNKNOWN

统一内存计数器类型未知。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_BYTES_TRANSFER_HTOD

从主机传输到设备的字节数。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_BYTES_TRANSFER_DTOH

从设备传输到主机的字节数。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_CPU_PAGE_FAULT_COUNT

CPU 页错误的数量,仅在 64 位 Linux 和 Mac 平台上受支持。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_GPU_PAGE_FAULT

GPU 页错误的数量,仅在计算能力为 6.0 及更高版本的设备以及 64 位 Linux 平台上受支持。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_THRASHING

当数据被多个处理器频繁访问并且必须不断迁移以实现数据局部性时,会发生抖动。

在这种情况下,迁移的开销可能超过局部性的好处。这仅在 64 位 Linux 平台上受支持。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_THROTTLING

节流是驱动程序使用的一种预防技术,用于避免进一步的抖动。

在这里,驱动程序在一段时间内不处理其中一个争用处理器的错误,以便另一个处理器可以全速运行。这仅在 64 位 Linux 平台上受支持。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_REMOTE_MAP

如果节流没有帮助,驱动程序会尝试在一段时间内将内存固定到处理器。

其中一个争用处理器将缓慢访问内存,而另一个将快速访问内存。这仅在 64 位 Linux 平台上受支持。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_BYTES_TRANSFER_DTOD

从一个设备传输到另一个设备的字节数。

这仅在 64 位 Linux 平台上受支持。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_COUNT
enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_FORCE_INT
enum CUpti_ActivityUnifiedMemoryCounterScope

统一内存计数器的范围(在 CUDA 7.0 中已弃用)

统一内存计数器范围未知。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_SCOPE_UNKNOWN

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_SCOPE_PROCESS_SINGLE_DEVICE

在单个设备上为单个进程收集统一内存计数器。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_SCOPE_PROCESS_ALL_DEVICES

在所有设备上为单个进程收集统一内存计数器。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_SCOPE_COUNT
enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_SCOPE_FORCE_INT
enum CUpti_ActivityUnifiedMemoryMigrationCause

统一内存计数器的迁移原因。

这对于 CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_BYTES_TRANSFER_HTODCUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_BYTES_TRANSFER_DTOH 有效

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_MIGRATION_CAUSE_UNKNOWN

统一内存迁移原因未知。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_MIGRATION_CAUSE_USER

统一内存由于用户的显式调用而迁移,例如。

cudaMemPrefetchAsync

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_MIGRATION_CAUSE_COHERENCE

统一内存迁移以保证数据一致性,例如。

Pascal+ 上的 CPU/GPU 错误以及 pre-Pascal GPU 上的内核启动

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_MIGRATION_CAUSE_PREFETCH

统一内存由 UVM 驱动程序在被目标处理器访问之前推测性地迁移,以提高性能。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_MIGRATION_CAUSE_EVICTION

统一内存迁移到 CPU,因为它被驱逐,以便在 GPU 上为另一个内存块腾出空间。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_MIGRATION_CAUSE_ACCESS_COUNTERS

统一内存迁移到另一个处理器,因为访问计数器通知。

只有频繁访问的页面才会在 CPU 和 GPU 之间或对等 GPU 之间迁移。

enum CUpti_ActivityUnifiedMemoryRemoteMapCause

统一内存计数器的远程内存映射原因。

这对于 CUPTI_ACTIVITY_UNIFIED_MEMORY_COUNTER_KIND_REMOTE_MAP 有效

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_REMOTE_MAP_CAUSE_UNKNOWN

映射到远程内存的原因未知。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_REMOTE_MAP_CAUSE_COHERENCE

添加了到远程内存的映射以保持数据一致性。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_REMOTE_MAP_CAUSE_THRASHING

添加了到远程内存的映射以防止进一步的抖动。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_REMOTE_MAP_CAUSE_POLICY

添加了到远程内存的映射,以强制执行程序员或UVM驱动程序的性能启发法指定的提示。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_REMOTE_MAP_CAUSE_OUT_OF_MEMORY

添加了到远程内存的映射,因为处理器上没有更多可用内存,并且无法进行驱逐。

enumerator CUPTI_ACTIVITY_UNIFIED_MEMORY_REMOTE_MAP_CAUSE_EVICTION

在内存被驱逐以为GPU上的另一个内存块腾出空间后,添加了到远程内存的映射。

enum CUpti_ChannelType

enumerator CUPTI_CHANNEL_TYPE_INVALID
enumerator CUPTI_CHANNEL_TYPE_COMPUTE

通道用于标准工作启动和跟踪。

enumerator CUPTI_CHANNEL_TYPE_ASYNC_MEMCPY

通道由异步复制引擎使用。对于保密计算配置,工作启动和完成使用复制引擎完成。

enumerator CUPTI_CHANNEL_TYPE_DECOMP

通道用于内存解压缩操作。

enumerator CUPTI_CHANNEL_TYPE_FORCE_INT
enum CUpti_ContextCigMode

CIG (图形中的 CUDA) 模式。

描述与CUDA上下文关联的CIG模式。

enumerator CUPTI_CONTEXT_CIG_MODE_NONE

常规(非CIG)模式。

enumerator CUPTI_CONTEXT_CIG_MODE_CIG

CIG模式。

enumerator CUPTI_CONTEXT_CIG_MODE_CIG_FALLBACK

CIG回退模式。

enumerator CUPTI_CONTEXT_CIG_MODE_FORCE_INT
enum CUpti_DevType

连接到 NVLink 的设备的设备类型。

enumerator CUPTI_DEV_TYPE_INVALID
enumerator CUPTI_DEV_TYPE_GPU

设备类型为GPU。

enumerator CUPTI_DEV_TYPE_NPU

设备类型为CPU中的NVLink处理单元。

enumerator CUPTI_DEV_TYPE_FORCE_INT
enum CUpti_DeviceGraphLaunchMode

设备图执行的启动模式。

enumerator CUPTI_DEVICE_GRAPH_LAUNCH_MODE_INVALID
enumerator CUPTI_DEVICE_GRAPH_LAUNCH_MODE_FIRE_AND_FORGET
enumerator CUPTI_DEVICE_GRAPH_LAUNCH_MODE_TAIL
enumerator CUPTI_DEVICE_GRAPH_LAUNCH_MODE_FIRE_AND_FORGET_AS_SIBLING
enum CUpti_DeviceVirtualizationMode

指示 CUDA 设备运行的虚拟化模式。

enumerator CUPTI_DEVICE_VIRTUALIZATION_MODE_NONE

没有虚拟化模式与设备关联,即

它是裸机GPU

enumerator CUPTI_DEVICE_VIRTUALIZATION_MODE_PASS_THROUGH

该设备与直通GPU关联。

在此模式下,整个物理GPU直接分配给一个虚拟机(VM)。

enumerator CUPTI_DEVICE_VIRTUALIZATION_MODE_VIRTUAL_GPU

该设备与虚拟GPU(vGPU)关联。

在此模式下,多个虚拟机(VM)同时直接访问单个物理GPU。

enumerator CUPTI_DEVICE_VIRTUALIZATION_MODE_FORCE_INT
enum CUpti_EnvironmentClocksThrottleReason

时钟节流的原因。

时钟可能被节流的可能原因。时钟被节流可能有多个原因,因此这些类型可以通过按位OR组合。这些在环境活动记录的 clocksThrottleReason 字段中使用。

enumerator CUPTI_CLOCKS_THROTTLE_REASON_GPU_IDLE

GPU上没有任何运行,时钟正在降至空闲状态。

enumerator CUPTI_CLOCKS_THROTTLE_REASON_USER_DEFINED_CLOCKS

GPU时钟受到用户指定限制的限制。

enumerator CUPTI_CLOCKS_THROTTLE_REASON_SW_POWER_CAP

软件功率缩放算法正在将时钟降低到低于请求的时钟。

enumerator CUPTI_CLOCKS_THROTTLE_REASON_HW_SLOWDOWN

硬件减速以将时钟降低两倍或更多倍已被启用。

这是以下情况之一的指示:1) 温度过高,2) 外部电源制动断言正在被触发(例如,由系统电源),3) 电源状态变化。

enumerator CUPTI_CLOCKS_THROTTLE_REASON_UNKNOWN

某些未指定的因素正在降低时钟。

enumerator CUPTI_CLOCKS_THROTTLE_REASON_UNSUPPORTED

此GPU不支持节流原因。

enumerator CUPTI_CLOCKS_THROTTLE_REASON_NONE

没有时钟节流。

enumerator CUPTI_CLOCKS_THROTTLE_REASON_FORCE_INT
enum CUpti_ExternalCorrelationKind

关联支持的外部 API 的种类。

自定义关联种类保留用于外部工具。

enumerator CUPTI_EXTERNAL_CORRELATION_KIND_INVALID
enumerator CUPTI_EXTERNAL_CORRELATION_KIND_UNKNOWN

外部API对CUPTI未知。

enumerator CUPTI_EXTERNAL_CORRELATION_KIND_OPENACC

外部API是OpenACC。

enumerator CUPTI_EXTERNAL_CORRELATION_KIND_CUSTOM0

外部API是custom0。

enumerator CUPTI_EXTERNAL_CORRELATION_KIND_CUSTOM1

外部API是custom1。

enumerator CUPTI_EXTERNAL_CORRELATION_KIND_CUSTOM2

外部API是custom2。

enumerator CUPTI_EXTERNAL_CORRELATION_KIND_SIZE

在此行之前添加新种类。

enumerator CUPTI_EXTERNAL_CORRELATION_KIND_FORCE_INT
enum CUpti_FuncShmemLimitConfig

内核的每个块的共享内存限制配置。这应该用于在占用率计算器API中设置 'cudaOccFuncShmemConfig' 字段。

enumerator CUPTI_FUNC_SHMEM_LIMIT_DEFAULT

共享内存限制配置为默认值。

enumerator CUPTI_FUNC_SHMEM_LIMIT_OPTIN

用户已选择更高的动态共享内存限制,使用运行时API的函数属性 'cudaFuncAttributeMaxDynamicSharedMemorySize' 或驱动程序API的 CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES。

enumerator CUPTI_FUNC_SHMEM_LIMIT_FORCE_INT
enum CUpti_LinkFlag

链接标志。

描述链接属性,与 CUpti_ActivityNvLink 一起使用。

该标志无效。

此链接是否支持对等访问。

此链接是否支持系统内存访问。

此链接是否支持对等原子访问。

此链接是否支持系统内存原子访问。

enum CUpti_OpenAccConstructKind

OpenAcc 活动记录的 OpenAcc 父构造种类。

enumerator CUPTI_OPENACC_CONSTRUCT_KIND_UNKNOWN
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_PARALLEL
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_KERNELS
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_LOOP
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_DATA
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_ENTER_DATA
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_EXIT_DATA
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_HOST_DATA
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_ATOMIC
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_DECLARE
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_INIT
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_SHUTDOWN
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_SET
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_UPDATE
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_ROUTINE
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_WAIT
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_RUNTIME_API
enumerator CUPTI_OPENACC_CONSTRUCT_KIND_FORCE_INT
enum CUpti_OpenAccEventKind

OpenAcc 活动记录的 OpenAcc 事件种类。

另请参阅

CUpti_ActivityKindOpenAcc

enumerator CUPTI_OPENACC_EVENT_KIND_INVALID
enumerator CUPTI_OPENACC_EVENT_KIND_DEVICE_INIT
enumerator CUPTI_OPENACC_EVENT_KIND_DEVICE_SHUTDOWN
enumerator CUPTI_OPENACC_EVENT_KIND_RUNTIME_SHUTDOWN
enumerator CUPTI_OPENACC_EVENT_KIND_ENQUEUE_LAUNCH
enumerator CUPTI_OPENACC_EVENT_KIND_ENQUEUE_UPLOAD
enumerator CUPTI_OPENACC_EVENT_KIND_ENQUEUE_DOWNLOAD
enumerator CUPTI_OPENACC_EVENT_KIND_WAIT
enumerator CUPTI_OPENACC_EVENT_KIND_IMPLICIT_WAIT
enumerator CUPTI_OPENACC_EVENT_KIND_COMPUTE_CONSTRUCT
enumerator CUPTI_OPENACC_EVENT_KIND_UPDATE
enumerator CUPTI_OPENACC_EVENT_KIND_ENTER_DATA
enumerator CUPTI_OPENACC_EVENT_KIND_EXIT_DATA
enumerator CUPTI_OPENACC_EVENT_KIND_CREATE
enumerator CUPTI_OPENACC_EVENT_KIND_DELETE
enumerator CUPTI_OPENACC_EVENT_KIND_ALLOC
enumerator CUPTI_OPENACC_EVENT_KIND_FREE
enumerator CUPTI_OPENACC_EVENT_KIND_FORCE_INT
enum CUpti_OpenMpEventKind

enumerator CUPTI_OPENMP_EVENT_KIND_INVALID
enumerator CUPTI_OPENMP_EVENT_KIND_PARALLEL
enumerator CUPTI_OPENMP_EVENT_KIND_TASK
enumerator CUPTI_OPENMP_EVENT_KIND_THREAD
enumerator CUPTI_OPENMP_EVENT_KIND_IDLE
enumerator CUPTI_OPENMP_EVENT_KIND_WAIT_BARRIER
enumerator CUPTI_OPENMP_EVENT_KIND_WAIT_TASKWAIT
enumerator CUPTI_OPENMP_EVENT_KIND_FORCE_INT
enum CUpti_PcieDeviceType

区分 PCIE 活动记录是 GPU 还是 PCI 桥的字段。

enumerator CUPTI_PCIE_DEVICE_TYPE_GPU

PCIE GPU 记录。

enumerator CUPTI_PCIE_DEVICE_TYPE_BRIDGE

PCIE 桥接器记录。

enumerator CUPTI_PCIE_DEVICE_TYPE_FORCE_INT
enum CUpti_PcieGen

PCIE 代。

用于 pcie 活动属性 pcieGeneration 的 PCIE 代枚举

enumerator CUPTI_PCIE_GEN_GEN1

PCIE 第一代。

enumerator CUPTI_PCIE_GEN_GEN2

PCIE 第二代。

enumerator CUPTI_PCIE_GEN_GEN3

PCIE 第三代。

enumerator CUPTI_PCIE_GEN_GEN4

PCIE 第四代。

enumerator CUPTI_PCIE_GEN_GEN5

PCIE 第五代。

enumerator CUPTI_PCIE_GEN_GEN6

PCIE 第六代。

enumerator CUPTI_PCIE_GEN_FORCE_INT

5.1.3. 函数

CUptiResult cuptiActivityConfigurePCSampling(CUcontext ctx, CUpti_ActivityPCSamplingConfig *config)

设置 PC 采样配置。

对于 Pascal 和更早的 GPU 架构,必须在启用活动类型 CUPTI_ACTIVITY_KIND_PC_SAMPLING 之前调用此 API。对于 Volta 和更新的 GPU 架构,没有这样的要求。

对于 Volta 和更新的 GPU 架构,如果在执行过程中调用此 API,PC 采样配置将针对后续的内核启动进行更新。

参数
返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_OPERATION – 如果在设置了某些有效的事件收集方法时调用此 API。

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 config 为 NULL,或者 config 结构中的任何参数不是有效值

  • CUPTI_ERROR_NOT_SUPPORTED – 表示系统/设备不支持统一内存计数器

CUptiResult cuptiActivityConfigureUnifiedMemoryCounter(CUpti_ActivityUnifiedMemoryCounterConfig *config, uint32_t count)

设置统一内存计数器配置。

在启用相应的活动类型 CUPTI_ACTIVITY_KIND_UNIFIED_MEMORY_COUNTER 之前设置配置。应在 CUDA 驱动程序初始化后调用此 API。

参数
返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 config 为 NULL,或者 config 结构中的任何参数不是有效值

  • CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED – 一个潜在原因是平台 (OS/架构) 不支持统一内存计数器

  • CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_DEVICE – 表示设备不支持统一内存计数器

  • CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_NON_P2P_DEVICES – 表示任何设备对之间没有 P2P 支持的多 GPU 配置不支持统一内存计数器

CUptiResult cuptiActivityDisable(CUpti_ActivityKind kind)

禁用特定类型活动记录的收集。

禁用收集特定类型的活动记录。可以通过多次调用此函数来禁用多种类型。默认情况下,所有活动类型都禁用收集。

参数

kind – 要停止收集的活动记录的类型

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_KIND – 如果不支持活动类型

CUptiResult cuptiActivityDisableContext(CUcontext context, CUpti_ActivityKind kind)

禁用上下文中特定类型活动记录的收集。

禁用为上下文收集特定类型的活动记录。此 API 完成的设置将取代活动记录的全局设置。可以通过多次调用此函数来启用多种类型。

参数
  • context – 要为其禁用活动的上下文

  • kind – 要停止收集的活动记录的类型

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_KIND – 如果不支持活动类型

CUptiResult cuptiActivityEnable(CUpti_ActivityKind kind)

启用特定类型活动记录的收集。

启用收集特定类型的活动记录。可以通过多次调用此函数来启用多种类型。默认情况下,所有活动类型都禁用收集。

参数

kind – 要收集的活动记录的类型

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_NOT_COMPATIBLE – 如果无法启用活动类型

  • CUPTI_ERROR_INVALID_KIND – 如果不支持活动类型

CUptiResult cuptiActivityEnableAllSyncRecords(uint8_t enable)

启用收集所有同步操作的记录。

CUPTI 通过 CUPTI_ACTIVTIY_KIND_SYNCHRONIZATION 提供 CUDA 事件查询和流查询记录。使用此 API,即使事件尚未完成,并且流上的所有操作尚未完成,CUPTI 客户端也可以启用记录所有 CUDA 事件查询和流查询记录。

默认情况下,仅当 CUDA 事件的所有捕获工作都已完成时,才会生成记录。默认情况下,仅当流上的所有操作都已完成时,才会生成记录。

参数

enable – 是一个布尔值,表示是启用还是禁用收集所有 CUDA 事件查询和流查询记录

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

CUptiResult cuptiActivityEnableAllocationSource(uint8_t enable)

启用跟踪内存分配请求的源库。

此 API 用于控制是否跟踪内存分配请求的源库。默认值为 0,即不跟踪。需要启用活动类型 CUPTI_ACTIVITY_KIND_MEMORY2,并且如果设置了此标志,我们将在 CUpti_ActivityMemory4 记录的成员源中获取负责 GPU 内存分配请求的共享对象的完整路径。另请注意,此功能会增加运行时开销。

参数

enable – 是一个布尔值,表示是否需要跟踪内存分配请求的源库

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

CUptiResult cuptiActivityEnableAndDump(CUpti_ActivityKind kind)

启用特定类型活动记录的收集。

对于某些活动类型,它会转储现有记录。

一般来说,此 API 的行为类似于 API cuptiActivityEnable,即它启用收集特定类型的活动记录。此外,此 API 可以帮助转储在启用相应活动类型之前发生的活动的记录。该 API 允许获取 CUDA 中完成的当前资源分配的记录。对于 CUPTI_ACTIVITY_KIND_DEVICE,将转储现有设备记录。对于 CUPTI_ACTIVITY_KIND_CONTEXT,将转储现有上下文记录。对于 CUPTI_ACTIVITY_KIND_STREAM,将转储现有流记录。对于 CUPTI_ACTIVITY_KIND_NVLINK,将转储现有 NVLINK 记录。对于 CUPTI_ACTIVITY_KIND_PCIE,将转储现有 PCIE 记录。对于其他活动,行为类似于 API cuptiActivityEnable

设备记录在 CUDA 驱动程序初始化时在 CUPTI 中发出。只有在 CUDA 初始化之前附加 CUPTI,用户才能检索这些记录。上下文和流记录在上下文和流创建时发出。此 API 的用例是为 CUDA 资源(上下文/流/设备)提供记录,如果用户稍后附加 CUPTI,这些资源当前处于活动状态。

在调用此函数之前,用户必须注册缓冲区回调,以便通过调用 cuptiActivityRegisterCallbacks 来获取活动记录。如果用户未注册缓冲区并调用 API cuptiActivityEnableAndDump,则 CUPTI 将启用活动类型,但不提供该活动类型的任何记录。

参数

kind – 要收集的活动记录的类型

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_UNKNOWN – 如果缓冲区未初始化。

  • CUPTI_ERROR_NOT_COMPATIBLE – 如果无法启用活动类型

  • CUPTI_ERROR_INVALID_KIND – 如果不支持活动类型

CUptiResult cuptiActivityEnableContext(CUcontext context, CUpti_ActivityKind kind)

启用上下文中特定类型活动记录的收集。

为上下文启用特定类型的活动记录的收集。此 API 完成的设置将取代由 cuptiActivityEnable 启用的活动记录的全局设置。可以通过多次调用此函数来启用多种类型。

参数
  • context – 要为其启用活动记录的上下文

  • kind – 要收集的活动记录的类型

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_NOT_COMPATIBLE – 如果无法启用活动类型

  • CUPTI_ERROR_INVALID_KIND – 如果不支持活动类型

CUptiResult cuptiActivityEnableDeviceGraph(uint8_t enable)

控制设备启动图的记录收集。

此 API 用于控制设备启动图记录的收集。默认值为 0,即不收集这些记录。此 API 需要在 CUDA 初始化之前调用,并且此设置在分析会话期间不应更改。

参数

enable – 一个布尔值,表示是否应收集这些记录

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

CUptiResult cuptiActivityEnableDriverApi(CUpti_CallbackId cbid, uint8_t enable)

控制特定 CUDA 驱动程序 API 的活动记录收集。

活动类型 CUPTI_ACTIVITY_KIND_DRIVER 控制所有 CUDA Driver API 或都不收集。API cuptiActivityEnableDriverApi 可用于细粒度控制,它允许启用/禁用对特定 CUDA Driver API 集的跟踪。要禁用少量 CUDA Driver API 的收集,用户可以首先使用活动类型 CUPTI_ACTIVITY_KIND_DRIVER 启用所有 Driver API 的收集,然后调用此 API 以禁用特定的 Driver API。要启用少量 CUDA Driver API 的收集,用户可以直接调用此 API,而无需使用活动类型 CUPTI_ACTIVITY_KIND_DRIVER。

注意:如果活动类型 CUPTI_ACTIVITY_KIND_DRIVER 在此 API 之后调用,它将覆盖此 API 完成的设置。

参数
  • cbid – CUDA Driver API 的回调 ID。这可以在头文件 cupti_driver_cbid.h 中找到。

  • enable – 一个布尔值,表示是启用还是禁用收集

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

CUptiResult cuptiActivityEnableHWTrace(uint8_t enable)

启用通过硬件事件收集 CUDA 内核时间戳。

此 API 允许通过硬件事件而不是传统的软件检测和基于信号量的方法来收集 CUDA 内核时间戳。此选项仅在 Blackwell 架构上可用。此 API 应在驱动程序初始化后调用。

参数

enable – 一个布尔值,表示是否通过硬件事件启用或禁用收集

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED – 如果 CUPTI 未初始化或 CUDA 驱动程序未初始化

  • CUPTI_ERROR_NOT_SUPPORTED – 如果在当前平台上无法启用硬件跟踪

  • CUPTI_ERROR_VIRTUALIZED_DEVICE_NOT_SUPPORTED

  • CUPTI_ERROR_CONFIDENTIAL_COMPUTING_NOT_SUPPORTED

  • CUPTI_ERROR_CMP_DEVICE_NOT_SUPPORTED

  • CUPTI_ERROR_MIG_DEVICE_NOT_SUPPORTED

  • CUPTI_ERROR_SLI_DEVICE_NOT_SUPPORTED

  • CUPTI_ERROR_WSL_DEVICE_NOT_SUPPORTED

CUptiResult cuptiActivityEnableLatencyTimestamps(uint8_t enable)

控制内核的排队和提交时间戳的收集。

此 API 用于控制内核的排队和提交时间戳的收集,这些内核的记录通过结构 CUpti_ActivityKernel9 提供。默认值为 0,即不收集这些时间戳。此 API 需要在 CUDA 初始化之前调用,并且此设置在分析会话期间不应更改。

如果通过 API cuptiActivityEnableHWTrace 启用了硬件跟踪,则不支持此 API。

参数

enable – 一个布尔值,表示是否应收集这些时间戳

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

CUptiResult cuptiActivityEnableLaunchAttributes(uint8_t enable)

控制内核的启动属性的收集。

此 API 用于控制内核的启动属性的收集,这些内核的记录通过结构 CUpti_ActivityKernel9 提供。默认值为 0,即不收集这些属性。

参数

enable – 一个布尔值,表示是否应收集这些启动属性

CUptiResult cuptiActivityEnableRuntimeApi(CUpti_CallbackId cbid, uint8_t enable)

控制特定 CUDA 运行时 API 的活动记录收集。

活动类型 CUPTI_ACTIVITY_KIND_RUNTIME 控制所有 CUDA Runtime API 或都不收集。API cuptiActivityEnableRuntimeApi 可用于细粒度控制,它允许启用/禁用对特定 CUDA Runtime API 集的跟踪。要禁用少量 CUDA Runtime API 的收集,用户可以首先使用活动类型 CUPTI_ACTIVITY_KIND_RUNTIME 启用所有 Runtime API 的收集,然后调用此 API 以禁用特定的 Runtime API。要启用少量 CUDA Runtime API 的收集,用户可以直接调用此 API,而无需使用活动类型 CUPTI_ACTIVITY_KIND_RUNTIME。

注意:如果活动类型 CUPTI_ACTIVITY_KIND_RUNTIME 在此 API 之后调用,它将覆盖此 API 完成的设置。

参数
  • cbid – CUDA Runtime API 的回调 ID。这可以在头文件 cupti_runtime_cbid.h 中找到。

  • enable – 一个布尔值,表示是启用还是禁用收集

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

CUptiResult cuptiActivityFlush(CUcontext context, uint32_t streamId, uint32_t flag)

等待所有活动记录通过完成回调传递。

此函数在所有与指定上下文/流关联的活动记录都使用在 cuptiActivityRegisterCallbacks 中注册的回调返回给 CUPTI 客户端后才返回。为了确保所有活动记录都是完整的,请求的流(如果有)将被同步。

如果 context 为 NULL,则全局活动记录(即那些不与特定流关联的记录)将被刷新(在这种情况下,没有流被同步)。如果 context 是有效的 CUcontext 且 streamId 为 0,则此上下文中所有流的缓冲区将被刷新。否则,将刷新此上下文中指定流的缓冲区。

在调用此函数之前,必须通过调用 cuptiActivityRegisterCallbacks 激活缓冲区处理回调 API。

DEPRECATED 此方法已弃用,CONTEXT 和 STREAMID 将被忽略。使用 cuptiActivityFlushAll 刷新所有数据。

参数
  • context – 有效的 CUcontext 或 NULL。

  • streamId – 流 ID。

  • flag – 可以设置标志以指示强制刷新。请参阅 CUpti_ActivityFlag

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_CUPTI_ERROR_INVALID_OPERATION – 如果在成功调用 cuptiActivityRegisterCallbacks 之前未调用

  • CUPTI_ERROR_UNKNOWN – 发生内部错误

CUptiResult cuptiActivityFlushAll(uint32_t flag)

请求通过缓冲区完成回调传递活动记录。

此函数使用在 cuptiActivityRegisterCallbacks 中注册的回调,将与所有上下文/流(以及不与任何流关联的全局缓冲区)关联的活动记录返回给 CUPTI 客户端。

这是一个阻塞调用,但它不会隐式发出任何 CUDA 同步调用,因此不能保证所有活动都在底层设备上完成。如果活动记录已填写所有信息(包括时间戳,如果有),则认为该记录已完成。如果期望交付所有具有完整信息的活动记录,则客户端有责任在此函数调用之前发出必要的 CUDA 同步调用。

函数基于输入标志的行为:(-) ::对于默认刷新,即当标志设置为 0 时,它返回所有已完成所有活动记录的活动缓冲区,但缓冲区不必是满的。它不返回具有一个或多个未完成记录的缓冲区。默认刷新可以在单独的线程中定期完成。 (-) ::对于强制刷新,即当标志 CUPTI_ACTIVITY_FLAG_FLUSH_FORCED 传递给函数时,它返回所有活动缓冲区,包括具有一个或多个未完成活动记录的缓冲区。建议客户端在分析会话终止之前执行强制刷新,以允许交付剩余的缓冲区。通常,可以在退出处理程序中完成。

在调用此函数之前,必须通过调用 cuptiActivityRegisterCallbacks 激活缓冲区处理回调 API。

参数

flag – 可以设置标志以指示强制刷新。请参阅 CUpti_ActivityFlag

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_OPERATION – 如果在成功调用 cuptiActivityRegisterCallbacks 之前未调用

  • CUPTI_ERROR_UNKNOWN – 发生内部错误

CUptiResult cuptiActivityFlushPeriod(uint32_t time)

设置工作线程的刷新周期。

CUPTI 创建一个工作线程,以最大限度地减少对应用程序创建线程的干扰。CUPTI 将某些操作从应用程序线程卸载到工作线程,这包括主机和设备之间分析资源的同步,以及使用在 cuptiActivityRegisterCallbacks 中注册的回调向客户端交付活动缓冲区。出于性能原因,CUPTI 基于某些启发式方法唤醒工作线程。

此 API 用于控制工作线程的刷新周期。此设置将覆盖 CUPTI 启发式方法。将时间设置为零将禁用定期刷新并恢复默认行为。

定期刷新只能返回那些已满且所有活动记录都已完成的活动缓冲区。

即使客户端设置了定期刷新,也允许使用 API cuptiActivityFlushAll 按需刷新数据。

另请参阅

cuptiActivityFlushAll

参数

time – 刷新周期,以毫秒 (ms) 为单位

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

CUptiResult cuptiActivityGetAttribute(CUpti_ActivityAttribute attr, size_t *valueSize, void *value)

读取活动 API 属性。

读取一个活动 API 属性,并在 *value 中返回它。

参数
  • attr – 要读取的属性

  • valueSize – 由 value 指向的缓冲区的大小,并返回写入 value 的字节数

  • value – 返回属性的值

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 valueSizevalue 为 NULL,或者如果 attr 不是活动属性

  • CUPTI_ERROR_PARAMETER_SIZE_NOT_SUFFICIENT – 表示 value 缓冲区太小,无法容纳属性值。

CUptiResult cuptiActivityGetNextRecord(uint8_t *buffer, size_t validBufferSizeBytes, CUpti_Activity **record)

迭代缓冲区中的活动记录。

这是一个辅助函数,用于迭代缓冲区中的活动记录。活动记录缓冲区通常通过接收 CUpti_BuffersCallbackCompleteFunc 回调获得。当发生错误时,停止迭代缓冲区。

典型用法示例

CUpti_Activity *record = NULL;
CUptiResult status = CUPTI_SUCCESS;
  do {
     status = cuptiActivityGetNextRecord(buffer, validSize, &record);
     if(status == CUPTI_SUCCESS) {
          // Use record here...
     }
     else if (status == CUPTI_ERROR_MAX_LIMIT_REACHED)
         break;
     else if (status == CUPTI_ERROR_INVALID_KIND)
         break;
     else {
         goto Error;
     }
   } while (1);

参数
  • buffer – 包含活动记录的缓冲区

  • record – 输入由 cuptiActivityGetNextRecord 返回的先前记录,并从缓冲区返回下一个活动记录。如果输入值为 NULL,则返回缓冲区中的第一个活动记录。某些类型的记录(如 CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL)可能包含无效 (0) 时间戳,表示由于设备内存不足而无法收集计时信息。

  • validBufferSizeBytes – 缓冲区中有效字节数。

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_MAX_LIMIT_REACHED – 如果缓冲区中没有更多记录

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 buffer 为 NULL。

  • CUPTI_ERROR_INVALID_KIND – 如果活动记录不完整或无效

CUptiResult cuptiActivityGetNumDroppedRecords(CUcontext context, uint32_t streamId, size_t *dropped)

获取因缓冲区空间不足而丢弃的活动记录数。

获取由于缓冲区空间不足而丢弃的记录数。丢弃计数包括由于 CUPTI 没有可用于记录的活动缓冲区空间(因为 CUpti_BuffersCallbackRequestFunc 回调未返回足够大小的空缓冲区)而无法记录的记录,以及由于设备大小缓冲区已满(大小由 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_SIZE_CDP 属性控制)而无法记录的 CDP 记录。调用此函数时,为队列维护的丢弃计数将重置为零。

参数
  • context – 上下文,或 NULL 以从全局队列获取丢弃计数

  • streamId – 流 ID

  • dropped – 自上次调用此函数以来丢弃的记录数。

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 dropped 为 NULL

CUptiResult cuptiActivityPopExternalCorrelationId(CUpti_ExternalCorrelationKind kind, uint64_t *lastId)

为调用线程弹出外部关联 ID。

此函数通知 CUPTI,调用线程正在离开外部 API 区域。

参数
  • kind – 外部 API 活动应与之关联的类型。

  • lastId – 如果函数成功返回,则包含此 kind 的最后一个外部关联 ID,可以为 NULL。

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_PARAMETER – 外部 API 类型无效。

  • CUPTI_ERROR_QUEUE_EMPTY – 当前没有与 kind 关联的外部 ID。

CUptiResult cuptiActivityPushExternalCorrelationId(CUpti_ExternalCorrelationKind kind, uint64_t id)

为调用线程推送外部关联 ID。

此函数通知 CUPTI,调用线程正在进入外部 API 区域。当在外部 API 区域内创建 CUPTI 活动 API 记录且启用了 CUPTI_ACTIVITY_KIND_EXTERNAL_CORRELATION 时,活动 API 记录之前将为每个 CUpti_ExternalCorrelationKind 添加一个 CUpti_ActivityExternalCorrelation 记录。

参数
  • kind – 外部 API 活动应与之关联的类型。

  • id – 外部关联 ID。

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_PARAMETER – 外部 API 类型无效

CUptiResult cuptiActivityRegisterCallbacks(CUpti_BuffersCallbackRequestFunc funcBufferRequested, CUpti_BuffersCallbackCompleteFunc funcBufferCompleted)

向 CUPTI 注册回调函数以进行活动缓冲区处理。

此函数注册两个回调函数,用于异步缓冲区处理。如果已注册,则活动记录缓冲区将使用来自 CUPTI 的异步请求/完成回调进行处理。

注册这些回调会阻止客户端使用 CUPTI 的阻塞式入队/出队函数。

参数
  • funcBufferRequested – 当 CUPTI 请求空缓冲区时调用的回调

  • funcBufferCompleted – 当 CUPTI 提供包含活动记录的缓冲区时调用的回调

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 funcBufferRequestedfuncBufferCompleted 为 NULL

CUptiResult cuptiActivityRegisterTimestampCallback(CUpti_TimestampCallbackFunc funcTimestamp)

向 CUPTI 注册回调函数以提供时间戳。

此函数注册一个回调函数,以获取用户选择的时间戳,而不是使用 CUPTI 提供的时间戳。默认情况下,CUPTI 根据底层平台使用不同的方法来检索时间戳:Linux 和 Android 使用 clock_gettime(CLOCK_REALTIME, ..),Windows 使用 QueryPerformanceCounter(),QNX 使用 ClockCycles()。使用这些方法检索的时间戳在必要时会转换为纳秒,然后再使用。

GPU 活动(如内核、内存复制和 memset 操作)的时间戳直接在 GPU 上记录。为了提供与 CPU 时间相关的这些时间戳的统一和规范化视图,CUPTI 在后处理期间执行线性插值,以将 GPU 时间戳转换为 CPU 时间戳。对于在 GPU 上捕获时间戳的活动,时间戳回调在后处理阶段调用,同时将 GPU 时间戳转换为 CPU 时间戳。对于直接在 CPU 上捕获时间戳的活动,时间戳回调在活动发生时立即调用。

应在启用任何 CUPTI 活动类型之前完成时间戳回调的注册,以确保所有记录都使用通过 cuptiActivityRegisterTimestampCallback API 注册的回调函数报告时间戳。

在分析会话期间通过 cuptiActivityRegisterTimestampCallback API 更改 CUPTI 中的时间戳回调函数可能会导致更改之前生成的记录通过以前的时间戳方法报告时间戳。

参数

funcTimestamp – 当 CUPTI 需要时间戳时调用的回调

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 funcTimestamp 为 NULL

  • CUPTI_ERROR_NOT_INITIALIZED

CUptiResult cuptiActivitySetAttribute(CUpti_ActivityAttribute attr, size_t *valueSize, void *value)

写入活动 API 属性。

写入活动 API 属性。

参数
  • attr – 要写入的属性

  • valueSize – 值的字节大小

  • value – 要写入的属性值

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 valueSizevalue 为 NULL,或者如果 attr 不是活动属性

  • CUPTI_ERROR_PARAMETER_SIZE_NOT_SUFFICIENT – 表示 value 缓冲区太小,无法容纳属性值。

CUptiResult cuptiComputeCapabilitySupported(int major, int minor, int *support)

检查对计算能力的支持。

此函数用于检查设备基于其计算能力的支持情况。当当前版本的 CUPTI 支持该计算能力时,它会设置 support,否则会清除它。此版本的 CUPTI 可能不支持共享相同计算能力的所有 GPU。建议使用 API cuptiDeviceSupported,它提供正确的信息。

另请参阅

cuptiDeviceSupported

参数
  • major – 计算能力的主修订号

  • minor – 计算能力的次修订号

  • support – 指向整数的指针,用于返回支持状态

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 support 为 NULL

CUptiResult cuptiDeviceSupported(CUdevice dev, int *support)

检查对计算设备的支持。

此函数用于检查计算设备的支持情况。当当前版本的 CUPTI 支持该设备时,它会设置 support,否则会清除它。

参数
  • dev – CUDA Driver API cuDeviceGet 返回的设备句柄

  • support – 指向整数的指针,用于返回支持状态

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 support 为 NULL

  • CUPTI_ERROR_INVALID_DEVICE – 如果 dev 不是有效设备

CUptiResult cuptiDeviceVirtualizationMode(CUdevice dev, CUpti_DeviceVirtualizationMode *mode)

查询设备的虚拟化模式。

此函数用于查询 CUDA 设备的虚拟化模式。

参数
  • dev – CUDA Driver API cuDeviceGet 返回的设备句柄

  • mode – 指向 CUpti_DeviceVirtualizationMode 的指针,用于返回虚拟化模式

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_DEVICE – 如果 dev 不是有效设备

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 mode 为 NULL

CUptiResult cuptiFinalize(void)

将 CUPTI 从运行的进程中分离。

此 API 将 CUPTI 从运行的进程中分离。它销毁并清理当前进程中与 CUPTI 关联的所有资源。CUPTI 从进程分离后,该进程将继续运行,而不会再附加 CUPTI。为了 API 的安全操作,建议从任何 CUDA 驱动程序或运行时 API 的退出调用点调用此 API。否则,CUPTI 客户端需要确保在调用 API 之前完成所需的 CUDA 同步和 CUPTI 活动缓冲区刷新。示例代码展示了在 cupti 回调处理程序代码中 API 的用法

void CUPTIAPI
cuptiCallbackHandler(void *userdata, CUpti_CallbackDomain domain,
    CUpti_CallbackId cbid, void *cbdata)
{
  const CUpti_CallbackData *cbInfo = (CUpti_CallbackData *)cbdata;

  // Take this code path when CUPTI detach is requested
  if (detachCupti) {
    switch(domain)
    {
      case CUPTI_CB_DOMAIN_RUNTIME_API:
      case CUPTI_CB_DOMAIN_DRIVER_API:
        if (cbInfo->callbackSite == CUPTI_API_EXIT) {
            // call the CUPTI detach API
            cuptiFinalize();
        }
        break;
      default:
        break;
    }
  }
}

CUptiResult cuptiGetAutoBoostState(CUcontext context, CUpti_ActivityAutoBoostState *state)

获取自动加速状态。

如果启用了自动加速,则性能分析结果可能不一致。CUPTI 尝试在性能分析时禁用自动加速。但在用户没有权限或设置了 CUDA_AUTO_BOOST 环境变量的情况下,禁用可能会失败。此函数可用于查询是否启用了自动加速。

参数
  • context – 有效的 CUcontext。

  • state – 指向 CUpti_ActivityAutoBoostState 结构的指针,该结构包含当前状态和请求当前状态的进程 ID

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 CUcontextstate 为 NULL

  • CUPTI_ERROR_NOT_SUPPORTED – 表示设备不支持自动加速

  • CUPTI_ERROR_UNKNOWN – 发生内部错误

CUptiResult cuptiGetContextId(CUcontext context, uint32_t *contextId)

获取上下文的 ID。

获取上下文的 ID。

参数
  • context – 上下文

  • contextId – 返回上下文的进程唯一 ID

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_CONTEXT – 上下文为 NULL 或无效。

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 contextId 为 NULL

CUptiResult cuptiGetDeviceId(CUcontext context, uint32_t *deviceId)

获取设备的 ID。

如果 context 为 NULL,则返回包含当前活动上下文的设备的 ID。如果 context 为非 NULL,则返回包含该上下文的设备的 ID。其操作方式类似于 cudaGetDevice() 或 cuCtxGetDevice(),但可以从回调函数中调用。

参数
  • context – 上下文,或 NULL 表示当前上下文。

  • deviceId – 返回调用线程的当前设备的 ID。

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_DEVICE – 如果无法获取设备 ID

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 deviceId 为 NULL

CUptiResult cuptiGetGraphExecId(CUgraphExec graphExec, uint32_t *pId)

获取可执行图的唯一 ID。

返回可执行 CUDA 图的唯一 ID。

参数
  • graphExec – 可执行图。

  • pId – 返回可执行图的唯一 ID

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 graph 为 NULL

CUptiResult cuptiGetGraphId(CUgraph graph, uint32_t *pId)

获取图的唯一 ID。

返回 CUDA 图的唯一 ID。

参数
  • graph – 图。

  • pId – 返回图的唯一 ID

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 graph 为 NULL

CUptiResult cuptiGetGraphNodeId(CUgraphNode node, uint64_t *nodeId)

获取图节点的唯一 ID。

返回 CUDA 图节点的唯一 ID。

参数
  • node – 图节点。

  • nodeId – 返回节点的唯一 ID

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 node 为 NULL

CUptiResult cuptiGetLastError(void)

返回来自 cupti 调用或回调的最后一个错误。

返回在同一主机线程中任何 cupti api 调用或回调产生的最后一个错误,并将其重置为 CUPTI_SUCCESS。

CUptiResult cuptiGetStreamId(CUcontext context, CUstream stream, uint32_t *streamId)

获取流的 ID。

获取流的 ID。流 ID 在上下文中是唯一的(即,一个上下文中的所有流都将具有唯一的流 ID)。

已弃用 此方法自 CUDA 8.0 起已弃用。请改用方法 cuptiGetStreamIdEx。

参数
  • context – 如果为非 NULL,则会检查流以确保其属于此上下文。通常,此参数应为 null。

  • stream – 流

  • streamId – 返回流的上下文唯一 ID

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_STREAM – 如果无法获取流 ID,或者如果 context 为非 NULL 且 stream 不属于该上下文

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 streamId 为 NULL

CUptiResult cuptiGetStreamIdEx(CUcontext context, CUstream stream, uint8_t perThreadStream, uint32_t *streamId)

获取流的 ID。

获取流的 ID。流 ID 在上下文中是唯一的(即,一个上下文中的所有流都将具有唯一的流 ID)。

参数
  • context – 如果为非 NULL,则会检查流以确保其属于此上下文。通常,此参数应为 null。

  • stream – 流

  • perThreadStream – 标志,指示程序是否为每线程流编译

  • streamId – 返回流的上下文唯一 ID

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_INITIALIZED

  • CUPTI_ERROR_INVALID_STREAM – 如果无法获取流 ID,或者如果 context 为非 NULL 且 stream 不属于该上下文

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 streamId 为 NULL

CUptiResult cuptiGetThreadIdType(CUpti_ActivityThreadIdType *type)

获取线程 ID 类型。

返回 CUPTI 中使用的线程 ID 类型

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 type 为 NULL

CUptiResult cuptiGetTimestamp(uint64_t *timestamp)

获取 CUPTI 时间戳。

返回一个时间戳,该时间戳已标准化,以对应于 CUPTI 活动记录中报告的开始和结束时间戳。时间戳以纳秒为单位报告。

参数

timestamp – 返回 CUPTI 时间戳

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_INVALID_PARAMETER – 如果 timestamp 为 NULL

CUptiResult cuptiSetThreadIdType(CUpti_ActivityThreadIdType type)

设置线程 ID 类型。

CUPTI 使用与设置类型对应的方法来生成线程 ID。有关方法列表,请参阅枚举 CUpti_ActivityThreadIdType。具有线程 ID 字段的活动记录包含相同的值。在性能分析会话期间不得更改线程 ID 类型,以避免活动记录之间的线程 ID 值不匹配。

返回值
  • CUPTI_SUCCESS

  • CUPTI_ERROR_NOT_SUPPORTED – 如果平台不支持 type

5.1.4. 类型定义

typedef void (*CUpti_BuffersCallbackCompleteFunc)(CUcontext context, uint32_t streamId, uint8_t *buffer, size_t size, size_t validSize)

CUPTI 用于返回活动记录缓冲区的回调函数类型。

此回调函数向 CUPTI 客户端返回一个包含活动记录的缓冲区。缓冲区包含 validSize 字节的活动记录,应使用 cuptiActivityGetNextRecord 读取。可以使用 cuptiActivityGetNumDroppedRecords 读取丢弃的记录数。在此调用之后,CUPTI 放弃了缓冲区的所有权,并且不再使用它。客户端可以使用 CUpti_BuffersCallbackRequestFunc 回调将缓冲区返回给 CUPTI。注意:从 CUDA 6.0 开始,此回调返回的所有缓冲区都是全局缓冲区,即没有上下文/流特定的缓冲区。用户需要解析全局缓冲区以提取上下文/流特定的活动记录。

参数 context

此缓冲区关联的上下文。如果为 NULL,则缓冲区与全局活动关联。此字段自 CUDA 6.0 起已弃用,并且将始终为 NULL。

参数 streamId

此缓冲区关联的流 ID。此字段自 CUDA 6.0 起已弃用,并且将始终为 NULL。

参数 buffer

活动记录缓冲区。

参数 size

缓冲区总大小(以字节为单位),如 CUpti_BuffersCallbackRequestFunc 中设置。

参数 validSize

缓冲区中有效字节数。

typedef void (*CUpti_BuffersCallbackRequestFunc)(uint8_t **buffer, size_t *size, size_t *maxNumRecords)

CUPTI 用于请求空缓冲区以存储活动记录的回调函数类型。

此回调函数向 CUPTI 客户端发出信号,表明 CUPTI 需要活动缓冲区。活动缓冲区由 CUPTI 用于存储活动记录。回调函数可以通过将 *buffer 设置为 NULL 来拒绝请求。在这种情况下,CUPTI 可能会丢弃活动记录。

参数 buffer

返回新缓冲区。如果设置为 NULL,则不返回缓冲区。

参数 size

返回返回缓冲区的大小。

参数 maxNumRecords

返回应放置在缓冲区中的最大记录数。如果为 0,则缓冲区将尽可能多地填充记录。如果 > 0,则缓冲区最多填充那么多记录,然后返回。

typedef uint64_t (*CUpti_TimestampCallbackFunc)(void)

CUPTI 用于请求在活动记录中使用的时间戳的回调函数类型。

此回调函数向 CUPTI 客户端发出信号,表明需要返回时间戳。此时间戳将被视为标准化时间戳,用于 CUPTI 中的各种目的。例如,存储 CUPTI 活动记录中报告的开始和结束时间戳。返回的时间戳必须以纳秒为单位。