Cuda计算能力
NVIDIA CUDA C++编译器nvcc可用于生成针对特定架构的cubin文件和每个内核的向前兼容的PTX版本。每个cubin文件针对特定的计算能力版本,并且仅与具有相同主版本号的GPU架构向前兼容。例如,针对计算能力3.0的cubin文件在所有计算能力3.x(Kepler)设备上受支持,但在计算能力5.x(Maxwell)设备上不受支持。因此,为确保应用程序发布后与GPU架构的向前兼容性,建议所有应用程序包含其内核的PTX版本。
文中的"计算能力"(Compute Capability)是NVIDIA针对其GPU架构的一个版本标识,用于描述GPU的硬件特性和功能集。每个新一代的GPU架构都会引入新的计算能力版本,这会影响到CUDA编程模型的支持程度,比如新指令集、内存层次结构改进、并行计算能力的增强等。
计算能力通常用两位数表示,第一位代表主要版本号,第二位代表次要版本号。例如,计算能力3.0指的是Kepler架构的一个特定版本,而计算能力5.0则属于Maxwell架构的一个版本。如您所提及,一个为特定计算能力(如3.0)编译的cubin文件能够在其主要版本号相同的其他计算能力版本上运行(如3.5也是Kepler架构的一部分),但不能跨主要版本运行,即不直接支持计算能力为5.0及以上的Maxwell架构或更新的GPU。
为了确保软件或应用程序的向前兼容性,即能够在未来发布的GPU上运行,开发者不仅需要编译针对当前主流计算能力的cubin文件,还需要包含PTX(Parallel Thread Execution)代码。PTX是一种中间表示(IR),类似于汇编语言,可以在运行时被CUDA运行时系统动态地编译为对应于当前GPU具体计算能力的机器代码。这样,即使在新的GPU架构上部署应用程序,PTX代码也可以被编译为与该新架构兼容的本地代码,从而实现更广泛的硬件支持和未来的兼容性。