GPU概述

任务

在对CPU进行了解后,不妨下一步对与它相似的GPU进行系统认识。初次注意到它是对于深度学习设备的联系,感觉它具有卓越的运算性能。GPU对图像显示的功能主要体现在游戏画面,整个发展过程不妨随游戏的变化直观感受。

定义

图形处理器(英语:Graphics Processing Unit,缩写:GPU;又称显示核心、显卡、视觉处理器、显示芯片或绘图芯片)是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。

意义

图形处理器使显卡减少对中央处理器(CPU)的依赖,并分担部分原本是由中央处理器所担当的工作,尤其是在进行三维绘图运算时,功效更加明显。图形处理器所采用的核心技术有硬件坐标转换与光源、立体环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等。

技术背景与发展

黑白

最初,电脑中处理影像输出的显示芯片,通常很少被视为是一个独立的运算单元。虽然英伟达公司(NVIDIA)在1999年8月发表GeForce 256绘图处理芯片时首先提出GPU的概念,但从上世纪70年代起,已经可以在游戏机上显示图像,但方式是直接用CPU桶式移位器把图像数据输出到显示器上。

1975年的游戏Gun Fight是第一款用微处理器(intel 8080)运行的游戏(来源:https://www.arcade-history.com/?n=gun-fight-model-597&page=detail&id=1040

彩色

到80年代时,第一块使用大规模集成电路技术的GPU诞生,是美国的一家图像芯片公司制造的NEC µPD7220,它也带动了一次GPU革命浪潮,推动intel公司第一款图像处理芯片82720的出现,能够处理16位的彩色图像。

第一块集成图像处理芯片——NEC μPD7220A(来源:https://en.wikipedia.org/wiki/%CE%9CPD7220
1982年的一款动作游戏《Robotron: 2084》(来源:http://www.pixelatedarcade.com/games/robotron-2084

3D

随着图像显示技术的发展,越来越多种颜色可以显示在屏幕上,也应运而生了2D和3D的专用芯片,日本的游戏公司Namco在1988年发布的Namco System 21是第一款针对3D图像显示设计的游戏主板。

1989年发布第一款3D游戏《winning run》(来源:https://www.threefieldsentertainment.com/2019/12/20/winning-run-namco-1989-history-of-arcade-racing-part-18/

VGA与SVGA

VGA经典启动画面(来源:https%3A%2F%2Fwww.lifewire.com%2Fhow-to-start-windows-xp-in-safe-mode-2624542)

这两个词语是在C课设期间耳熟能详的两种显示方案,其实它们的含义分别是:

  • VGA是IBM于1987年提出的一个使用模拟信号的电脑显示标准。这个标准已对于现今的个人电脑市场已经十分过时。
  • 原本SVGA是IBM用来扩展旧VGA标准而提出的新标准,之后SVGA是由开放组织VESA所制定,并且工业界放弃了为每个更高标准给定独特命名的企图。几乎在1990年后期至2000年前后,显卡能表现出的各种显示规格都被归类在SVGA中。
VGA / SVGA 公对母接线(来源:https://www.newegg.com/p/N82E16812119035#

个人电脑

1990年代初期,Microsoft Windows的崛起引发人们对高性能、高清晰度二维位图运算的兴趣。在个人电脑市场上,Windows的优势地位意味着台式机图形厂商可以集中精力发展单一的编程接口,图形设备接口。这个时期出现的Win G图形接口成为包括PS在内的大批3D软件的支持API,此外有大量游戏,其中之一是风靡美国的首款第一人称视角射击类游戏:Doom。我也在一个提供游戏模拟器的网站体验了这个小游戏,选择难度为中档(hurt me plenty),居然在第二关就被怪物的大火球烧死,得出结论:菜鸟在任何时期都是菜鸟。

1995年的Doom(来源:https://classicreload.com/dosx-doom.html

OpenGL

OpenGL是出现于90年代初的专业图像API,并成为在个人电脑领域上图像发展的主导力量,和硬件发展的动力。虽然在OpenGL的影响下,带起广泛的硬件支持,但在当时用软件实现的OpenGL仍然普遍。

OpenGL的界面(来源:https://www.youtube.com/watch?v=48r193-rggY)

此前我很容易把OpenGL与OpenCV混淆,一个区分方法是,前者将图像显示在计算机上,后者用计算机处理图像。

运用它进行渲染的游戏不计其数,一个著名的例子是B站Up主老番茄的成名之作杀手(HitMan)的首部。

2004年推出的《HITMAN:CONTRACTS》

科学计算

到2002年10月,随着ATI Radeon 9700(也称为R300)的推出,世界上第一个Direct3D 9.0加速器,像素和顶点着色器可以实现循环和冗长的浮点数学运算,并且很快变得像CPU一样灵活,但是对于图像阵列操作,速度更快。像素阴影通常用于凹凸贴图,从而增加纹理,使对象看起来发亮,暗淡,粗糙,甚至圆形或挤压。

2D图像
使用bump mapping(凹凸纹理映射)方式的图像

随着Nvidia GeForce 8系列的推出,GPU成为了更加通用的计算设备。被称为GPU计算或用于GPU上的通用计算的GPGPU的研究子领域已进入机器学习,石油勘探,科学等领域图像处理,线性代数,统计, 3D重建,甚至股票期权定价确定。当时的GPGPU是现在称为计算着色器(例如CUDA,OpenCL,DirectCompute)的先驱,实际上通过将传递给算法的数据视为纹理贴图并通过绘制三角形或四边形来执行算法,从而在一定程度上滥用了硬件使用适当的像素着色器。显然,这会带来一些开销,因为实际上不需要的部件包括扫描转换器之类的部件(三角形操作也不是一件值得关注的事情,除了调用像素着色器外)。

使用HEP数据集,CPU与GPU的表现对比(来源:Acceleration of ensemble machine learning methods using many-core devices.)

总结上面的概念,是利用GPU卓越的并行计算性能来进行实际上与图像处理无关的数学运算。举个实例,比特币早期通过CPU来获取,而随着GPU通用计算的优势不断显现以及GPU速度的不断发展,矿工们逐渐开始使用GPU取代CPU进行挖矿。

自动驾驶

2019年NVIDIA发布全球最大自动驾驶处理器DRIVE AGX Orin,它的构成正是集成了NVIDIA的下一代GPU架构和Arm Hercules CPU内核,以及新的深度学习和计算机视觉加速器,这些加速器合计每秒可提供200万亿次操作。

自动驾驶的数据采集(来源:https://www.nvidia.cn/self-driving-cars/

参考资料

Leave a comment

Your email address will not be published. Required fields are marked *