GPU发展和现状是什么样的?
GPU,又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器,与CPU类似,只不过GPU是专为执行复杂的数学和几何计算而设计的,这些计算是图形渲染所必需的。随着人工智能的发展,如今的GPU已经不再局限于3D图形处理了,GPU通用计算技术发展已经引起业界不少的关注,事实也证明在浮点运算、并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能。 GPU的特点是有大量的核(多达几千个核)和大量的高速内存,最初被设计用于游戏,计算机图像处理等。GPU主要擅长做类似图像处理的并行计算,所谓的“粗粒度并行(coarse-grainparallelism)”。这个对于图像处理很适用,因为像素与像素之间相对独立,GPU提供大量的核,可以同时对很多像素进行并行处理。但这并不能带来延迟的提升(而仅仅是处理吞吐量的提升)。比如,当一个消息到达时,虽然GPU有很多的核,但只能有其中一个核被用来处理当前这个消息,而且GPU核通常被设计为支持与图像处理相关的运算,不如CPU通用。GPU主要适用于在数据层呈现很高的并行特性(data-parallelism)的应用,比如GPU比较适合用于类似蒙特卡罗模拟这样的并行运算。
CPU和GPU本身架构方式和运算目的不同导致了CPU和GPU之间的不同,正是因为GPU的特点特别适合于大规模并行运算,GPU在“深度学习”领域发挥着巨大的作用,因为GPU可以平行处理大量琐碎信息。深度学习所依赖的是神经系统网络——与人类大脑神经高度相似的网络——而这种网络出现的目的,就是要在高速的状态下分析海量的数据。例如,如果你想要教会这种网络如何识别出猫的模样,你就要给它提供无数多的猫的图片。而这种工作,正是GPU芯片所擅长的事情。而且相比于CPU,GPU的另一大优势,就是它对能源的需求远远低于CPU。GPU擅长的是海量数据的快速处理。 工业与学术界的数据科学家已将GPU用于机器学习以便在各种应用上实现开创性的改进,这些应用包括图像分类、视频分析、语音识别以及自然语言处理等等。尤其是深度学习,人们在这一领域中一直进行大力投资和研究。深度学习是利用复杂的多级「深度」神经网络来打造一些系统,这些系统能够从海量的未标记训练数据中进行特征检测。 虽然机器学习已经有数十年的历史,但是两个较为新近的趋势促进了机器学习的广泛应用:海量训练数据的出现以及GPU计算所提供的强大而高效的并行计算。人们利用GPU来训练这些深度神经网络,所使用的训练集大得多,所耗费的时间大幅缩短,占用的数据中心基础设施也少得多。GPU还被用于运行这些机器学习训练模型,以便在云端进行分类和预测,从而在耗费功率更低、占用基础设施更少的情况下能够支持远比从前更大的数据量和吞吐量。 将GPU加速器用于机器学习的早期用户包括诸多规模的网络和社交媒体公司,另外还有数据科学和机器学习领域中一流的研究机构。与单纯使用CPU的做法相比,GPU具有数以千计的计算核心、可实现10-100倍应用吞吐量,因此GPU已经成为数据科学家处理大数据的处理器。
GPU未来趋势
GPU的未来方向,可以从NVIDIA 2019年的中国GTC(GPU technology conference)大会窥见一斑。GTC会议是NVIDIA近年来每年举办的一场GPU技术大会,汇集全球顶级的GPU专家,提供GPU领域颇具热门话题的相关培训和演讲。在这个大会上展示的是全球GPU研究人员的最新的研究和应用方向,通过GTC会议可以窥见GPU的未来。2019年中国GTC大会设置了两大主题,分别是AI和图形,两个大主题之下各自又有一些小主题,
GPU的未来趋势无外乎3个:大规模扩展计算能力的高性能计算(GPGPU)、人工智能计算(AIGPU)、更加逼真的图形展现(光线追踪 Ray Tracing GPU)。虽然GPU的最基本功能-显示技术在大会主题中没有“显式”的提及,但是众多应用方向均与之密切相关,譬如:智慧医疗和生命科学、游戏、虚拟现实/增强现实、工业设计与工程、自动驾驶与交通等,因此支持更加清晰和动感的高清显示是无需强调的未来趋势。此外,由于GPU越来越广泛地应用到手机、终端、边缘计算节点等嵌入式设备,所以高效能也是一个永恒的追求。
高性能计算
NVIDIA最新发布的Tesla V100s高性能计算GPU,集成5120个CUDA Core,640个Tensor Core,采用32 GB HBM2显存,显存带宽达1134GB/S,单精度浮点计算能力达16.4 TFLOPS。
GPGPU在图形GPU的基础上进行了优化设计,使之更适合高性能并行计算,加上CUDA多年来建立的完整生态系统,其在性能、易用性和通用性上比图形GPU更加强大。基于这种特性,GPGPU将应用领域扩展到了图形之外,在自动驾驶、智慧医疗、生命科学、深度学习、云计算、数据处理、金融等方面均 得到广泛应用,关于它的科研成果和新应用模式也层出不穷。
相比CUDA,OpenCL具有更好跨平台性和通用性,得到更多GPU硬件厂家的支持,但由于其对开发者的友好程度不高,直接应用反而不多。
人工智能计算
GPU的并行处理结构非常适合人工智能计算,但传统的基于流处理器的 GPU,其流处理器一般只能处理FP32/FP64等精度的运算,而AI计算的精度 要求往往不高,INT4/INT8/FP16往往可满足绝大部分AI计算应用。针对AI应用,NVIDIA设计了专用的Tensor Core用于AI计算,支持INT4/INT8/FP16等不同精度计算,RTX 2080集成了544个Tensor Core,INT4计算能力可达455 TOPS。
基于NVIDIA GPU的AI应用绝大多数情况下应用在服务器端、云端,基于GPU的AI计算往往具有更好的灵活性和通用性,在数据中心、云端等环境下具有更广泛的适用性。与之相对应的,在分布式应用领域AI计算更倾向于独立的面向特定应用领域的专用芯片,而不依赖于GPU,如手机、平板等移动端SOC都集成了专用的NPU IP。
光线追踪-更加逼真的图形展现
传统的图形GPU都使用光栅化技术显示3D物体,对物体进行3D建模,将其分割成若干三角形,三角形的细粒度很大程度上决定最后的成像质量,然后将三角形转换为2D屏幕上的像素点并分配初始颜色值,接下来进行像素处理,基于场景修改像素颜色,并将纹理应用于像素,从而生成像素的最终颜色[9]。
光线追踪与光栅化的实现原理不同,它最早由IBM的Arthur Appel于1969年在“Some Techniques for Shading Machine Renderings of Solids”[10]中提出,光线追踪通过从观察点对每一个像素发射一条光线并找到在世界场景中阻挡光线路径的最近物体来渲染场景,光线有两种,第一种是视者发射的光线,来寻找场景中的交点,另一种是从交点发到灯光的阴影射线,看自身是否是处于阴影当中,光线追踪的一个显著优点是能够处理不平整的表面和固体。
2018年NVIDIA发布的RTX 2080 GPU,采用Turing架构,在GPU中集成了 68个独立的 RT(ray tracing) Core ,用于光线追踪,光线处理能力达到了10 Giga/S,1 080P@60Hz需要处理的光线约为6Giga/S,实测基于光线追踪的应用其帧率大致在50FPS左右,基于RTX 2080的光线追踪达到了可用的程度,光线追踪对于反射和阴影有着更逼真的处理效果,尽管目前仍然是采用光线追踪和传统光栅图形处理相结合的方式来进行图形渲染,但其效果已经远超传统光栅图形处理,对于游戏、电影等追求逼真光影效果的应用,光线追踪能提供电影级画质的实时渲染,带来视觉效果上质的飞跃。
除了游戏、电影方面的应用,产品设计师和建筑师也可以享受到光线追踪带来的好处,借助光线追踪工具和高性能GPU,可以实时生成逼真的产品模型,提高设计迭代速度。
NVIDIA的下一代图形GPU,采用Ampere架构,计划于今年发布,相信在光线追踪方面带来新的提升。