新西兰天维网社区

 找回密码
登录  注册
搜索
热搜: 移民 留学
查看: 522|回复: 13
打印 上一主题 下一主题

[软件] 关于GPU的一篇奇文 [复制链接]

Rank: 6Rank: 6

升级  5.33%

UID
110742
热情
18
人气
95
主题
0
帖子
297
精华
0
积分
216
阅读权限
20
注册时间
2007-3-11
跳转到指定楼层
楼主
发表于 2010-4-4 15:15:41 |只看该作者 |倒序浏览 微信分享

使用道具 举报

Rank: 9Rank: 9Rank: 9

升级  58.9%

UID
9446
热情
373
人气
688
主题
26
帖子
2058
精华
0
积分
1589
阅读权限
20
注册时间
2003-5-19
沙发
发表于 2010-4-4 18:12:20 |只看该作者 微信分享
懒得点喔!!

还是把内容贴出来吧!!

使用道具 举报

Rank: 9Rank: 9Rank: 9

升级  99.6%

UID
143219
热情
690
人气
1083
主题
40
帖子
2127
精华
2
积分
1996
阅读权限
20
注册时间
2008-5-9
板凳
发表于 2010-4-4 21:08:34 |只看该作者 微信分享
GPU 变回 CPU,硬件变回软件图形加速?为什么很耳熟?

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

升级  74.99%

UID
8765
热情
2422
人气
4161
主题
256
帖子
63076
精华
1
积分
34997
阅读权限
30
注册时间
2002-12-7

元老勋章 10周年纪念

地板
发表于 2010-4-5 16:35:28 |只看该作者 微信分享
额。。。算是我比较目光短浅吧,目前的 GPU 架构虽然跟 CPU 有点相似 但是他们的设计重点不一样啊, 而设计重点的不一样是由他们所要执行的指令不一样导致的啊, 如果非要把GPU 变成CPU,那个人电脑的确会很快,就像现在的TESLAR 一样(也不是很一样,TESLAR 只不过是用了GPU来运行一部分本来要在CPU上进行的工作), 结果就是成本的大幅上升。

顺便说一下硬件加速的原理, 所谓的硬件加速 就是把一系列的指令集成在硬件上,从而变成一个指令,举个很简单的例子:

int i =3;
if(i<2)
i=4;

如果使用“软件加速”的话,这是3个指令(准确的说或许是4个,对不起 ASSEMBLY 没学好), 而如果使用“硬件加速”的话,这就是一个指令, 给I 赋值3并且进行 比较 并且在此给他赋值。

如果抛弃了硬件加速的话 带来的负面性能影响是很大滴,不管到时候 运行速度有多快。

而且现在的 ”快“ 的定义有很多, 怎样的电脑才是快的?
如果你放一个单线程的程序在 世界上最快的超级计算机上运行,跟放在I7上运行,我觉得貌似是I7比较快。
从开始到现在的发展规律都是 DESKTOP都是SERVER 的淘汰产品,也就是说很多年之后我们的DESKTOP 基本上也都是 TESLAR的完全CPU版-- 目前的超级计算机。

这话题太长了,我觉得我还是不说了。。

使用道具 举报

Rank: 9Rank: 9Rank: 9

升级  99.6%

UID
143219
热情
690
人气
1083
主题
40
帖子
2127
精华
2
积分
1996
阅读权限
20
注册时间
2008-5-9
5#分享本帖地址
发表于 2010-4-5 17:23:28 |只看该作者 微信分享
额。。。算是我比较目光短浅吧,目前的 GPU 架构虽然跟 CPU 有点相似 但是他们的设计重点不一样啊, 而设计重点的不一样是由他们所要执行的指令不一样导致的啊, 如果非要把GPU 变成CPU,那个人电脑的确会很快,就像现在的TESLAR 一样(也不是很一样,TESLAR 只不过是用了GPU来运行一部分本来要在CPU上进行的工作), 结果就是成本的大幅上升。ibeloved 发表于 2010-4-5 17:35


这个TELSLAR是什么,不太懂。。。

使用道具 举报

Rank: 6Rank: 6

升级  5.33%

UID
110742
热情
18
人气
95
主题
0
帖子
297
精华
0
积分
216
阅读权限
20
注册时间
2007-3-11
6#分享本帖地址
发表于 2010-4-6 12:56:35 |只看该作者 微信分享
这篇文章的题目比较“标题党”,而有误导不明真相的群众之嫌,所以我贴了Tim的full slide,真正有价值的是Tim对未来趋势的思考,而非结论,这个presentation大约是sep 2009的,现在情况又有一些新发展。

单纯比较指令数量意义不大,这里的重点是广义上的架构,包含了硬件和软件,从最底层到最表层,如何达到经济,有效,灵活。

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

升级  74.99%

UID
8765
热情
2422
人气
4161
主题
256
帖子
63076
精华
1
积分
34997
阅读权限
30
注册时间
2002-12-7

元老勋章 10周年纪念

7#分享本帖地址
发表于 2010-4-6 21:43:13 |只看该作者 微信分享
5# 一天
嗯?我拼错了?NVDIA 网站上有具体咋拼的。。

TESLAR 是一个架构体系,是CUDA 的一个实用例子,一个NVIDIA 建立在CUDA 技术基础上的一种廉价的个人超级计算机方案。

那我多说两句吧:

现在的 显卡 的运算能力都很NB 相信大家都知道了, NB 程度已经比现在的很多CPU 差不多了, 实际上如果就纯性能来比的话, GPU 的并行运算速度比CPU 的要高很多, 原因是 GPU 内部有 N 多个核, 外加了多层次的内存结构, 其实很容易想象,这种架构跟 现在的多核CPU 比较相似, 多核CPU,比如I7,就是4个核,8个线程,3层内部缓存结构。 GPU 也是N多核,一般也是1核多线程(?对这点 不是很确定啊) ,多层的内存架构。当今的GPU 一般都100 多个核了。

那么很容易联想到的问题是, 为啥GPU 100多个核呢? 既然这么NB,为啥不直接当做CPU来用捏?

1. 首先GPU 和CPU 处理的数据有本质的不同, GPU要处理的任务比较单一,就是一块区域的渲染(这个渲染包括了浮点预算啊啥的), 而CPU 的任务比较麻烦一点,也就是说GPU 单核的造价会因此而低一些,这就是为啥100多个核也就才4 500块。

2. 虽然 GPU 不能当做 SOLE  CPU 来使用, 但是他的这种多核 并行运算的本质是可以运用到一些比较特殊的程序中的, 举个很简单的例子, 假设我们有2个 100X100 的内容为FLOAT 的 MATRIX,要做个加法,  如果放在个4核 CPU上,并行运算,那一个CPU 得需要 处理25X100 个加法运算。
而放在100个核的GPU上,那就1个核只需要做1个加法运算。

也就是说,如果4核CPU 想在同一时间内完成100核 GPU的任务,那就需要单核比他快2500倍, 这很显然是很不划算的一种做法。

=============来个华丽的分割线吧,结论了要=======================================

也就是说,既然GPU 很适合处理一些类似于上面那个例子 那种运算, ATI 和 NVIDIA 就想到了 开放 GPU 的端口, 让编程人员可以切实的使用它的API 来进行编程,从而对某些应用程序进行优化。 他俩分别开发了两个不同的API, ATI 的叫做 STREAM, NVIDIA 的叫做 CUDA, 不知道为啥, NVIDIA 的比 ATI 的要火很多, 貌似很少人用STREAM,最少我不用。


题外话1.  因为这两家都互相不兼容,给开发人员带来了很大的不便,所以 一个行业标准, OPENCL 也孕育而生,但是到目前还没有正式的公布(如果我还没落伍的话)。但是他所带来的市场潜力 以及 对计算机的改革是不可低估的。

题外话2. 除了GPU 的多线程, 计算机上还有很多设备都是具备这种特质的,比如说声卡啦,还有老的APPLE上的 FPGA(额。。貌似拼错了) 啦, 都是利用特殊设备上的多线程或者硬件加速性能来处理一些 日常的任务, 显而易见是可以 节省很大的成本。

题外话3. 现在的超级计算机,之所以超级,是因为他多线程(实际上是 多核)的处理能力很强, 单拿出一个核来并没啥了不起的,普通老百姓基本上都买得起。 也就是说就算给我一台超级计算机,我如果没有什么比较可以 多线程化 处理的任务,也跟个小台式机没啥区别。


回到正题,
于是 ATI 和 NVIDIA 市场部就得琢磨着赚钱啊, 他觉得光有了技术了,有了一小部分人FOLLOW,不大理想, 于是他就想着 建造一个系统, 直接把整机给你配好了, 你买我的整个系统, 说上去很牛逼,叫做 个人超级计算机,因为里面除了CPU的 2,4,8个核,还有 4个显卡的 NNNNN个核。

除此之外, NVIDIA 产了一系列的显卡,就叫TESLAR, 他没有任何的视频输出, 他就是个除了 OUTPUT 的显卡, 专门用来进行多线程运算,他的特点是 上面集成的核比一般的显卡更多, 内存更大。 而且一般情况下,可以跟其他的NVIDIA 显卡一起工作。

否则的话,我们只能用 SLI 来进行显卡的连线。  而TESLAR 显卡可以跟任何的NVIDIA 显卡连线(不是 任何也是大部分)。 最最最重要的,是TESLAR 可以完美的支持 CUDA 程序。



先说到这吧,手指头打字有点累了。 想知道再多那咱下次再说。

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

升级  74.99%

UID
8765
热情
2422
人气
4161
主题
256
帖子
63076
精华
1
积分
34997
阅读权限
30
注册时间
2002-12-7

元老勋章 10周年纪念

8#分享本帖地址
发表于 2010-4-6 21:58:04 |只看该作者 微信分享
这个人的 SLIDE 我倒是真没看,实在是没时间,况且这种东西不看也罢,各种预言,只有时间能证明。

现在的设计趋势 从 I3  I5 可以看出来,CPU上集成了GPU,看上去不错吧, 但是目前的技术是他们仍然是分开的,也就是一块板上,有两个U,运算模块和指令集还是分开的。 当然很容易想象,在“不久”的将来,他们或许会合并成一个, 但是不要忘了,现在的这种集成的初衷,是为了节省成本,而不是提升性能。也就是为啥I7 照样还是一个U, 而 I3 I5 是 CPU+GPU。

还有点很重要的就是, CPU 和 GPU 的融合,需要很长的时间, 因为他俩的什么都不大一样。 除了技术上,在市场方面,估计也只有 AMD ATI 才想这么做吧, 毕竟现在的电脑市场不是一个纯技术的市场。

还有个重点就是, 任何的理想的整合,都不可能以牺牲硬件加速为代价的, 因为这样的产品在客户端就没有市场, 为啥要花那么多钱买个慢的系统捏? 如果你说是为了走低价路线 那我只能无语了, 历史上的电脑技术发展都是以更高更快更强为目标的。

当然,有个不容忽视的事实是  个人电脑是服务器的淘汰产品,过去的历史证明了这一切。 现在的超级计算机在几年或者十几年或者几十年之后就会变成个人电脑, 那时候的个人电脑必然有 N多的核,这点是肯定的。实际上,自从P4之后,CPU的发展就开始由频率的飙升转变为核数的增加,我个人认为这是由技术限制而造成的。要想有更快的CPU,频率已经不能再提高了,只能集成多核。

这点有好有坏, 好的是目前很多事情都是需要并行运算的,这对开发成本什么的都带来了很大好处。 坏的是 我们总是可以多加核, 单纯的往横向多核发展是能说明技术的局限性。


或许多少年后,我们个人电脑有了N个核,已经不在乎硬件加速带来的提升,也是有可能,但是个人并不赞同这点。 就想DMA 通道一样,能说我带宽够大了我就不用DMA了嘛?

使用道具 举报

Rank: 6Rank: 6

升级  5.33%

UID
110742
热情
18
人气
95
主题
0
帖子
297
精华
0
积分
216
阅读权限
20
注册时间
2007-3-11
9#分享本帖地址
发表于 2010-4-6 23:21:34 |只看该作者 微信分享
8# ibeloved

谢谢你的回复,尤其是写了这么多字。

tim的slide我只读了两遍,花了两三周,在bus上的时间。虽然没全懂,但是还是觉得很有收获,所以和大家分享一下。做技术的,还是开卷有益。

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

升级  74.99%

UID
8765
热情
2422
人气
4161
主题
256
帖子
63076
精华
1
积分
34997
阅读权限
30
注册时间
2002-12-7

元老勋章 10周年纪念

10#分享本帖地址
发表于 2010-4-7 12:36:30 |只看该作者 微信分享
恩,你这个回复让我去看了看他的简介,说实在的 我真不大清楚他是什么重量级的人物, 要说游戏的开发,他很显然比我高深很多,但是不代表着他说的就是对的。

还是没看SLIDE,下次有时间的时候好好拜读吧。 我只是觉得 如果很清楚的系统的运作,这种演说不看也罢。我可以理解他作为一个游戏开发人员的痛苦,各个API的不兼容,他当然希望gpu 消失,都来普通的cpu编程,这是多么简单的一件事, 带来的益处无非是有更多的开发人员懂了3d的编程。

而最简单的一个道理就是: 现在也可以抛弃硬件渲染啊,直接拿cpu来软件加速就行了, 不就是慢点么。 也就是这点,决定了之后这个抛弃gpu的路程的漫长,就算哪天没有gpu了,也是cpu整合了gpu的功能,硬件渲染必然还要在的。顶多就是不能单独的去买个gpu而已。

使用道具 举报

Rank: 9Rank: 9Rank: 9

升级  99.6%

UID
143219
热情
690
人气
1083
主题
40
帖子
2127
精华
2
积分
1996
阅读权限
20
注册时间
2008-5-9
11#分享本帖地址
发表于 2010-4-7 22:29:05 |只看该作者 微信分享
7# ibeloved

找到了,是Tesla。

使用道具 举报

Rank: 9Rank: 9Rank: 9

升级  99.6%

UID
143219
热情
690
人气
1083
主题
40
帖子
2127
精华
2
积分
1996
阅读权限
20
注册时间
2008-5-9
12#分享本帖地址
发表于 2010-4-7 22:29:51 |只看该作者 微信分享
CPU 取代 GPU,还是 GPU取代CPU,在我看来都是短期内不现实的 ,低端市场除外。

小小的看了下作者的Slide,有机会还有仔细研究。我的理解:作者的观点在于软件3D加速的人工成本低,硬件3D加速的开发成本高。由于针对硬件优化的开发成本高,而GPGPU的限制太多,也同样不是3D开发的未来方向,因此长远来说3D加速会转向软件层次的开发。作者的论据主要在于预见CPU和GPU会同质话,或者增加两者的集成度。讨论这个问题的原因在于作者做的是游戏引擎的开发,周期很长,平均五年出一个引擎,一定要能预见到未来几年的趋势,而基于作者之前几个游戏引擎的成功,他的话应该还是蛮有分量的。

不过也来谈谈我的看法:

其实GPU这个概念出来之前,我们是只有CPU的,如果有3d图形运算,都是CPU的运算,因为没有通过专门的GPU针对3D加速优化,可以算是软件模拟。软件模拟的好处是通用性好,不管什么样的指令,最后能能解码成”1+1=10”。后来大概是3DFX VOODOO卡的出来,独立的3D加速卡的威力魅力优势才占先出来。因为很多非常通用的运算,比如三角型的创建和处理,可以用专门的硬件电路来实现,速度远远超过通用CPU的运算。当初的SGI应该有专业级的3D加速卡了,还回有其他品牌,可惜都是对OpenGL的优化,难入大众市场。因此无法享受规模化的优势,大规模化生产=价钱越来越低,也因此没有能进入消费市场的价格优势。由此可见软件3D加速并不是新概念了,从图形加速卡到硬件加速卡,都是因为周边硬件的发展,PC的普及,有了这个市场需求,出现了专门的周边硬件,来填补这个CPU无法满足的市场空缺。

不到一年前,没有3D显示技术的火热(阿凡达意义上的3D)。还有ATI的EYEFINITY技术,表面上显卡3D加速能量已有饱和的趋势。30-60HZ的速度,加上HD的分辨率。貌似显卡厂商的注意力开始转向开发CUDA,PHYX之类的周遍技术了。我做为一个非狂热游戏玩家,开始考虑低端/集成显卡应该能满足我游戏的要求了。假设我这样的属于主流消费者/或者主流消费者趋势,那么至少厂商们要开始在降低功耗和成本上做文章了,最好的办法,自然是集成GPU入CPU或者主板控制芯片。而且,众所周知AMD, Intel, Nvidia等等等等都有类似的主流集成产品待出。当时看来作者的预言是蛮安全的。不过最近很热的3D显示和个人很干兴趣的EYEFINITY技术的技术增加了GPU对性能的需求。如果这些新技术中的一两项能进入主流市场的话,GPU短时间内还没有办法被取消。从现在的趋势看,GPU还有发展的余地,不像声卡,网卡,Modem之类外设有限的性能需求很快被从外设被集成入了芯片组。从我个人看来,GPU还会作为独立的硬件继续存在一段时间。

回到ibeloved提到的point,GPU和CPU是不一样的运算处理需求。虽然都是处理器,最基本的构架都是与或门开始,但他们是针对不同类型数据/问题领域优化后的处理器构架。可以简单的说:GPU在于数据(DATA),CPU在于控制(CONTROL/LOGIC)。GPU的强项在于大并发数据流量的运算,简单的说就是对图形处理的专门优化,和我们日常的CPU处理有同有不同。GPU替代CPU也不是那么简单。以前CRAY 的Vector Computer,超级计算机的经典机型,速度很快。但是,做日常的运算效率并不一定好,它的处理器设计概念就更接近我们今天的GPU。值得一提的是vector computer很大程度上是专门针对科学运算优化的,同样GPU在科学问题的运算上速度也是相当的惊人,不过在日常计算机操作中,包括服务器上,GPU并没有太大的优势。还是在于设计时针对的问题领域不同,总的来说,科学运算大多是大数据量的处理,很多时候可以通过增加数据带宽,还有多线性流程来加速。而日常和服务器的CPU很多时候时候是在处理IO方面的突发的随机数据,或者是有先后逻辑的问题,对CPU的要求属于控制域方面的问题。

谈到(主流)CPU的优势,Intel 系列的X86处理器的优势在于综合性能,和兼容性。由于这两点的优势,造成了X86系列靠着规模效益,成本可以降的很低。虽然Intel /AMD 的x86指令集发展到今天,为了兼容性的要求,现代的处理器本身都已经演化成了处理器的硬件模拟器(CISC to RISC),性能本身谈不上最优化。不过凭借着规模化的优势成了最佳性能价格比的构架,除非特殊的科学运算,用x86系列的处理器成了通用运算的最佳选择(前提是有这个能力自己设计集群计算机系统软硬件,比如Google)。当然,通用的x86处理器或者集群处理器一样能优化科学运算,不过作为通用处理器的本身,并没有专门为大数据量的浮点或者整型运算优化。同理,GPU在这些情况下会有比CPU高效很多的情况,不过同样成本下,日常和商用通用的计算任务并不适用这种情况了。而且从软件工业来看,彻底放弃x86指令集的兼容性,目前看是不现实的。所以,CPU也不是那么容易被GPU取代的。

不过现在就连PDA,手机都集成DSP,协处理器,同时没有CPU的制造商不考虑能耗发热因素,集成GPU进入CPU,除了降低低端市场的成本,没有其他的优势。目前主流GPU的半导体数目远大于CPU,而且彼此之间有不可替代性,加上GPU的性能还有提高的余地,CPU想集成GPU,岂不是老虎吃大象?

不是做3D开发的,不过在我看来OpenGL, DirectX不就是对为3D程序的开发提供额外的抽象层次,开发者面对的是API,API来处理软件或者硬件加速。对于只和API打交道的开发者来说,软件或者硬件加速的问题基本和他们无关。同时我们可以说游戏引擎只不过是另一套API而已,讨论来讨论去,作者讨论的是一个基本只和游戏引擎开发人员有关的问题?

使用道具 举报

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

升级  74.99%

UID
8765
热情
2422
人气
4161
主题
256
帖子
63076
精华
1
积分
34997
阅读权限
30
注册时间
2002-12-7

元老勋章 10周年纪念

13#分享本帖地址
发表于 2010-4-7 23:47:42 |只看该作者 微信分享
这么看来这人的演讲倒是有点月经贴的意思,自己开发的慢了就怪目前的架构不好。

其实吧,长远来说,我并不觉得GPU集成在CPU内部是不可能的, 但是抛弃硬件加速是绝对不可能的。 其实只要各NB厂商达成个一致,开发个行业的标准API就好了。 这个是软件问题,不是硬件问题。

使用道具 举报

Rank: 6Rank: 6

升级  5.33%

UID
110742
热情
18
人气
95
主题
0
帖子
297
精华
0
积分
216
阅读权限
20
注册时间
2007-3-11
14#分享本帖地址
发表于 2010-4-7 23:47:59 |只看该作者 微信分享
本帖最后由 newmike 于 2010-4-7 23:59 编辑

12# 一天
总算有人肯读slide了。

其实tim的观点并非是GPU无用论或死亡论,题目的直译是:GPU线路图的终结。他看到CPU和GPU在技术上发展方向上的趋同,现行的pipeline架构带来的困难和挑战,在思考如何构建新的架构,尤其是如何reposition软硬件厂商的定位,即现行的体系无法长此下去,更有效率的体系会终将取代运行更快的体系 - “... Productivity is vital!”。

tim是游戏开发领域的大牛,unreal game engine的开发者,正在研发下一代的game engine - unreal game engine 4,预计五年后启用。所以他的看法和思路是很有价值的。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版| 联系论坛客服| 广告服务| 招贤纳士| 新西兰天维网

GMT+12, 2024-6-24 23:18 , Processed in 0.019868 second(s), 14 queries .

Powered by Discuz! X2 Licensed

Copyright 2001- Sky Media Limited, All Rights Reserved.

回顶部