全球人工智能:专注为AI开发者提供全球最新AI技术动态和社群交流。用户来源包括:北大、清华、中科院、复旦、麻省理工、卡内基梅隆、斯坦福、哈佛、牛津、剑桥等世界名校的AI技术硕士、博士和教授;以及谷歌、腾讯、百度、脸谱、微软、华为、阿里、海康威视、滴滴、英伟达等全球名企的AI开发者和AI科学家。
文章来源: nvidia blog 编译:马卓奇博士 凌媛博士
5月10日加速器滴滴免费版,旧金山召开的GPU技术大会上加速器滴滴免费版,英伟达CEO Jen Hsun Huang宣布新的NVIDIA Tesla V100,是有史以来最先进的加速器。
从语音识别到训练虚拟个人助手进行自然地交谈;从探测车道到教会自动汽车驾驶;数据科学家们正面临着人工智能越来越复杂的挑战。解决这些问题需要在实际的时间内训练更加复杂的深度学习模型。
图1:具有Volta GV100 GPU的特斯拉V100加速器。SXM2外形尺寸
HPC(High performance computing,高性能计算)是现代科学的一个基本支柱。从预测天气,发现药物,到寻找新能源,研究人员使用大型计算系统来模拟和预测我们的世界。人工智能扩展了传统的HPC,允许研究人员分析大量数据得到快速见解,而单单模拟不能完全预测现实世界。
基于新的NVIDIA Volta GV100GPU,以及突破性技术的动力,Tesla V100是专为HPC和AI的结合而设计的。它提供了一个平台,能够让HPC系统在用于科学模拟的计算科学和寻找数据内在意义的数据科学上都有很好的表现。
在这篇博客中我们将介绍Volta架构概述和它为开发人员带来的好处。
Tesla V100:AI计算和HPC动力源
NVIDIA TeslaV100加速器是世界上性能最好的并行处理器,设计理念是为计算密集型HPC,AI和图形工作负载进行加速。
GV100 GPU包含211亿个晶体管,模具尺寸为815平方毫米。这是基于一个专为NVIDIA定制的TSMC 12纳米FFN高性能制造工艺的方法建造的。GV100提供了更多的计算性能,并且与它的前身,Pascal gp100 GPU和其整个结构家族相比,增加了许多新功能。GV100进一步简化了GPU编程和应用程序的移植,并且提高了GPU的资源利用。GV100是一个极低功耗处理器,能够提供卓越的每瓦特性能。图2显示了TeslaV100用于深度学习训练和使用resnet-50深层神经网络进行推断的性能。
图2:左:特斯拉V100训练ResNet-50深层神经网络比特斯拉P100快2.4倍。右图:给定每个图像的目标延迟为7ms,特斯拉V100能够使用ResNet-50深层神经网络进行推理,比Tesla P100快3.7倍。(在生产前特特拉V100测量)
主要特点:
Tesla V100的主要计算特点包括以下内容:
为深度学习设计的新的流多处理器(SM)架构。Volta的一个重要特征是在GPU的中心的新设计的SM的处理器结构。新的Volta SM是比上一代Pascal的设计节能50%,在相同的功率包络下,在FP32和FP64的性能有大幅提升。新的专为深度学习设计的张量核能够为训练提供高达12倍的TFLOP的峰值运算能力。有了独立、并行整数和浮点数据通路,Volta SM对于计算和寻址计算的混合工作量也更有效。Volta的新的独立线程调度能力使细粒并行线程之间的同步和合作成为可能。最后,一个新的组合了L1数据高速缓存和共享内存的子系统显着提高了性能,同时也简化了编程。
二代NVLink?。NVIDIA NVLink二代高速互连提供了更宽的带宽,更多的链接,以及提高了多GPU和多GPU / CPU系统配置的可扩展性。GV100最多可以支持6 个25Gb/s的NVLink链接,总数为300 Gb / s。NVLink现在支持CPU控制和缓存与基于IBM的Power 9处理器的服务器一致性功能。新 NVIDIA DGX-1与V100 AI超级计算机采用NVLink为超快速深度学习训练提供更高的可扩展性。
HBM2内存:更快,更高的效率。Volta高度调整的16GB HBM2内存子系统可以提供峰值达到900 Gb /秒的内存带宽。三星的新一代HBM2内存和Volta的新一代内存控制器的结合,与Pascal GP100相比,提供了1.5倍的交付内存带宽和运行多个工作负载时大于95%的内存带宽效率。
Volta多进程服务。Volta多进程服务(MPS)是Volta GV100架构的一个新的功能,提供了对CUDA MPS服务器关键部件的硬件加速,能够提高性能,隔离,和多个计算应用共享GPU时更好的服务质量(QoS)。Volta MPS也将MPS最大客户数提高了三倍,从Pascal的16个 到Volta的48个。
增强的统一内存和地址翻译服务。VoltaGV100 内,GV100统一存储技术包括了新的访问计数器,能够允许内存页更准确的迁移到访问页面最频繁的处理器,提升了访问内存范围处理器之间的共享效率。在IBM Power平台上,新地址转换服务(ATS)支持允许GPU直接访问CPU的页表。
协作组及合作推出的新API。协作组是一种新的编程模型,在CUDA 9中首次出现,可以组织线程沟通组。协作组允许开发人员表达通信线程的粒度,帮助他们更丰富地表达,更高效的并行分解。基本协作组的功能在Kepler之后的所有的NVIDIA GPU上都支持。Pascal和Volta包括支持新的合作推出API,支持CUDA线程块之间的同步。Volta添加了新的同步模式支持。
最高性能及最高的效率模式。在最高性能模式下, TeslaV100加速器将不受它的TDP(热设计功耗),约为300W,的约束,来加速需要最快计算速度和最高数据吞吐量的应用程序。最大效率模式允许数据中心管理人员调整他们的TeslaV100加速器电源的使用操作,在最佳的每瓦性能下进行工作。一个不超过的功率上限可以在所有的GPU上进行设置,减少功率消耗,同时依旧能获得优秀架构性能。
Volta优化软件。新版本的深度学习框架,如Caffe2、MXNet、tensorflow CNTK,和其他,都利用Volta性能来提供更快的训练时间和更高的多节点培训性能。Volta的优化版本的GPU加速库如cuDNN,cuBLAS,和TensorRT权衡了的Volta GV100结构的新的功能,为深度学习和高性能计算(HPC)的应用提供更高的性能。NVIDIA的CUDA工具包9.0版包括新的API,并支持Volta的特性,来提供更简单的可编程性。
GV100 GPU硬件结构
有了NVIDIA Tesla V100加速器的Volta GV100 GPU是当今世界上性能最优的并行计算处理器。GV100具有显着的新的硬件创新,除了为HPC系统和应用提供更多的计算能力之外,它也为深度算法和深度框架提供了极大的加速,如图3所示。
图3:对于多种HPC工作负载,TeslaV100的执行速度比Tesla P100平均快1.5倍。(在预生产的Tesla V100上测量。)
Tesla V100提供了业界领先的浮点和整数性能。峰值计算速率(基于GPU升压时钟速率)为:
双精度浮点(FP64)7.5 TFLOP/s
单精度浮点(FP32)15 TFLOP/s
混合精度矩阵乘法累加120Tensor TFLOP/s
类似于之前的PascalGP100 GPU,GV100 GPU是由多个图形处理集群(GPC),纹理处理集群(TPCS)、流多处理器(SM),和内存控制器组成的。完整的GV100 GPU 由6个GPCs,84个Volta SM,42个TPC(每个包括2个SM),和8个512位内存控制器(总共4096位)。每个SM 有64个 FP32核、64个INT32核,32个FP64核和8个新张量核。每个SM也包括四个纹理单元。
图4:具有84个SM单元的Volta GV100全GPU。
有了84个SM,一个完整的GV100 GPU共有5376个FP32核、5376个INT32核,2688个FP64核、672个张量核和336个纹理单元。每个内存控制器连接到768 KB的L2高速缓存,每个HBM2DRAM堆栈由一对内存控制器控制。完整的GV100 GPU共6144KB L2高速缓存。图4显示了一个带有84个SM的完整GV100 GPU(不同产品可以使用不同的配置)。 Tesla V100加速器使用80个SM。
表1比较了过去5年的Tesla加速器:
Volta SM(流多线程处理器)
Volta SM的架构是设计来提供更高的性能的,它的设计比过去的SM设计降低了指令和高速缓存的延迟,并且包括了新的功能来加速沈度学习的应用。
主要特征包括:
专为深度学习矩阵算法建造的新混合精度FP16 / FP32张量核
增强的L1数据缓存,达到更高的性能和更低的延迟
简单的解码和减少指令延迟的精简指令集
更高的频率和更高的功率效率。
类似于Pascal GP100,GV100 每个SM包含64个FP32核和32个FP64核。然而,GV100 SM采用一种新的划分方法,提高SM的利用率和整体性能。GP100 SM被划分成两个处理模块,每个有32个 FP32核,16个FP64核,一个指令缓冲器,一个warp调度,两个派发单元,和一个128 kb的登记文件。GV100 SM被划分成四个处理块,每组16个 FP32核、8个FP6416核,16个Int32核,2个为深度学习矩阵运算设计的新的混合精度张量核,新的10指令缓存,一个warp调度,一个派发单元,以及一个64 kb的登记文件。请注意,新的L0指令缓存,现在使用在每个分区内,来提供比以前的NVIDIA GPU的指令缓冲器更高的效率。(见图5Volta SM)。
尽管GV100 SM与Pascal GP100 SM具有相同数量的寄存器,整个GV100 GPU拥有更多的SM,从而整体上有更多的寄存器。总的来说,GV100支持多线程,变形,和与之前的GPU相比,具有了线程块。
在整个GV100 GPU上,由于SM数增加,以及每个SM的共享内存的潜力增加到96KB,相比GP100的64 KB,全局共享内存也有所增加。
Pascal GPU无法同时执行FP32和Int32指令,与它不同的Volta GV100 SM包括单独的FP32和INT32核,允许在全吞吐量上同时执行FP32和INT32的操作,但同时也增加了指令问题的吞吐量。相关的指令问题延迟也通过核心FMA的数学操作得到减少,Volta只需要四个时钟周期,而Pascal需要六个。
图5:Volta GV100流多线程处理器(SM)
张量核:
Tesla P100相比前代 NVIDIA Maxwell、Kepler架构能够提供相当高训练神经网络的性能,但神经网络的复杂性和规模却持续增长。有数千层和数百万神经元的新网络甚至需要更高的性能和更快的训练时间。
新的张量核是VoltaGV100架构的最重要的特征,来帮助提升训练大型神经网络的性能。Tesla V100的张量核提供高达120 Tensor TFLOPS 的训练和推理应用。
矩阵乘积(BLAS GEMM)操作是神经网络训练和推断的核心,通过它来进行网络连接层输入数据和权重的矩阵相乘。图6为 Tesla V100 GPU 的张量核显著提升了这些操作的性能,与Pascal型的GP100 GPU相比提升了9倍。
图6:Tesla V100张量核和CUDA 9对于 GEMM操作性能,达到了以前的9倍。(在预生产的Tesla V100 上使用之前发布的CUDA 9软件进行测量)
每个张量核提供了一个4x4x4的矩阵处理阵列进行D操作 ,A,B,C和D是 如图7所示的4×4矩阵。矩阵乘法的输入A和B 是FP16矩阵,而积累矩阵C和D可能FP16或FP32的矩阵。
图7:张量核4x4x4矩阵乘法和累加。
每个张量核每钟次执行64浮点FMA混合精度操作,(FP16乘法和FP32累加)和SM中的8个张量核共执行1024次浮点运算。这是一个每个SM 达到8倍提高吞吐量的深度学习应用,相比于使用标准FP32操作的Pascal GP100,导致Volta V100 GPU吞吐量总共增加12倍,相比于Pascal P100 GPU。张量内核对输入的FP16数据使用FP32累加操作。FP16经过FP32累加操作,以及给定4x4x4矩阵点积相乘的结果是一个完整的精度,如图8所示。
Figure 8: Volta GV100 Tensor Core operation.
增强的L1数据高速缓存和共享内存:
合并了新L1数据高速缓存和共享内存的VoltaSM子系统显著提高了性能,同时也简化了编程,以及减少了需要达到或接近峰值的应用性能的调试时间。
将数据缓存和共享内存功能结合到一个单一的内存块上,为这两种类型的内存访问提供了最好的整体性能。结合的总容量是128 KB / SM,超过GP100 data的数据缓存7倍,并且所有的一切对于不使用共享内存的程序来说,都是可以作为缓存使用的。纹理单元也使用缓存。例如,如果共享内存设置为64 KB,纹理和加载/存储操作可以使用L1缓存的剩余64 KB。
图9:Volta的L1数据缓存缩小了手动调整以保持数据的共享内存的应用程序,和那些直接访问数据存储器之间的差距。1.0表示用共享内存调整的应用程序的性能,而绿色条代表不使用共享内存的等效应用程序的性能。
计算能力
GV100 GPU支持新的Compute Capability7.0。表2比较了NVIDIA GPU架构下不同的ComputeCapability的参数。
独立线程调度
Volta的架构比之前的GPU编程要容易得多,使得用户能够在更加复杂和多样化的应用上有效的工作。Volta GV100 是第一个支持独立的线程调度的GPU,使一个程序内的并行线程之间的晶粒同步与合作成为可能。Volta的一个主要设计目标是减少需要程序在GPU上运行的功耗,使线程合作具有更大的灵活性,能够提高细粒度并行算法的效率。
前代NVIDIA GPUSIMT 模块
Pascal和早期的NVIDIA GPU执行32个线程,称为SIMT(单指令、多线程组)派。Pascal warp使用在所有的32个线程上共享的单一程序计数器,结合“主动掩码”,指定哪些线程的经线在何时是活跃的。这意味着不同的执行路径对于不同的warp的部分会留下一些非序列化执行线程,如图10所示。原始掩码会保存起来,直到warp在扩散段末经再次收敛,此时掩码再次储存,然后线程再次一起运行。
图10:Pascal和早期的NVIDIA GPU的SIMT在warp执行模式下的调度线程。大写字母表示程序的伪代码语句。在一个warp中的发散分支被序列化,以便在另一方中执行任何语句之前,使分支一边的所有语句可以一起执行并完成。else语句后,warp的线程通常会再次收敛。
VOLTA SIMT 模块
Volta通过让所有线程之间并发平等来转换这幅画。它通过维护每个线程的执行状态,包括程序计数器和调用堆栈来完成这一操作,如图11所示。
图11:Volta(下)独立的线程调度体系结构框图与Pascal以及早期的结构(上)比较。Volta保持每个线程调度资源,如程序计数器(PC)和调用堆栈(S),而早期的结构保持每warp的资源。
Volta的独立线程调度允许GPU执行任何线程,或者可以更好地利用执行资源,或者允许一个线程等待由另一个产生的数据。为了最大限度地提高并行效率,Volta包括计划优化器确定如何从同一warp组织活动的线程到SIMT单元中。这一操作与之前NVIDIA GPU相同,保留了SIMT执行的高吞吐量,但灵活性更高:线程现在可以发散和会聚于子warp粒度,并且Volta会仍然将执行相同代码的线程集合在一起,并且并行运行。
图12:Volta独立线程调度能够从不同分支交替执行语句。这使得一个warp内的线程可以同步和通信的细粒度并行算法可以执行。
图12并不显示同时在warp中Z的所有线程执行语句。这是因为调度器必须保守地假设Z可能产生其他发散分支执行所需的数据,在这种情况下,自动强制重新收敛是不安全的。在普通情况下A,B,X,和Y不包括同步操作,调度程序能够识别出它是安全的,经自然重新收敛的Z,因为在之前的架构。
程序可以调用新的CUDA 9翘曲同步功能__syncwarp()来强制重新收敛,如图13所示。在这种情况下,warp的发散部分可能不会Z一起执行,但是在任何线程到达之后的任何线程之前,warp内的线程的所有执行路径都将完成__syncwarp()。类似地,在执行__syncwarp()之前将调用置于Z强制重新收敛之前Z,如果开发人员知道这对于其应用是安全的,则潜在地可以实现更大的SIMT效率。
图13:程序可以使用显式同步在warp中收敛线程。
STARVATION-FREE算法
STARVATION-FREE算法的关键模式是独立线程调度。只要系统能够确保所有线程都具有对竞争资源足够的访问权限,这些并发计算算法就能确保其正确执行。例如,在确保一个线程尝试获取互斥锁且其最终能够获得成功的前提下,STARVATION-FREE算法中可能使用互斥锁。在一个不支持STARVATION-FREE的系统中,一个或者多个线程可能会重复的请求和释放互斥体从而阻止了其他线程不能获取互斥体。
以下给出Volta的独立线程调度一个简单例子:在多线程应用程序中,将节点插入到双向链表中。
在这个例子中,一个双向链表的每一个元素至少由三个部分组成:后向指针,前向指针,以及一个为所有者提供独占访问更新节点的锁。图14显示了在节点A后插入节点B,并且对节点A和C的前后向指针进行更新。
Figure 14: A doubly-linked list with fine-grained locks. Per-node locks are acquired (left) before inserting node B into the list (right).
Volta的独立线程调度确保了即便一个线程T0当前锁住了节点A,同一个warp中另外一个线程T1可以等到锁可用,而不会阻碍T0的进程。但是,需要注意的是,因为在一个warp中活动线程会一起执行,持有锁的线程可能会因为其他在锁上旋转的线程而被降低了性能。
更需要注意的是,以上例子中per-node锁的使用对GPU性能的影响也是相当重要的。传统的双向链表的实现是通过一个粗粒度(coarse-grained)的锁来对整个结构提供独立访问,而不是单独来保护节点。这种方法导致了多线程应用的性能不佳-Volta具有高达163,840个并发线程-导致了极高的锁竞争。通过使用针对节点的fine-grained的锁,对节点的平均竞争将会降低。这个双向链表加上fine-grained锁只是一个简单的例子,但是它显示了独立线程调度能够为开发者在GPU上自然的实施算法和数据结构。
NVIDIA Tesla V100: 世界最领先的GPU
NVIDIA® Tesla® V100是世界最领先的GPU,可以用来加速人工智能,高性能计算,以及图像处理。在最新GPU架构的支持下,NVIDIA Volta?, TeslaV100 能够在一个GPU中提供与100个CPU相当的性能,这样使得数据科学家,研究人员,以及工程师能够完成更多以前不可能完成的挑战。
拥有640 个Tensor 核,Tesla V100 是世界上第一个GPU能够处理100TFLOPS的深度学习性能要求。下一代的NVIDIA® NVLink?能够连接多个V100 GPUs 使得速度高达300 GB/s,从而实现世界最强的计算服务器。以往需要花费数周的计算来完成AI模型的训练,现在则能够在短短数天完成。随着训练时间的急剧下降,AI领域将会有更多的研究问题得到解决。
热门文章推荐
重磅|Facebook开源最新CNN机器翻译项目Fairseq,速度是谷歌9倍加速器滴滴免费版!
最新|李飞飞团队新成果:提出视频字幕密集型事件描述新模型(附资源)
推荐|CMU开源:价值百万美元的多目标人体关键点实时检测
报告|25所高产大学:源源不断为硅谷顶尖科技公司输送科技人才
最新|2017美国Top15实习雇主出炉,Facebook排名第一
重磅|欧盟重砸10亿欧元 企图抗衡中国量子计算机主导地位
资源|5本深度学习和10本机器学习书籍(免费下载)
热文|成人网站PornHub爬虫,一天可爬取500万以上的视频(附源码)
2 留言