1.2 GPU VS CPU

文章内容源自《GPU编程与CG语言之阳春白雪下里巴人》

1.2 GPU VS CPU

从上节阐述了GPU的发展历史,那么为什么在CPU之外要发展GPU?GPU 的 vertex programmability 和 fragment programmability 究竟在何处有着怎样的优势?引用在文献【2】第 6 页的一段话为:

Modern GPUs implement a number of graphics primitive operations in a way that make running them much faster than drawing directly to the screen with the host CPU. They are efficient at manipulating and displaying computer graphics, and their highly parallel structure makes them more effective than typical CPUs for a range of complex algorithms.

这段话的意思是,由于 GPU 具有高并行结构(highly parallel structure),所以 GPU 在处理图形数据和复杂算法方面拥有比 CPU 更高的效率。图 1 GPU VS CPU 展示了 GPU 和 CPU 在结构上的差异,CPU 大部分面积为控制器和寄存器, 与之相比,GPU 拥有更多的 ALU(Arithmetic Logic Unit,逻辑运算单元)用于数据处理,而非数据高速缓存和流控制,这样的结构适合对密集型数据进行并行处理。CPU 执行计算任务时,一个时刻只处理一个数据,不存在真正意义上的并行(请回忆 OS 教程上的时间片轮转算法),而 GPU 具有多个处理器核,在一个时刻可以并行处理多个数据

图1 GPU VS CPU

GPU 采用流式并行计算模式,可对每个数据进行独立的并行计算,所谓“对数据进行独立计算”,即,流内任意元素的计算不依赖于其它同类型数据,例如,计算一个顶点的世界位置坐标,不依赖于其他顶点的位置。而所谓“并行计算” 是指“多个数据可以同时被使用,多个数据并行运算的时间和 1 个数据单独执行 的时间是一样的”。图 2中代码目的是提取 2D 图像上每个像素点的颜色值,在 CPU 上运算的 C++代码通过循环语句依次遍历像素;而在 GPU 上,则只需要一条语句就足够。

图 2 CPU 和 GPU 上的代码比较

可能有人会问道:既然 GPU 在数据处理速度方面远胜 CPU,为什么不用 GPU 完全取代 CPU 呢? 实际上,关于 GPU 取代 CPU 的论调时有出现,但是作者本人并不同意这种观点,因为 GPU 在许多方面与 CPU 相比尚有不如。

首先,虽然 GPU 采用数据并行处理方式极大加快了运算速度,但正是由于 “任意一个元素的计算不依赖于其它同类型数据”,导致“需要知道数据之间相关性的”算法,在 GPU 上难以得到实现(但在 CPU 上则可以方便的实现),一个典型的例子是射线与不规则物体的求交运算。

此外,GPU 在控制流方面弱于 CPU,在图中可以看到,GPU 中的控制器少于 CPU,而控制器的主要功能是取指令,并指出下一条指令在内存中的位置, 控制和协调计算机的各个部件有条不紊地工作。 在早期的 OpenGL fp2.0,fp3.0 以及 DirectX 的 ps_4_0 之前的 profile 版本都不支持或不完全支持循环控制流语句(目前在软硬件方面都已得到改进)。由于 GPU 编程完全依赖于图形硬件,故而较早版本的 GPU 并不支持一些常用的编程需要,而现在很多个人电脑或者公司的电脑的更新换代并没有那么快(考虑个人电脑的使用寿命在 4-6 年,所以在 2012 之后,旧式显卡的更新换代会基本结束),这也制约了 GPU 编程技术的使用。

最后进行 GPU 编程必须掌握计算机图像学相关知识,以及图形处理 API, 入门门槛较高,学习周期较长,尤其国内关于 GPU 编程的资料较为匮乏,这些都导致了学习的难度。在早期,GPU 编程只能使用汇编语言,开发难度高、效率低,不过,随着高级 Shader language 的兴起,在 GPU 上编程已经容易多了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

业界 | 微软推出深度学习加速平台「Project Brainwave」:FPGA驱动实时人工智能

选自微软博客 机器之心编译 参与:路雪、黄小天、蒋思源 近日在 Hot Chips 2017 上,微软团队推出了一个新的深度学习加速平台,其代号为脑波计划(Pr...

36570
来自专栏量子位

手机输入法不好用?谷歌要用AI让你打字更快

陈桦 编译整理 量子位 报道 | 公众号 QbitAI 现在,大部分人的日常生活,都离不开手机上的虚拟键盘,而这其中的大部分人都会觉得虚拟键盘不好用。数据显示,...

38370
来自专栏YoungGy

MMD_4a_CollaborativeFiltering

Overview history long tail types of rs model key problems Content-based System m...

21960
来自专栏数据科学与人工智能

【Python环境】数据科学的完整学习路径—Python版

从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的...

258100
来自专栏机器之心

仅需1/5成本:TPU是如何超越GPU,成为深度学习首选处理器的

张量处理单元(TPU)是一种定制化的 ASIC 芯片,它由谷歌从头设计,并专门用于机器学习工作负载。TPU 为谷歌的主要产品提供了计算支持,包括翻译、照片、搜索...

5600
来自专栏AI科技评论

学界 | 谷歌输入法背后的机器智能:思你所思,想你所想!

很多人每天花费大量时间使用移动设备键盘:撰写电子邮件,发短信,参与社交媒体等。 然而,移动键盘仍然在处理速度方面处于劣势。 用户平均在移动设备上的打字速度比在物...

32570
来自专栏CDA数据分析师

数据科学的完整学习路径—Python版

从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的...

28550
来自专栏深度学习自然语言处理

这么好的视频不看吗?深度学习和线代,微积分

大家盼望的中秋节和十一已经基本都要过去了,大家是不是都玩的挺开心呀?(哎,我可没0.0,基本没离开过实验室,别认为我在学习

24120
来自专栏大数据钻研

大数据入门之路 献给迷茫的你

假如你想成为一个数据科学家,或者已经是数据科学家的你想扩展你的技能,那么你已经来对地方了。本文的目的就是给数据分析方面的Python新手提供一个完整的学习路径。...

33440
来自专栏机器之心

资源 | 2017年最流行的15个数据科学Python库

选自Medium 作者:Igor Bobriakov 机器之心编译 参与:朱朝阳、吴攀 Python 近几年在数据科学行业获得了人们的极大青睐,各种资源也层出不...

29640

扫码关注云+社区

领取腾讯云代金券