热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NVIDIA新一代Ampere架构详解:革新与优化并存的显卡技术飞跃

NVIDIA最新推出的Ampere架构标志着显卡技术的一次重大突破,不仅在性能上实现了显著提升,还在能效比方面进行了深度优化。该架构融合了创新设计与技术改进,为用户带来更加流畅的图形处理体验,同时降低了功耗,提升了计算效率。

NVIDIA新一代Ampere架构简单解读:一次有改良有革命的架构升级

2020-06-19 16:09:37

17点赞

19收藏

11评论

本文经超能网授权发布,原标题:NVIDIA新一代Ampere架构简单解读 一次有改良有革命的架构升级,文章内容仅代表作者观点,与本站立场无关,未经允许请勿转载。

2020年5月14日晚间,NVIDIA的新一代Ampere架构随最新的计算卡A100正式亮相,这张加速卡上面使用的GA100核心也是目前世界上最大的7nm核心,其面积高达826mm2。那么这枚核心中包含的Ampere架构与前代相比究竟在哪些地方有不同呢?本文就带各位一起简单地看看这个NVIDIA最新一代图形架构。

首先我们的旅程从整个GA100 GPU开始,下图是官方提供的GA100 GPU全貌(可以点击打开原图)。

分割成了两组的超大L2缓存和超高显存带宽

Ampere架构仍然沿用了成熟的GPC-TPC-SM多级架构,GA100内部包含8组GPC,每组GPC包含8组TPC,每组TPC又包含8组SM。主要的区别点在于,中间的L2缓存不再是统一的一组,而是被分割成了两组。实际上,GA100的L2缓存相比起前代的GV100要大上近7倍——从原本的6MB直接跳到了40MB。大容量的L2缓存会在一定程度上减轻计算单元对显存带宽的依赖,不过为了避免访问远端L2缓存时出现延迟过高的问题,它被分成了两块,保证延迟不过高。这种大容量特性和分割结构让GA100的L2缓存带宽提升了2.3倍,同时硬件的缓存一致性保证应用程序可以自动利用大容量的L2缓存提升性能。

除了容量和结构上的变化,Ampere也在架构上引入了名为计算数据压缩(Compute Data Compression)的新缓存特性,它可以加速非结构化的稀疏数据和其他可压缩的数据,使DRAM的读写带宽能够提升4倍,L2中的读取带宽提升4倍,容量提升2倍。同时,针对大容量的L2缓存,Ampere为程序员提供了数据驻留控制,允许用户对缓存数据进行管理,可以手动将一些数据保留在L2中,加速持久化的访问。

另外在显存带宽上面,A100也有突破。它仍然使用了HBM2的显存,一共五个活动堆栈,每个堆栈中有8片8Gb显存,最终组成40GB的显存,运行在1215MHz的频率上,其显存带宽高达1555GB/s,是V100的1.7倍多。另外它具备ECC硬件校验功能,需要占用额外的显存,这也就是在架构图和渲染图上,GA100均拥有6组HBM2显存,而只有5组是实际可用的原因了。而且不仅仅是显存,GPU内部的所有寄存器、L1和L2缓存均支持ECC特性。

新的数据接口

再来看上下的外围部分,首先比较显眼的应该是PCI Express 4.0。相信我们的读者对PCIe 4.0已经很熟悉了,这里也就不讲具体的了,只要知道它的带宽比3.0提升了一倍即可。

在NVIDIA的计算阵列中用的更多的是NVLink这个专门用来让GPU实现互联的接口,在Ampere上,NVLink升级到了第三代。第三代NVLink将每个信号对(signal pair)的数据速率提升到了50Gb/s,比前代几乎提升一倍,单个第三代NVLink在每个方向上面能够提供25GB/s的带宽,这与上代类似,但少用了一半的信号对,这也使得GA100上面的NVLink链路总数直接扩增了一倍,达到12条,总带宽达到600GB/s,比GV100提升一倍。

延续Volta的SM设计

看完更新了的数据交换接口,让我们把这张图放到放大镜下面,来看一看Ampere,应该说是GA100的SM单元设计。

GA100的SM单元

GA100的SM单元

如果要搞明白它的变化点,我们还要请出Volta架构和Turing架构的SM单元。

左GA100,右GV100

左GA100,右GV100

左GA100,右TU102

左GA100,右TU102

可以看到Ampere的SM单元设计保留了从Volta开始的分精度计算思路,将计算核心分成了针对整数计算的INT32单元和针对浮点计算的FP32、FP64单元和针对FP16、INT8等AI计算中常见的数据类型的Tensor Cores。从数量来看,每个SM仍然拥有64个FP32单元、64个INT32单元和32个FP64单元,这与Volta和Turing没有太大的区别(Turing SM没有FP64单元)。比较明显的区别在于,在Ampere SM中,每SM仅包含四个Tensor Core。至于RT Cores?那是游戏卡才有的,面对纯计算用途的GA100自然不需要这玩意儿。

大幅加强的Tensor Cores

是的,Tensor Cores变少了,但是它变强了。在Ampere架构上,Tensor Cores升级到了第三代,这也是Ampere SM中变化最大的地方了。第三代Tensor Cores变得几乎无所不能,它可以加速几乎所有的常见数据类型,包括FP16、BF16、TF32、FP64、INT8、INT4和二进制。下面是官方的代际数据类型对比表:

不仅仅是支持的数据类型变多了,它的算力也有很大的提高,现在每个Tensor Cores在每个时钟内可以执行256次FP16/FP32 FMA操作,在前代,这个数字是64次。也就是提高了足足4倍,于是,就算是每个SM中减少一半的Tensor Cores,它仍然能够提供两倍于前代的性能。

另外,为了提高Tensor Cores训练AI时的效率,NVIDIA新创了一种名为TF32的数据类型,它拥有FP32的范围和FP16的精度,对于调用Tensor Core的操作,它会自动启用TF32进行处理。而没有调用Tensor Cores的操作将仍然走FP32的数据路径,Tensor Cores会自动读取FP32数据,在内部减精度进行运算,在最终输出的时候会将数据还原成IEEE标准。

新版Tensor Cores还支持稀疏矩阵运算。稀疏矩阵指的是大部分元素为0的矩阵,对于这种矩阵,NVIDIA使用了自己开发出来的稀疏计算方式,它支持2:4的结构化稀疏运算,需要参与计算的矩阵在每四个元素中有2个以上的0元素,它可以将Tensor Cores的计算吞吐量翻一倍。

虚拟多实例(MIG)特性

数据中心多采用虚拟化技术为客户提供计算实例,在CPU虚拟化上面,现有的方案已经非常成熟,但对于GPU,现有的虚拟化方案就不太能够满足当前数据中心的需求,如同下图中所示意的,一个CPU可能会被多名用户同时占用,而一块GPU在单一时间内只能被一名用户所使用,这就有可能造成资源浪费。设想一下,用户1只需要0.5块GPU的资源即可完成任务,而用户2则需要1.5块GPU资料,如果按照CPU虚拟化的方式,那么此时2块GPU即可满足用户的需求,但因为GPU并不能够分块,使得数据中心要给用户分配1+2共3块GPU,才能够满足需求,这无疑是浪费了计算资源。

而Ampere上面引入的多实例GPU(Multi-Instance GPU)特性则很好地从硬件上面解决了当前数据中心在GPU资源分配上面遇到的问题,它在硬件底层即可将整块显卡切分成7个独立实例,并且可以分配给不同用户使用。

MIG特性的引入实际上是将GPU资源进行了细粒度的划分,就有如CPU按核心数量来划分计算资源一样,不过GPU暂时还做不到细化到单个SM单元这么细,但已经是为虚拟化做出了重大的升级。

总结:改良性的更新,让人更期待游戏版的改变

总的来说,Ampere架构的更新并不是革命性的,而是延续了NVIDIA这几年在架构设计上的一贯思路,微观上在SM单元中延续分精度计算,并加强Tensor Cores这个对深度学习计算非常有用的单元,宏观上面增大GPU的规模,不仅将整个GPU包含的SM单元数量扩大到128组这个数字,更是把整片GPU上面的缓存系统都放大了,尤其是40MB的二级缓存,让人印象深刻。

不过,GA100是一个为计算而特别设计的核心,虽然Ampere将会同时登陆计算卡和图形卡之中,但它们的配置会有一些不同。我们目前可以判断的是,Ampere的图形版中势必会取消掉所有FP64单元,另外Turing中引入的RT Cores将会被继承,Tensor Cores也应该会升级到第三代。而其他改动,像是SM的共享缓存大小和寄存器文件大小,应该会被保留,但二级缓存应该不会有40MB那么夸张了,另外,显存接口肯定会改到更为便宜的GDDR6上去。至于核心的规模嘛……肯定不会比GA100大(废话),但这代在CUDA Core上貌似没有进行太大的改进,如果想要在图形性能上进行提升,那要么是提升频率,要么是扩大规模,两者并行下来,未来的GA102芯片在FP32的数量上面可能会逼近A100计算卡的6912个,当然,拿到GeForce中肯定会挨上几刀。

那么,关于Ampere架构的简要解读就到此为止了,对于我们来说,更有用的内容还是要等到图形卡出来才有的分析。本文主要参考了官方的《NVIDIA Ampere Architecture In-Depth》,由于本人能力和认知有限,文章中难免会有错误,还请各位读者指出。

未经授权,不得转载



推荐阅读
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 掌握DSP必备的56个核心问题,我已经将其收藏以备不时之需! ... [详细]
  • Windows环境下详细教程:如何搭建Git服务
    Windows环境下详细教程:如何搭建Git服务 ... [详细]
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 本文提供了PyTorch框架中常用的预训练模型的下载链接及详细使用指南,涵盖ResNet、Inception、DenseNet、AlexNet、VGGNet等六大分类模型。每种模型的预训练参数均经过精心调优,适用于多种计算机视觉任务。文章不仅介绍了模型的下载方式,还详细说明了如何在实际项目中高效地加载和使用这些模型,为开发者提供全面的技术支持。 ... [详细]
  • 【高效构建全面的iOS直播应用】(美颜功能深度解析)
    本文深入探讨了如何高效构建全面的iOS直播应用,特别聚焦于美颜功能的技术实现。通过详细解析美颜算法和优化策略,帮助开发者快速掌握关键技术和实现方法,提升用户体验。适合对直播应用开发感兴趣的开发者阅读。 ... [详细]
  • 1.如何进行迁移 使用Pytorch写的模型: 对模型和相应的数据使用.cuda()处理。通过这种方式,我们就可以将内存中的数据复制到GPU的显存中去。 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 在iOS平台上,应用的流畅操作体验一直备受赞誉。然而,过去开发者往往将更多精力集中在功能实现上,而对性能优化的关注相对较少。本文深入探讨了iOS应用性能优化的关键要点与实践方法,旨在帮助开发者提升应用的响应速度、降低功耗,并改善整体用户体验。通过具体案例分析和技术解析,文章提供了实用的优化策略,包括代码层面的改进、资源管理优化以及界面渲染效率的提升等。 ... [详细]
  • 如何在微信公众平台集成新浪云服务应用摘要:新浪云服务平台SinaAppEngine(简称SAE)自2009年启动内部研发,并于同年对外开放。本文详细介绍了如何利用SAE的强大功能,在微信公众平台上构建高效、稳定的云服务应用程序,涵盖从环境配置到应用部署的全流程,为开发者提供详尽的技术指导与实践案例。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • 通过命令行工具 `virt-install` 配置和安装虚拟机环境。`virt-install` 是一个基于 `libvirt` 虚拟化管理库的命令行工具,用于创建新的虚拟机实例。该工具支持通过串行控制台和 SDL 图形界面进行虚拟机的安装和管理,适用于多种操作系统和虚拟化平台。 ... [详细]
  • 本文深入探讨了 AdoDataSet RecordSet 的序列化与反序列化技术,详细解析了将 RecordSet 转换为 XML 格式的方法。通过使用 Variant 类型变量和 TStringStream 流对象,实现数据集的高效转换与存储。该方法不仅提高了数据传输的灵活性,还增强了数据处理的兼容性和可扩展性。 ... [详细]
  • Matplotlib在数据科学中的可视化应用与技术解析
    Matplotlib和数据可视化 数据的处理、分析和可视化已经成为Python近年来最为重要的应用领域之一,其中数据的可视化指的是将数据呈现为漂亮的统计图表ÿ ... [详细]
author-avatar
萌嗒嗒滴妹妹惹人爱i_121
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有