前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1.2 GPU VS CPU

1.2 GPU VS CPU

作者头像
代码咖啡
发布2018-08-28 09:46:54
4010
发布2018-08-28 09:46:54
举报

文章内容源自《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 上编程已经容易多了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.2 GPU VS CPU
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档