7.27. cudaFuncAttributes 结构参考

[CUDA 运行时使用的数据类型]

CUDA 函数属性

公共变量

int  binaryVersion
int  cacheModeCA
int  clusterDimMustBeSet
int  clusterSchedulingPolicyPreference
size_t  constSizeBytes
size_t  localSizeBytes
int  maxDynamicSharedSizeBytes
int  maxThreadsPerBlock
int  nonPortableClusterSizeAllowed
int  numRegs
int  preferredShmemCarveout
int  ptxVersion
int  requiredClusterWidth
int  reserved[16]
size_t  sharedSizeBytes

变量

int cudaFuncAttributes::binaryVersion [继承]

函数编译所针对的二进制架构版本。该值是主二进制版本号 * 10 + 次要二进制版本号,因此二进制版本 1.3 的函数将返回值 13。

int cudaFuncAttributes::cacheModeCA [继承]

该属性指示函数是否已使用用户指定的选项“-Xptxas --dlcm=ca”进行编译。

int cudaFuncAttributes::clusterDimMustBeSet [继承]

如果设置了此属性,则内核必须在启动时指定有效的集群维度。

int cudaFuncAttributes::clusterSchedulingPolicyPreference [继承]

函数的块调度策略。请参阅 cudaFuncSetAttribute

size_t cudaFuncAttributes::constSizeBytes [继承]

此函数所需的用户分配的常量内存大小(以字节为单位)。

size_t cudaFuncAttributes::localSizeBytes [继承]

此函数的每个线程使用的本地内存大小(以字节为单位)。

int cudaFuncAttributes::maxDynamicSharedSizeBytes [继承]

此函数的每个块的最大动态共享内存大小(以字节为单位)。任何启动的动态共享内存大小都必须小于此值。

int cudaFuncAttributes::maxThreadsPerBlock [继承]

每个块的最大线程数,超过此数目,函数的启动将失败。此数字取决于函数和当前加载该函数的设备。

int cudaFuncAttributes::nonPortableClusterSizeAllowed [继承]

是否允许使用非便携式集群大小启动函数。1 表示允许,0 表示不允许。非便携式集群大小可能仅在程序测试的特定 SKU 上起作用。如果程序在不同的硬件平台上运行,则启动可能会失败。

CUDA API 提供了 cudaOccupancyMaxActiveClusters 以帮助检查所需的尺寸是否可以在当前设备上启动。

便携式集群大小

便携式集群大小保证在所有计算能力高于目标计算能力的设备上都能正常工作。sm_90 的便携式集群大小为每个集群 8 个块。对于未来的计算能力,此值可能会增加。

特定的硬件单元可能支持更高的集群大小,但这不能保证是便携式的。请参阅 cudaFuncSetAttribute

int cudaFuncAttributes::numRegs [继承]

此函数的每个线程使用的寄存器数量。

int cudaFuncAttributes::preferredShmemCarveout [继承]

在 L1 缓存和共享内存使用相同硬件资源的设备上,此设置共享内存划分首选项,以最大共享内存的百分比表示。请参阅 cudaDevAttrMaxSharedMemoryPerMultiprocessor。这只是一个提示,如果执行函数需要,驱动程序可以选择不同的比率。请参阅 cudaFuncSetAttribute

int cudaFuncAttributes::ptxVersion [继承]

函数编译所针对的 PTX 虚拟架构版本。该值是主 PTX 版本号 * 10 + 次要 PTX 版本号,因此 PTX 版本 1.3 的函数将返回值 13。

int cudaFuncAttributes::requiredClusterWidth [继承]

块中所需的集群宽度/高度/深度。这些值必须全部为 0 或全部为正数。否则,集群维度的有效性将在启动时进行检查。

如果在编译时设置了该值,则无法在运行时设置。在运行时设置应返回 cudaErrorNotPermitted。请参阅 cudaFuncSetAttribute

int cudaFuncAttributes::reserved[16] [继承]

保留以供将来使用。

size_t cudaFuncAttributes::sharedSizeBytes [继承]

此函数所需的每个块的静态分配共享内存大小(以字节为单位)。这不包括用户在运行时请求的动态分配共享内存。