Compute Capability
对于CPU,不同架构的CPU有者不同的功能和指令集(MMX,SSE,SSE2)。而对于GPU,不同的功能由不同的
Compute Capability
表示。NVIDIA GPU支持的Compute Capability有
1.0,1.0,... 2.0,... 6.0,6.1,7.5
。高版本的Compute Capability
是低版本Compute Capability
的超集,就是俄罗斯套娃式的嵌套结构。比如6.1版本支持1.0版本的所有功能。比如,原子操作时硬件在内存上执行的。而只有
1.1和1.1之后
的版本才支持global memory上的原子操作,而只有1.2和1.2之后
的版本才支持shared memory上的原子操作在应用中,通常会指定最低
Compute Capability
版本,如2.3,告诉编译器,如果硬件支持的Compute Capability
版本低于2.3,那么将无法执行这个和函数。做法是使用nvcc时增加一个选项nvcc -arch=sm_23
,所以Compute Capability
有称作SM版本
。SM版本
的形式是X.Y
,X表示核心的架构,7表示Volta,6表示Pascal。Y表示硬件的特性版本。不同的SM版本所支持的特性,和技术参数,间这个页面的table14和table15:
https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#compute-capabilitiesSM version=6.1 的关键参数
指标 值 Maximum dimensionality of grid of thread blocks 3 Maximum x- or y-dimension of a block 1024 Maximum z-dimension of a block 64 指标 值 Maximum number of threads per block 1024 Warp size 32 Maximum number of resident grids per device 32 Maximum number of resident blocks per multiprocessor 32 Maximum number of resident warps per multiprocessor 64 Maximum number of resident threads per multiprocessor 2048 指标 值 Number of 32-bit registers per multiprocessor 64 K Maximum number of 32-bit registers per thread block 64 KB Maximum number of 32-bit registers per thread 255 指标 值 Maximum amount of shared memory per multiprocessor 96 KB Maximum amount of shared memory per thread block 48 KB Number of shared memory banks 32 Amount of local memory per thread 512 KB Constant memory size 64 KB Maximum number of instructions per kernel 512 million
这些指标要心里有数