当前位置: 首页 > news >正文

郑州诺耀科技 - 郑州高端网站建设营销推广杭州seo排名公司

郑州诺耀科技 - 郑州高端网站建设,营销,推广,杭州seo排名公司,万全做网站wl17581,wordpress 点击加载CPU 和 GPU好久没有更新了#xff0c;最近在阅读 CUDA 相关的一些论文#xff0c;因为都是碎片化阅读#xff0c;容易导致读过后#xff0c;可能过一段时间又忘记掉#xff0c;所以决定抽时间翻译翻译阅读的论文#xff0c;一方面增强自己记忆#xff0c;一方面与大家共… CPU 和 GPU好久没有更新了最近在阅读 CUDA 相关的一些论文因为都是碎片化阅读容易导致读过后可能过一段时间又忘记掉所以决定抽时间翻译翻译阅读的论文一方面增强自己记忆一方面与大家共享。期待大家给我推荐好的论文。今天开篇就从 GPU 的演进历史开始当然 GPU 的演进历史主要角色当然是 NVIDIA所以本文也是以 NVIDIA 为主进行介绍的。话不多说直接上正文有翻译不当的位置望各位不吝赐教。文章原文在文末。图形处理单元 GPU 的演进早期 GPU 是一种图形处理设备但是如今它已经作为一种通用设备服务于多个领域在超算领域它赋能当今最快的超级计算机在人工智能领域它作为深度学习的主要平台为自动驾驶、机器人以及智能摄像头等诸多设备提供智能。与此同时它依然能够以实时的帧率生成令人信服的逼真的高质量图片。GPU 的演进主要是通过增加新特性支持新的应用场景。NVIDIA 的 GeForce 256 是一款用于实时图形处理的专用处理器。图形实时处理应用需要高内存带宽和大量的浮点计算能力用于顶点(vertex)和片元(fragment)的着色计算(shading computations)。随着实时图形处理技术的进步GPU 拥有了可编程性。可编程性与浮点计算能力的结合使得 GPU 对于科学计算拥有了巨大的吸引力。早期科学家通过把科学计算映射为顶点和片元着色器(shader)来使用 GPU 的计算能力。这一阶段GPU 通过不断的降低硬件编程的复杂度同时提供双精度浮点计算等通用能力来满足科学计算领域的需求。GPU 的高性能浮点计算能力和易用的可编程特性使之成为了 AI 研究者训练视觉、语音识别、自然语言处理以及推荐系统等领域深度神经网络的理想平台直接推动了当前深度学习技术的革命。GPU 通过添加深度学习相关的数据类型支持以及相关指令来进一步满足深度学习应用的需求。如今 GPU 已经成为深度学习训练和推理的主要平台。01   早期的 3D 图形处理硬件图形渲染对于计算能力有很强的需求因此需要使用专用硬件来完成生成图像所需的计算。1986 年 Evans and Sutherland Computer Corporation 成立致力于研发专用的 3D 图形处理硬件。他们使用当时的一种小规模集成技术(small-scale inegration technology)这种昂贵的 multirack 系统 (multirack systems)主要用于飞行模拟器这样的应用场景。易于编程的高性能浮点计算 GPU 的出现使当前深度学习革命成为可能。按照摩尔定律(Moores law)发展的大规模集成电路技术大幅度降低了构建图形系统的成本并使其向两个方向发展。一种是昂贵的复杂的 3D 图形技术一种则是低成本的 2D 图形技术。20 世纪 80 年代末Silicon Graphics 公司建立了新一代 3D 图形系统和高端专业工作站。与此同时低成本的 2D 图形技术在大量的市场产品中得到应用例如 PC 以及视频游戏终端等。早期的终端是 sprite-base 的将虚拟矩形复制到屏幕上显示背景、场景及角色。最早的 PC 显卡(graphics cards)是简单的 2D 加速器和显示控制器。它们主要负责将像素值从 PC 系统内存拷贝到帧缓冲区最终复制到 CRT 屏幕上同时产生地址和同步信号并进行 D/A 转换。2D 图形加速器逐步发展成能够支持文本和视窗加速的硬件支持图像 (texture) 的拷贝、伸缩、融合等功能。3D 游戏终端如 3DO、Sega Saturn 以及 Sony Playstation 的出现引领了 3D 游戏的大众市场。在 PC 上支持 3D 图形用于游戏的愿景激发了整个 2.5D 和 3D 图形加速器领域的发展这样一个极其诱人的机会导致先后有 60 多家公司成立以参与这一市场。1993 年由 Jensen Huang、Chris Malachowsky 和 Curtis Priem成立的 NVIDIA 公司致力于将先进的 3D 图形技术应用于 PC 平台同时参与游戏终端的竞争。3D PC 图形技术的灵感来源于专业的 3D 工作站中的复杂而昂贵的图形管线 (graphics pipelines), 类似 Silicon graphics 公司研发的那些。NVIDIA 的创办者认为随着摩尔定律的发展大面积的高复杂度的芯片会逐步变的集成度更高更便宜从而使基于 PC 的 3D 游戏成为可能。第一代 3D PC 显卡能够执行光栅化(rasterization)的片元(或者像素)计算、颜色插值、纹理映射、 z-buffering (hidden surface removal)以及着色等功能。给定二维屏幕中三角形顶点的坐标和参数显卡将生成三角形中每个像素的深度和颜色并将这些像素合成到帧缓冲区中(frame buffer)。顶点的计算包括将顶点从世界空间转换到屏幕空间在视窗中修正三角形以及计算每个顶点的光照并保存到CPU中。NVIDIA 的第一个成功的这种类型的产品叫做 RIVA-128(NV3), 是在 1997 年发布的。3D 加速器的发展包括在更复杂的光照和阴影场景下同时混合多种纹理的能力。NVIDIA 的 RIVA-TNT 和 TNT2(NV4 和 NV5) 具备这些功能同时具有并行处理 pipeline 上的多个位置的多个像素的能力包括光栅化、着色等。02    GeForce 256: 第一款 GPU1999 年推出的 GeForce 256 是第一款将顶点变换和光照以及片元计算集成到一块芯片上的芯片。这一完全集成的图形引擎被称作 graphics processing unit or GPU。它承担了原来由 CPU 执行的顶点计算这样可以在游戏中使用更复杂的几何运算但是代价是需要更高的浮点计算能力。例如透视变换(perspective transformation)需要一个4x4 的矩阵向量乘和一个透视除法操作(perspective division operation)。在 GeForce 256 中顶点和像素的计算被组织在硬件管线(hardwired pipeline)中的可配置的固定的硬件单元(fixed-function hardware)上执行。随着 PC 游戏越来越复杂为了实现更加复杂的游戏效果对修改顶点和像素的计算需求也与日俱增。从 20 世纪 80 年代开始可编程的“着色器(shaders)”已经被应用在离线图形软件中。GeForce 3(NV20) GPU 在 2001 年发布了一种可编程的顶点着色器(vertes shader)特性2002 年在 GeForce FX 上发布了可编程的片元着色器(fragment shaders)特性。03    GPU 计算由于强大的浮点计算能力和可编程特性促使具备可编程 shader 特性的 GPU 对于科学计算有着极强的吸引力, 至此通用 GPU(general-purpose GPU, GPGPU) 编程领域出现了。GeForce 6 的单精度浮点峰值计算能力是 108 GFLOPS同时代的 CPU 仅有 8 GFLOPS。然而在这样的 GPU 上编程是非常复杂的。数据的输入和输出受到严格的限制。片元着色器仅仅接受插值顶点属性的输入 (interpolated vertex attributes) 和纹理(texture)上得输入仅能够输出数据到帧缓冲区中。程序员必须把他们的程序转换成渲染纹理映射(rendering texture mapped)或者混合三角形(blended triangles)来利用 GPU 的 FLOPS。早期的 GPGPU 代码包含很多难以理解的着色器代码这些代码迫使科学算法以这种形式出现。为了利用日益增长的 GPU 能力GPUs 最终采用流处理器编程模型(stream processing programming models)这种方式隐藏了着色器编程的大部分复杂性。流式编程系统强调并行性和生产者-消费者的局部性最初是为诸如 Imagine 和 Merrimac 等专用流处理器开发的。然而这种编程系统却非常适合 GPU 编程。Brook 编程语言最初是为 Merrimac 开发的之后适配到 GPU 上 叫做 Brook-GPU。Brook 后来被 AMD 作为开发语言适配到自家的 unified shader GPU 上。流处理器编程模型影响了用于计算的 GPU 的设计。从 2003 年开始在斯坦福领导流处理器项目的 Bill Dally 就开始与在 NVIDIA 工作的 John Nickolls 和 Erik Lindholm 探讨将流处理的思想应用到 GeForce 8 (NV50) GPU。在 2004 年Brook 的主要开发者 lan Buck 加入 NVIDA 与很多合作者一起开发 CUDA 编程语言。GeForce 8 GPU 或者 G80 引入了流处理器簇(streaming multiprocessors, SMs), 顶点和片元着色器都使用 SMs 来执行。SMs 能够独立于图形管线(graphics pipeline)以线程组的形式执行计算着色器(compute shaders)。SMs 使用 share memory 来促进线程组内的线程之间的数据共享。G80 ”Tesla“ GPU 和 CUDA都是在 2006 年发布的他们大大降低了使用 GPU 开发科学应用以及其他通用目的应用的障碍。图 1 展示了 G80 GPU 的照片它由 6.81 亿个晶体管组成能够提供 346 GFLOPS 的 FP32 计算吞吐和 86 GB/s 的 DRAM 带宽。然而革命性的硬件和新的编程语言并不能依靠自身进行革命。其主要原因在于大量遗留的高性能计算(high-performance computing, HPC)应用是基于 FORTRAN 语言和单线程序列化编程的而 G80 是一种大规模线程并行处理器CUDA 语言 是一种线程和数据并行的类 C 编程语言。为此NVIDIA 首席科学家 David Kirk 和 伊利诺伊大学厄巴纳-香槟分校 (UIUC) 的电气与计算机工程教授 Wen-mei HWu 一起为 UIUC 的研究生课程设计原型以培养下一代的并行编程程序员。这一课程的课堂笔记逐步演进成为流行的并行编程语言教材--Programming Massively Parallel Processors这本书已经被翻译成很多种语言并出版很快讲发行它的第四版。与此同时NVIDIA 建立基金会以支持在各个高校建立优秀的 CUDA 研究中心以此来促进 CUDA 教学、推广 GPU 技术和并行编程。Kirk 和 Hwu 也支持了许多“教师培训”活动包括在西班牙巴塞罗那的 UPC/BSC 举办的年度 PUMPS 暑期学校。来自庞大的且不断增长的 GPU 计算社区的反馈促使在 2010 年的 Fermi 系列 GPU 中增加了高性能科学计算的特性。这一特性包括支持双精度浮点计算相对于 G80 的 0 GFLOPSFermi 支持 750 GFLOPS 的双精度浮点计算吞吐除此之外还包含可靠性、可用性和可服务性 (RAS) 等特性以及主存储器上的 ECC 和片上存储器的奇偶校验保护。凭借 HPC 特性高性能和高效率GPU 很快成为了大型计算机的首选技术。GPU 计算的重要里程碑是橡树岭国家实验室(Oak Ridge National Labs,ORNL)使用 18688 块 NVIDIA kepler (K20) 组成 Titan 系统在 2012 年 11 月在 Linpack 测试中以 17.6 PFLOPS 的性能获得 Top 500 的第一名。2018 年 6 月 ORNL 延续了这一传统使用 27648 块 NVIDIA 的 Volta(V100) GPU在 Linpack 测试中以 122.3 PFLOPS 的浮点性能获得第一。在 2021 年 6 月的 Top 500 中前 10 名的机器中有 6 个是使用 NVIDIA 的 GPU。GPU 推动了当前的深度学习革命而未来深度学习的发展很大程度上取决于 GPU 性能GPU 要在 HPC 领域取得成功需要开发一个庞大而多样性的软件生态系统该系统的成熟经历了 10 年。基于 CUDA 的编程系统GPU 的编程生态系统现在包括了其他的编程方法例如 CUDA Fortran 和 OpenACC 等。下一级别的支持是一组数学计算库包括 CuBLASCuSparse 和 CuFFT 等对大量数学程序的关键函数进行过高度优化的计算库。通过从编程语言到计算库等软件生态的完善用户可以通过使用这些库来方便的使用 GPU 的各种能力。到目前为止有超过 600 种 HPC 的应用是使用 GPU 进行加速的其中包括 GROMACS、NAMD, AMBER, 以及 LAMMPS 等分子动力学代码气象学代码如 WRF流体动力学代码如 ANSYS 和 OpenFOAM化学代码如 Gaussian, VASP, Quantum Espresso, 和 GAMESS; 以及结构分析代码如 LS-DYNA 和 ANSYS。04    深度学习硬件GPU 促使了当今深度学习领域的的革命而未来深度学习的进展也很大程度上取决于 GPU 的性能。深度学习的成功需要 3 个必要条件算法、数据、算力。深度学习领域核心的算法深度神经网络、卷积网络、反向传播训练、随机梯度下降以及其他算法都是在上世纪 80 年代或者更早被发明的。大规模数据集例如 PASCAL VOC 和 ImageNet 到 2005 年已经达到可用的程度。唯一缺少的因素就是足够快的硬件能够以可接受的时间在大规模数据集上训练一个健壮的神经网络。这一因素是在拥有高性能浮点计算能力且易于编程的 GPU 出现后才被满足的。以计算机视觉领域为例它是在 2012 年 AlexNet 被开发出来后才开始发生变化的AlexNet 是一个使用两块 GeForce 580 (Fremi) GPU 训练两周得到的卷积神经网络。AlexNet 在 2012 年赢得了 ImageNet 竞赛其准确度大幅度提升以至于计算机视觉社区在很大程度上放弃了手工设计的特征检测器而使用神经网络。相同的改变也发生在其他领域例如语音识别领域、自然语言处理领域以及推荐系统领域。GPU 使深度学习大众化任何人只要拥有一台带有 GPU 的个人电脑就可以使用这一技术。在 2010 年Google Brain 的研究员构建了一个深度神经网络来识别互联网上得猫使用了 16000 块 CPU。这一实验在 2012 年被复现仅使用 48 块 GPU使用的软件为 cuDNN, 一个为深度学习开发的 CUDA 库。就像 CUDA 简化了科学应用在GPU上的编程任务cuDNN 简化了在 GPU 上实现深度学习任务其方便快捷的特性被深度学习研究员和相关从业者广泛使用。如图 2 所示深度学习模型的复杂性随着时间的推移而急剧增加。自然语言处理模型的复杂度仅仅两年就增加了 1000 倍从 2018 年的 BERT 到 2020 年的 GPT-3。这些模型在精度方面显著增加但是想要成功训练更复杂的模型则取决于硬件性能的提升。GPU 通过两种方式来满足深度学习训练快速增长的性能需求其一是纵向扩展(scale-up)其二是在横向扩展(scale-out)。为了促进横向扩展2015 年在 Pascal GPU 上发布了 NVLink一种高速的 GPU-GPU 交流通道。然后在 2017 年 Volta GPU 发布了 NVSwitch 技术能够支持高性能的 GPU 网络互联。NVSwitch 链接的 GPU 节点可以共享内存能够通过 Infiniband 网络与其他节点互联。AlexNet 最早是通过两块 GPU 训练的现代语言模型是在拥有几千块 GPU 的集群上训练的。例如Selene在 2021 年 6 月的 Top 500 中排名第六是一个由 Infiniband 互联的 560 个 DGX-A100 机箱组成的深度学习(Deep Learning, DL)训练集群。每个 DGX-A100 机箱包含 8 块由 NVSwitch 互联的 A100 GPU总共有 4480 块 GPU。图 3 展示了如何在单块 GPU 上纵向扩展以满足深度学习的需求。GPU 的推理性能已经提升了 317 倍从 2012 年的 Kepler 到 2020 年的 Ampere每年有超过 2 倍的性能提升远远超过了摩尔定律所预测的增长系数。这一增长速度被称为黄氏定律(Huangs Law)其高速增长很大程度上依赖于增加深度学习专用的数据类型和指令。推理计算的性能在 Kepler 时代可用的是 4 TFLOPS 的 FP32 处理能力。这种数据表示超出了 DL (尤其是推理)所需的精度。除此之外在 Kepler 架构上可利用的最复杂的指令是融合乘加指令(fused multiply–add, FMA)Kepler 只能够将指令的提取、解码以及操作数的提取分摊到每个通道(lane)的两个数学运算上。注通过乘加操作的计算耗时来隐藏指令延迟和操作数读写延迟。2016 年Pascal 架构增加 FP32 的性能到 10.6 TFLOPS同时增加了 21.3 TFLOPS 的 FP16 能力。Pascal 不仅仅是拥有更高的 DL 性能同时也具有很好的能效主要原因是1对于 DL 应用FP16 的精度和动态范围都是足够的2Pascal 的点积(dot-product)指令像 FDP4能够通过增加数学操作的数量来分摊指令的开销。在 2017 年发布的Volta 上重磅推出 Tensor Core 架构在 DL 的性能方面取得重大进步。Volta Tensor Core 实现了一条支持 FP16 精度的 4x4 矩阵乘加指令HMMA这是大多数 DL 算法的内循环形式。单一指令支持 128 个浮点操作(64 FP16 乘64 次 FP16 加注两个 4x4 的矩阵相乘需要做 64 次乘法64 次加法)大量的计算很好的隐藏了指令开销致使其可以忽律不计。因此GPU Tensor Core 是一种拥有灵活的可编程架构的高效 DL 专用芯片。Volta 的 FP16 Tensor Core 总共提供了 125 TFLOPS 的 FP16 性能。在 2018 年在 Tuning 架构上发布了 INT8 Tensor Core能够提供 260 TOPS 的 INT8 算力。它引入了 IMMA 指令能够单指令计算一个 INT8 的 8x8 矩阵乘加。在 Tuning 架构上支持 INT8 Tensor Core 是最理想的因为此时对于大多数的推理任务 INT8 的精度和动态范围已经足够。在 2020 年Ampere 架构上发布的 Tensor Core 支持稀疏化数据的计算。稀疏化 MMA 指令对于权重矩阵每 4 个元素中有 2 个是 0 的情况会有两倍的性能提升这种稀疏化叫做结构化稀疏(structured sparsity)。稀疏化指令使得 Ampere 架构的总推理性能达到 1248 TOPS(INT8)。下一节讲对 Ampere 架构进行详细描述。与在 HPC 领域相同在深度学习领域 GPU 取得成功的关键因素依然是软件。从 2012 年发布 cuDNN 开始一个为深度学习应用创建庞大软件生态的计划已经被作为重要目标。NVIDIA 的 Tensor RT (TRT) 是最优化的推理代码库它的 Triton 推理服务器能够管理多个模型的调度。第三方框架如 TensorFlowPytorch 和 Caffe2 都支持 NVIDIA 的这些库。NVIDIA 的 DALI 软件库管理部分深度学习训练的预处理流水线(pipeline)例如分阶段的数据预处理和数据解压等操作。NVIDIA 推出的模板库 CUTLASS 大大简化了程序员为每一代 GPU 开发高性能矩阵乘 kernel 的负担。也提供支持医学成像和视频分析等应用程序的库。软件栈的发展对于深度学习的性能也是至关重要的。在 MLPerf Training V1.0 的提交中相同的硬件上仅仅由于软件的增强性能便提升 2.1 倍。由于高性能和丰富的软件生态如今 GPU 成为深度学习应用的首要平台。最新的 MLPerf 结果显示 NVIDIA 的 GPU 系统是用于数据中心推理和训练的最快的商用平台。05    A100: 当今的 GPUAmpere 的 A100在 2020 年发布如图 4 所示是目前最新的 NVIDIA GPU。Ampere 采用 7 nm 技术在有限的芯片面积上集成了 540 亿个晶体管。表 1 对比了 Ampere A100 与它上一代数据中心处理器 Volta V100 (2017)的关键属性。Ampere 在每一个关键硬件特性上都有惊人的增长其中包括 5 倍的 FP16 吞吐2.2 倍的 DRAM 带宽以及 6.7 倍的片上 L2 cache。除了大量的并行计算吞吐和内存带宽Ampere 架构还在包括用于机器学习和 HPC 的硬件支持以及用于大型数据中心和超级计算机的可扩展性功能。先进的支持。例如Ampere 通过在复杂的任务图中自动发射计算任务来加速 CUDA 的任务图执行效率。Ampere 同样为 arrive/wait barriers 提供硬件支持有利于 GPU 更好的执行异步任务。最后Ampere 架构在硬件上增加了对 Cooperative Groups 的支持例如通过 warp-wide 的 reduction 操作加速 group-wide 的 collective 操作Finally, Ampere provides additional hardware support for CUDA’s Cooperative Groups, such as a warp-wide reduction operation that accelerates group-wide collective operations.。机器学习特性每个 Ampere 的 Tensor Core 使用 256 个 FP16 浮点计算单元在一个周期内完成 8x4x8 的混合精度矩阵乘法。Tensor Core 架构也支持不同数字表示的的高吞吐计算例如 INT1INT4INT8FP16 BFloat16(8 bit 指数位7 bit 尾数位E8:M7)。A100 也发布了一种新的数据格式TF32(TensorFloat-32, E8:M10), 它能够提供与 FP32 相同的指数动态范围但是把尾数的精度降低到 10 bit。A100 在硬件上提供对这种 19 bit 数据的支持其性能达到 FP32 吞吐的 8 倍同时能够提供充足的精度以达到 DNN 网络使用 FP32 训练所达到的精度。之前提到A100 的 Tensor Core 在硬件上支持结构化稀疏这一特性可以有效降低 DNN 权重数据的存储同时通过减少不必要的计算增加吞吐。结构化稀疏要求每个子向量的4个分量中有 2 个分量是 0这样可以用于压缩权重矩阵(类似于 Tensor Core 中 C A x B 矩阵乘中得 A 矩阵)。这一特性把计算转换为一个更小的矩阵计算它仅需要原先一半的计算密度因此能够产生 2 倍的性能提升。虽然结构化稀疏要求神经网络在训练的过程中要有额外的训练细节但是它不会在包括视觉、目标检测、分割、自然语言处理以及语言翻译等广泛的神经网络上产生精度损失。在存储系统上A100 也提供了一系列的特性来更好的控制数据的搬运和放置。为了提高能效A100 支持数据直接从全局内存传输到共享内存不需要经过寄存器转运。A100 也提供了一系列新的控制 L2 cache 的操作允许程序员影响 cache 的替换策略以及高效的决定哪些数据能够驻留在 cache 中哪些可以直接从 DRAM 中获取而不污染 cache。最后L2 cache 包含硬件支持的数据压缩技术这一技术保证在 DRAM 和 L2 cache 中的数据都是压缩的在 SM 读取数据的时候进行解压缩写数据的时候进行压缩这样可以很好的节省带宽。高性能计算特性传统的 HPC 任务依然需要更高的双精度浮点计算能力以及内存带宽和互联带宽。在 GEMM 加速方面A100 在体系结构上增加了 Tensor Core 对 FP64 的支持增强 GPU 的双精度浮点算力到 19.5 TFLOPS。此外 A100 部署了第三代 NVLink 互联技术通过每通道 50 Gb/s 的引脚数据速率pin data rate和 12 通道的 NVLink 组合获得了 600 GB/s 的片外带宽。高速互联可以使任意两个系统紧密的联系在一起例如 DGX A100 就是使用 8 块 A100 两两相连任意两块 A100 之间都能够实现 600 GB/s 的数据传输速率同时整个系统能够提供 150 TFLOPS 的 FP64 算力。使用 Infiniband 扩展Selene 的 560 DGX-A100 能够在 2.6 MW 的功率下达到 64 PFLOPS 的算力在 2021 年 6 月的 Green 500 列表中最节能的 10 台超级计算机中有 9 台使用 A100 GPUs。图形特性除了传统的光栅图形外Ampere 架构还包括了对光线追踪的硬件支持。从图灵 GPU 开始NVIDIA 把 RT Core 与 SM 集成用以加速层次包围体bounding-volume hierarchyBVH数据结构遍历以及 ray-triangle 相交测试。运行在 SM 上的并行着色器代码模拟数百万光线通过它们传递给 RT coreRT core 预测光线是否击中三角形。Ampere 的 RT core 的吞吐是图灵的两倍相对于 GPU 上的软件光追可以实现 2-3 倍的渲染帧率。图形和计算的重要特性逐步趋同例如 Turing 和 Ampere 支持图形应用使用基于机器学习的图形算法例如深度学习超采样(Deep learning supersampling, DLSS), 使用 Tensor Core 去加速光追流水线。06    未来的方向GPU 已经演进为极具计算能力的平台硬件上支持图形计算、HPC 和深度学习的加速。未来几年GPU 将在性能、应用领域、可扩展性和可编程性方面继续发展。正如我们在十年前的文章中大体预测的那样GPU FP64 性能从 2010 年的 Fermi 到 2020 年的 Ampere十年间增长了 20 倍年增长率为 35%见图 5。我们预计这一趋势将会在未来的 GPU 迭代中持续但是会放缓。虽然 2005 年 Dennard 微缩技术的终结停止了传统的电压微缩技术但半导体特征尺寸仍在变得更小。随着 GPU 的技术曲线从 Ampere 的 7 nm到 5 nm3 nm 以及更高的工艺我们将会在芯片上集成更多的器件和电容因此一个特定功能所需的能量将会减少单位面积或者单位功耗将产生更高的性能。深度学习推理的性能已经以很高的速率见图3在增加每年增速超过 100%。我们预计这一趋势将会持续几代但是随着架构的成熟主要增长来自技术的驱动最终将会趋于每年 35% 。GPU 性能持续提升的主要挑战来自于内存带宽。虽然像 Linpack 这样的基准测试可以很好的使用 cache 以保证 A100 的计算单元可以被填满但是大多数 HPC 和光追图形应用依然受到带宽限制。一个经典的 HPC 应用每个 FP64 算术操作需要从内存获取 1-4 bytes 的数据。例如HPCG 基准测试是使用共轭梯度求解器代码的代表它的访存计算比 (Byte/Flop) 达到 4 : 1。内存带宽是从 Pascal 一代开始出现重大飞跃从此开始向高带宽内存high-bandwidth memory, HBM发展。Ampere 的 FP64 Tensor Core 和 HBM2E 的 DRAM 使得访存计算比达到 0.1。为了继续扩展内存带宽和HPC应用程序性能我们预计还需要在封装和内存架构方面进行更多的创新。GPU 是融入新的专用需求的理想硬件加速平台。它提供了可编程平台和高速的片上带宽以及片外存储系统和高速的片外互联技术。专用需求的硬件可以以新的指令添加到 SM 中就像为深度学习添加的 Tensor Core 指令或者作为独立的内存事务从 SM 启动相关操作例如 RT cores。我们预测在未来几年新的指令和基于内存的加速器将被集成到 GPU 中以支持数据库、稀疏线性代数和生物信息学等应用领域。另外除了纵向扩展单个 GPU 的性能我们预测 GPU 将被横向扩展到更大的集群以赋能深度学习训练和 HPC 应用。如今通过 NVLink 连接的 Ampere 系统能够实现每组超过 8 个 GPU之间以 600 GB/s 的带宽共享彼此的内存就像一块 GPU 一样。在未来几代中我们预计芯片外通信带宽将继续扩大NVLink连接节点和 Infiniband 连接集群的规模将继续增长。我们也期望GPU、CPU 和 DPUs(智能网卡)之间更紧密的集成以更少的开销实现更高带宽的通信和 I/O。CUDA和相关库的使用已经简化了gpu编程超过600个HPC应用程序都是gpu加速的。由于有更好的工具和对编程的抽象我们预计未来的 GPU 编程将更加简单。例如Legate 编程系统允许 Numpy 程序在任意数量的 GPU 上运行从单个 GPU 到4,480 个 GPU 集群(如Selene)。Legate 是建立在 Legion 之上的一个运行时系统它能够管理多 GPU 应用的任务图及其数据模型。Legion 负责任务的调度和管理数据通信、复制和迁移大大简化了多gpu系统的编程任务。未来 GPU 编程的一个挑战是从不同的 SMs 访问不同的内存位置时非统一内存访问(Nonuniform memory accessNUMA)所带来的固有开销。曾经 GPU 提供过一个统一内存访问Uniform memory accessUMA模型从任意 SM 访问内存的任意位置开销都是均等的。随着 GPU 尺寸和多 GPU 系统规模的逐渐增大要求所有的内存出现在同样距离的位置上变得不可能也就导致 UMA 模型变得不可维护。我们预计向非统一内存访问模型的转变能够促使 SMs 接近内存的某些部分以便它们能够利用局部性来提高性能和效率。这一转变将要求 GPU 程序具有更好的局部性表达以便 GPU threads 能够和他们所操作的数据具有更好的一致局部性。虽然程序员已经在多 GPU 系统中采用了这样的策略但是我们希望 NUMA 模型在单 GPU 中也能够更有效。自 GeForce 256 面世的 20 多年里 GPU 已经取得了长足的发展。它们在性能方面增加了 390 倍同时变得高度可编程并增加了专用领域的硬件来支持 HPC、深度学习和光线追踪。我们期待在未来20年里在性能和功能上也会有类似的进步。07    致谢在NVIDIA硬件和软件工程师的共同努力下GPU 在过去的20年里得到了快速的发展。我们都期待着共同建设未来。08    参考文献略 见原文 https://ieeexplore.ieee.org/document/9623445
http://www.yutouwan.com/news/82440/

相关文章:

  • 长沙微网站接做名片的网站
  • 站长工具亚洲中文精品临汾建设局官方网站
  • 如何查网站的空间思源黑体 wordpress
  • 怎么做国外的网站推广重庆市建设厅官网
  • 宁波网站建设价格网站建设的域名续费
  • 贸易网站设计公司信息网站的建设
  • 设计兼职网站企业内部网站模板
  • 广州信息流推广公司优化网络搜索引擎
  • 诸暨有哪些制作网站公司国外的ps网站
  • .net网站制作医药公司网站建设备案
  • cloudflare做侵权网站青岛网站开发工资
  • 顺德精品网站建设网络营销推广的要点
  • 9夜夜做新郎网站东莞网络推广培训
  • ftp上传网站之后专业南京网站建设
  • 学做网站看什么唐山培训网站建设
  • 如皋做公司网站百度链接提交
  • 汕头站扩建什么时候完成免费的企业邮箱怎么申请
  • 榆林建设网站wordpress仿小米主题
  • 网站建设制作免费网站开发网站设计的标准
  • 外贸新品开发网站企业信息化管理平台
  • 第二章营销型网站建设测验安平网站建设
  • 帝国音乐网站怎么做数据表注册公司的条件和费用
  • 网站推广的软文wordpress 中文安装
  • 开发网站监控工具wordpress调用分类名
  • 在上海做钟点工的网站自己做产品品牌网站
  • 四博网站备案西固网站建设
  • 新华区网站建设常州外贸公司网站建设
  • 海南营销网站建设阿里云万网域名
  • 网站建设交印花税搜索引擎排名优化是什么意思
  • 一级a做爰片免费网站丶企业邮箱收费标准