使用NVIDIA GPU时,难免会用到nvcc来编译自己写的cuda代码,nvcc要求我们给一个-arch选项或者-gencode选项,gencode也可以从ptx编译代码。但是NVIDIA的架构代号很多,有GA-{num}类型,也有sm_{num}类型,有时候给人整不会了都。GA系列的架构代号网络上的解释很多,这里不多扯了。sm的代号他们有这么多,大家看看:
sm_20 sm_30 sm_50 sm_60 sm_70 sm_75 sm_80 sm_901 ? sm_35 sm_52 sm_61 sm_72 sm_86 sm_37 sm_53 sm_62
如果你写的cuda代码,那么最好就是用-arch
。这样也会加快runtime,因为直接编译出obj。如果仅仅使用-gencode
,而没有使用-arch
,CPU的codegen会发生在JIT阶段,就是在runtime编译device code。
接下来介绍架构代码了。
SM20 or SM_20, compute_30 –
GeForce 400, 500, 600, GT-630.
CUDA 10 以后就完全不支持了。
SM30 or SM_30, compute_30 –
GeForce 700, GT-730
支持了统一内存模型编程
SM35 or SM_35, compute_35 –
Tesla K40.
支持动态并行化。
SM37 or SM_37, compute_37 –
Tesla K80.
增加了一些寄存器。
CUDA 11 以后就完全不支持了。
SM50 or SM_50, compute_50 –
Tesla/Quadro M 系列
SM52 or SM_52, compute_52 –
Quadro M6000 , GeForce 900, GTX-970, GTX-980, GTX Titan X
SM53 or SM_53, compute_53 –
Tegra (Jetson) TX1 / Tegra X1, Drive CX, Drive PX, Jetson Nano
cuda 11 以后彻底不支持
SM60 or SM_60, compute_60 –
Quadro GP100, Tesla P100, DGX-1 (Generic Pascal)
SM61 or SM_61, compute_61–
GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4, Discrete GPU on the NVIDIA Drive PX2
SM62 or SM_62, compute_62 –
Integrated GPU on the NVIDIA Drive PX2, Tegra (Jetson) TX2
SM70 or SM_70, compute_70 –
DGX-1 with Volta, Tesla V100, GTX 1180 (GV104), Titan V, Quadro GV100
SM72 or SM_72, compute_72 –
Jetson AGX Xavier, Drive AGX Pegasus, Xavier NX
SM75 or SM_75, compute_75 –
GTX/RTX Turing – GTX 1660 Ti, RTX 2060, RTX 2070, RTX 2080, Titan RTX, Quadro RTX 4000, Quadro RTX 5000, Quadro RTX 6000, Quadro RTX 8000, Quadro T1000/T2000, Tesla T4
SM80 or SM_80, compute_80 –
NVIDIA A100 (不再用特斯拉(Tesla)做名字了 – GA100), NVIDIA DGX-A100
SM86 or SM_86, compute_86 – (from CUDA 11.1 onwards)
Tesla GA10x, RTX Ampere – RTX 3080, GA102 – RTX 3090, RTX A6000, RTX A40
“计算能力高于 8.6 的比8.0的有2倍以上 FP32 的计算能力 (单位:ops/cycle/SM)。 从8.0上编译出的二进制文件也可以在8.6上运行,但还是推荐在fp32类型上使用8.6的编译选项。“2
SM90 or SM_90, compute_90 –
NVIDIA H100 (GH100)
-arch=sm_30 \
-gencode=arch=compute_20,code=sm_20 \
-gencode=arch=compute_30,code=sm_30 \
-gencode=arch=compute_50,code=sm_50 \
-gencode=arch=compute_52,code=sm_52 \
-gencode=arch=compute_52,code=compute_52
可能是hopper,也就是是tesla-next。 ↩︎
https://docs.nvidia.com/cuda/ampere-tuning-guide/index.html#improved_fp32 ↩︎