NVIDIA GPU的架构代号

NVIDIA GPU的架构代号

使用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

什么时候用gencode,什么时候用arch呢

如果你写的cuda代码,那么最好就是用-arch。这样也会加快runtime,因为直接编译出obj。如果仅仅使用-gencode,而没有使用-arch,CPU的codegen会发生在JIT阶段,就是在runtime编译device code。
接下来介绍架构代码了。

SM_num和gencode变量

费米 Fermi(cuda 3.2~cuda 8)

SM20 or SM_20, compute_30 –
GeForce 400, 500, 600, GT-630.
CUDA 10 以后就完全不支持了。

开普勒 Kepler(cuda 5~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 以后就完全不支持了。

麦克斯韦 Maxwell(CUDA 6~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 以后彻底不支持

帕斯卡 Pascal (CUDA 8 ~今)

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

伏特 Volta (CUDA 9 ~今)

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

图灵Turing (CUDA 10 ~今)

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

安培Ampere (CUDA 11 ~今)

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

哈珀Hopper (CUDA 12 计划中)

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

  1. 可能是hopper,也就是是tesla-next。 ↩︎

  2. https://docs.nvidia.com/cuda/ampere-tuning-guide/index.html#improved_fp32 ↩︎

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
NVIDIA GPU(图形处理器单元)架构与原理分析如下: NVIDIA GPU架构主要分为两个部分:SM(流处理器)和内存层次结构。 SM是NVIDIA GPU的核心组件,它由多个CUDA核心组成,用于处理并行计算任务。每个SM包含一定数量的CUDA核心,可以同时执行多个线程。SM还包括一些专用硬件单元,例如寄存器文件、共享内存和高速缓存。这些单元可以提供高效的数据存储和共享机制,以及加速计算速度。 NVIDIA GPU的内存层次结构包括全局内存、共享内存和寄存器文件。全局内存是最大的内存池,在所有SM中都可见。它用于存储大量数据,并在各个SM之间共享。共享内存是每个SM私有的一块内存空间,可以在SM内的线程之间进行快速共享。寄存器文件是每个CUDA核心私有的一块内存空间,用于存储核心执行时需要的数据。 NVIDIA GPU架构的原理是基于并行计算模型的。它可以同时执行大量线程,每个线程都在不同的CUDA核心上执行,从而实现高度并行的计算。通过将计算任务划分为小的线程块和网格,NVIDIA GPU可以将任务分配给多个SM并发执行,从而提高计算效率。 此外,NVIDIA GPU还支持CUDA编程模型,它可以使用CUDA编程语言进行开发。CUDA提供了丰富的API和工具,使开发者能够利用GPU的并行计算能力,提高计算性能和效率。 总而言之,NVIDIA GPU架构是一种基于并行计算的架构,通过同时执行大量线程和高效的内存层次结构,实现了高性能的数据处理和计算能力。它在许多领域,如科学计算、机器学习和游戏开发中发挥着重要的作用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值