NVCC学习笔记
NVIDIA GPU 架构演进
Nvidia GPU架构 - Cuda Core,SM,SP等等傻傻分不清?
请问英伟达GPU的tensor core和cuda core是什么区别?
dGPU(discrete GPU),独立显卡。
每秒浮点运算次数(亦称每秒峰值速度)是每秒所运行的浮点运算次数;
一个MFLOPS(megaFLOPS)等于每秒一百万(10^6)次的浮点运算;
一个GFLOPS(gigaFLOPS)等于每秒十亿(10^9)次的浮点运算;
一个TFLOPS(teraFLOPS)等于每秒一兆/一万亿(10^12)次的浮点运算;
一个PFLOPS(petaFLOPS)等于每秒一千兆/一千万亿(10^15)次的浮点运算;
一个EFLOPS(exaFLOPS)等于每秒一百京/一百亿亿(10^18)次的浮点运算;
1TOPS代表处理器每秒钟可进行一万亿次(10^12)操作。
流式传输多元处理器。
流处理块。比如GPU Pascal架构里,每个SM由两个SMP组成。
1 SM = 2个SMP = 64 CUDA Core + 1 RT Core + 8 Tensor Core
CUDA Core(Shader processors),也称为Streaming Processor(SP),是 全能通吃型的浮点运算单元。CUDA Core名称正式出现的位置是在Fermi架构(2010年),在此之前称为processor core ,也称为streaming processors (SPs) 或者称为 thread processors。CUDA Core在显卡里是并行运行的,CUDA Core越多,算力越强。
CUDA Core包含了一个 integer arithmetic logic unit (ALU)整数运算单元和一个 floating point unit (FPU)浮点运算单元。CUDA Core能进行一种fused multiply-add (FMA)的操作,即一个加乘操作的融合。特点:在不掉精度的情况下,单指令完成乘加操作,并且这个是支持32-bit精度。
更通俗一点,比如公式:
Z = W ∗ X + b Z = W * X + b Z=W∗X+b
输出Z等于W乘以输入X加上bias,深度学习中,有大量这种运算。如果用常规的CPU,会怎么处理呢?先把寄存器里面的数据送入乘法器,然后把结果送回寄存器,然后再把寄存器的数据送入加法器。但是,在CUDA Core中,单指令完成该运算。
但是,对于一些场景,比如混合精度的矩阵操作,CUDA Core计算不是很高效,于是NVIDIA就开始专门针对tensor张量运算的硬件单元Tensor Core。
光线跟踪专用的运算单元。
张量运算核心Tensor Core;
深度学习运算单元Tensor Core;
Tensor Core比流处理器更强大的专门针对 深度学习矩阵操作 有特别优化的一个运算核;
Tensor Core第一代是在volta架构上推出的,格外擅长加速 矩阵—矩阵乘法,这是训练神经网络和推理功能的核心算法,换句话说,这就是机器学习所必须的硬件基础。
[pascal与volta对比](Nvidia GPU.assets/pascal与volta对比.mp4)
深度学习加速器。
Nvidia DLA is designed specifically for the deep learning use case and is used for offload the inference effort from GPU.
These engines improve energy efficiency and free up the GPU to run more complex networks and dynamic tasks implemented by the user.
用来操作内存的。
用来做cuda的intrinsic function的。
加快推断(inference)的速度。
Nvidia:CUDA GPU,面向嵌入式的Jetson;
Intel:Movidius VPU(NCS2);
Apple:A12处理器(及之后)上的NPU;
高通:骁龙处理器(上的AIE引擎,目前到了第5代);
华为:麒麟处理器(达芬奇架构);
用户代码 -> AI框架(PyTorch/Tensorflow/Caffe等)-> CUDA lib -> Driver -> 显卡。
compute-capabilities
计算能力并不是描述GPU设备计算能力强弱的绝对指标,准确的说,这是一个架构的版本号。一般来说越新的架构版本号更高,计算能力的第一个数值也就最高(例如3080计算能力8.6),而后面的6代表在该架构前提下的一些优化特性。
每个 SM 包含:
Compute Capability: 3.0, 3.2, 3.5, 3.7;
Tesla K40;
每个 SM包含:
Compute Capability: 5.0, 5.2, 5.3;
GTX 9 SERIES;
每个SM包含:
每个 Process Block包含:
Compute Capability: 6.0, 6.1, 6.2;
GTX 10 SERIES;
Tesla P100;
Pascal架构是NVIDIA于 GTC 2016发布的GPU架构
CUDA Core在这一代终于有升级,硬件直接支持FP16的半精度计算,半精度性能是单精度的2倍,一个单精度单元用两个半精度计算。
每个SM包含:
每个 Process Block包含:
参考资料:深度解析Volta架构,专为深度学习而生的Tensor Core
Compute Capability: 7.0, 7.2;
Tesla V100;
Volta架构是NVIDIA于 GTC 2013发布的GPU架构。
Volta架构专为计算和数据科学而打造,通过将 NVIDIA® CUDA® 和 Tensor 核心配合使用,可以在单个 GPU 中提供 AI 超级计算机的性能。
每个SM包含:
每个 Process Block 包含:
Compute Capability: 7.5;
RTX 20 SERIES;
Quadro RTX 8000;
Quadro RTX 6000;
Quadro RTX 5000;
Quadro RTX Server;
Turning架构是NVIDIA于 在 SIGGRAPH 2018发布的GPU架构。
每个 SM 包含:
每个 Process Block 包含:
Turning图灵架构的光线跟踪特性,实际上是旧有光线跟踪技术与近年兴起的人工智能(AI)、深度学习结合的产物,先是利用光线跟踪专用的运算单元RT core生成图像的关键要素,剩余的非关键要素则是交由深度学习运算单元Tensor Core来补全
在Turning图灵架构中,每个SM单元包含了64个CUDA核心、1个RT核心和8个张量核心,1 SM = 64 CUDA Core + 1 RT Core + 8 Tensor Core
RTX 2080、RTX 2080ti是图灵架构,具有实时光线跟踪(Ray tracing)功能
RTX 2070 SUPER的SM单元数量比RTX 2070多4个,达到40个。由于在图灵架构中,每个SM单元包含了64个CUDA核心、1个RT核心和8个张量核心,所以RTX 2070 SUPER的CUDA核心数增加到2560个,而RTX 2070的CUDA核心数为2304个,同时前者的RT核心和张量核心分别增加了4个和32个
Compute Capability: 8.0;
RTX 30 SERIES;
Ampere架构是NVIDIA于 GTC 2020发布的GPU架构,NVIDIA Ampere 由540亿晶体管组成,是7nm芯片。
每个 SM 包含:
每个 Process Block 包含:
Matching CUDA arch and CUDA gencode for various NVIDIA architectures
CUDA:NVCC编译过程和兼容性详解
NVIDIA算力表
【原】CUDA的deviceQuery命令
hardware-precision-matrix
GPU有个重要参数-算力,算力值对应GPU的“代”值,如算力5.0,对应的“代”为sm_50,也对应Maxwell架构。
为了实现GPU架构的演变,NVIDIA GPU以不同代次发布。新一代产品在功能和/或芯片架构方面会引入重大改进。同一代产品中的GPU模型显示出较小的配置差异,对功能和/或性能产生中等的影响。
除了sm_20,sm_30,sm_50这些大的代号,还有sm_21,sm_35,sm_53这些小代,这些小代不会做大的改变,会有一些小的调整,如调整寄存器和处理器集群的数量。这只影响执行性能,不会改变功能。程序更精准的对应GPU代号可能达到最佳性能。
在实际结论中,compute_30以上的程序,算力高的GPU可以运行编译成低代的程序,反之则不行,如算力5.0的GPU可以运行编译成compute_30,sm_30的程序。虚拟框架由compute_开头,真实框架由sm_开头。
'-gencode', 'arch=compute_50,code=sm_50'
表示算力5.0以上的GPU都可以运行编译的程序,但算力3.0的GPU就不能运行了。
-gencode,-genarate-code的缩写,保证用户GPU可以动态选择最合适的GPU架构(最适合GPU的大代和小代)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8vsCsxn6-1648990324595)(Nvidia GPU.assets/代与算力的关系.png)]
参考资料
NVIDIA声称Xavier是迄今为止发明的最复杂的SOC
NVIDIA Jetson Xavier性能首测:AI性能碾压苹果A12,自研CPU架构看齐骁龙845
参考资料
CUDA 初学者统一内存
CUDA中的Unified Memory
Jetson是NVIDIA嵌入式产品,不存在独立的显存和内存,即CPU和GPU共用存储器。
2018年已经下架
属于探索性产品
参考资料
AI | Nvidia Jetson Nano介绍与使用指南
售价899RMB
最新推出,主打便宜
教育售价2899RMB
迭代升级
教育售价2899RMB
迭代升级
教育售价7099RMB
迭代升级
专为自动驾驶技术和汽车产品使用的超算解决方法,是所谓的车规级SoC芯片。
Jetson Nano | Jetson TX2 | Jetson Xavier NX | Jetson AGX Xavier | |
---|---|---|---|---|
架构 | Maxwell™ | Pascal™ | Volta™ | Volta™ |
NVIDIA CUDA 核心 | 128 | 256 | 384 | 512 |
Tensor 核心 | 48 | 64 |