6.44. CUpti_ActivityKernel8

struct CUpti_ActivityKernel8

内核的活动记录。

此活动记录表示内核执行 (CUPTI_ACTIVITY_KIND_KERNEL 和 CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL)

公共成员

CUpti_ActivityKind kind

活动记录类型,必须为 CUPTI_ACTIVITY_KIND_KERNEL 或 CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL。

uint8_t requested

内核请求的缓存配置。

该值是 cuda.h 中 CUfunc_cache 枚举值之一。

uint8_t executed

内核使用的缓存配置。

该值是 cuda.h 中 CUfunc_cache 枚举值之一。

union CUpti_ActivityKernel8::[anonymous] cacheConfig

对于计算能力为 7.0+ 的设备,如果设置了 field isSharedMemoryCarveoutRequested,则不会更新 cacheConfig 值。

uint8_t sharedMemoryConfig

内核使用的共享内存配置。

该值是 cuda.h 中 CUsharedconfig 枚举值之一。

uint16_t registersPerThread

每个执行内核的线程所需的寄存器数量。

CUpti_ActivityPartitionedGlobalCacheConfig partitionedGlobalCacheRequested

内核请求的分区全局缓存。

需要分区全局缓存才能在某些芯片上启用缓存,例如计算能力为 5.2 的设备。

CUpti_ActivityPartitionedGlobalCacheConfig partitionedGlobalCacheExecuted

内核执行的分区全局缓存。

需要分区全局缓存才能在某些芯片上启用缓存,例如计算能力为 5.2 的设备。如果启动的占用率要求不支持缓存,则可以自动禁用分区全局缓存。

uint64_t start

内核执行的开始时间戳,单位为纳秒。

开始和结束时间戳均为 0 值表示无法收集内核的时间戳信息。

uint64_t end

内核执行的结束时间戳,单位为纳秒。

开始和结束时间戳均为 0 值表示无法收集内核的时间戳信息。

uint64_t completed

内核执行的完成时间戳,单位为纳秒。

它表示所有子内核和内核本身的完成。 CUPTI_TIMESTAMP_UNKNOWN 值表示完成时间未知。

uint32_t deviceId

内核正在执行的设备的 ID。

uint32_t contextId

内核正在执行的上下文的 ID。

uint32_t streamId

内核正在执行的流的 ID。

int32_t gridX

内核的 X 维度网格大小。

int32_t gridY

内核的 Y 维度网格大小。

int32_t gridZ

内核的 Z 维度网格大小。

int32_t blockX

内核的 X 维度块大小。

int32_t blockY

内核的 Y 维度块大小。

int32_t blockZ

内核的 Z 维度网格大小。

int32_t staticSharedMemory

为内核分配的静态共享内存,单位为字节。

int32_t dynamicSharedMemory

为内核保留的动态共享内存,单位为字节。

uint32_t localMemoryPerThread

为每个线程保留的本地内存量,单位为字节。

uint32_t localMemoryTotal

为内核保留的本地内存总量,单位为字节(在 CUDA 11.8 中已弃用)。

请参考字段 localMemoryTotal_v2

uint32_t correlationId

内核的相关 ID。

每个内核执行都分配有一个唯一的关联 ID,该 ID 与启动内核的驱动程序或运行时 API 活动记录中的关联 ID 相同。

int64_t gridId

内核的网格 ID。

每个内核在运行时都会分配一个唯一的网格 ID。

const char *name

内核的名称。

此名称在表示同一内核的所有活动记录之间共享,因此不应修改。

void *reserved0

未定义。

保留供内部使用。

uint64_t queued

内核在命令缓冲区中排队的时间戳,单位为纳秒。

CUPTI_TIMESTAMP_UNKNOWN 值表示无法收集内核的排队时间。 默认情况下不收集此时间戳。 使用 API cuptiActivityEnableLatencyTimestamps() 启用收集。

命令缓冲区是 CUDA 驱动程序写入的缓冲区,用于向 GPU 发送内核启动、内存复制等命令。 所有 CUDA 内核的启动都相对于主机异步,主机通过将命令写入命令缓冲区来请求启动,然后返回而不检查 GPU 的进度。

uint64_t submitted

包含内核启动命令的命令缓冲区提交到 GPU 的时间戳,单位为纳秒。

CUPTI_TIMESTAMP_UNKNOWN 值表示无法收集内核的提交时间。 默认情况下不收集此时间戳。 使用 API cuptiActivityEnableLatencyTimestamps() 启用收集。

uint8_t launchType

指示内核是通过常规启动还是通过单/多设备协同启动执行的。

uint8_t isSharedMemoryCarveoutRequested

这表示是否为内核启动更新了 CU_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT。

uint8_t sharedMemoryCarveoutRequested

函数请求的共享内存划分值,占总资源的百分比。

仅当设置了 field isSharedMemoryCarveoutRequested 字段时,才会更新该值。

uint8_t padding

未定义。

保留供内部使用。

uint32_t sharedMemoryExecuted

驱动程序设置的共享内存大小。

uint64_t graphNodeId

通过图启动 API 启动此内核的图节点的唯一 ID。

如果内核不是通过图启动 API 启动的,则此字段为 0。

CUpti_FuncShmemLimitConfig shmemLimitConfig

内核的共享内存限制配置。

此字段显示用户是否选择了更高的每个块动态共享内存限制。

uint32_t graphId

通过图启动 API 启动此内核的图的唯一 ID。

如果内核不是通过图启动 API 启动的,则此字段为 0。

CUaccessPolicyWindow *pAccessPolicyWindow

访问策略窗口的指针。

CUaccessPolicyWindow 结构体在 cuda.h 中定义。

uint32_t channelID

内核在其上启动的硬件通道的 ID。

CUpti_ChannelType channelType

通道的类型。

uint32_t clusterX

内核的 X 维度集群大小。

该字段对于计算能力为 9.0 及更高的设备有效

uint32_t clusterY

内核的 Y 维度集群大小。

该字段对于计算能力为 9.0 及更高的设备有效

uint32_t clusterZ

内核的 Z 维度集群大小。

该字段对于计算能力为 9.0 及更高的设备有效

uint32_t clusterSchedulingPolicy

内核的集群调度策略。

请参考 CUclusterSchedulingPolicy 字段。该字段对于计算能力为 9.0 及更高的设备有效

uint64_t localMemoryTotal_v2

为内核预留的本地内存总量,以字节为单位。