POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
楼主: Elvis
打印 上一主题 下一主题

您认为CUDA技术最终能让我们电脑发展走向GPGPU计算时代吗?[NVIDIA达人挑选赛]

[复制链接]
41#
发表于 2009-7-5 16:11 | 只看该作者
拿PHYSX 来说明CUDA的可编程性没有多少意义,多数支持PHYSX 的游戏,根本不牵扯CUDA 的编程,仅仅利用PHYSX CUDA 提供的API 做计算而已,未来还会有OPENCL CS 可以用来调用,从高层逻辑隐藏CUDA 的复杂性是可能的,但是GPGPU 的目标恐怕不是仅仅提供一个调用接口,否则就不用叫GPGPU了,BROOK已经做得相当好了。
CUDA 通过从硬件结构到软件架构一整套解决方案,提供了可以控制的,一定效能基础的,相对较好的可编程性,至于这个解决方案,能否使GPGPU 成为计算的主流,目前我感觉基本上没什么希望。
Larrabee 和CT 的出现,可能会成为GPGPU 的主流,唯一的问题是,那时候的GPGPU 可能就不是GPGPU 了,而是Many Core 计算时代。
HPC 领域,Many Core 和异构计算无可置疑是未来几年的主流方向,民用服务器和桌面领域,会晚一些,迟早的问题。
回复

使用道具 举报

42#
发表于 2009-7-5 16:26 | 只看该作者
38# iverlin
Larrabee 也不仅仅是一个处理器,也并非仅仅针对服务器领域,从目前的消息看,至少比G300 进度要乐观很多。经过两次流片,现在的主要问题还是软件驱动,CT on Larrabee 目前也处于测试阶段。
我来解释一下CT 是什么,CT 首先是一种C 语言的并发程序设计标准,是一种C语言扩展,实现上,是一套源代码,一套编译器,运行时自动在不同的处理器平台并行化,换句话说,今天写的程序,今天编译,对于Intel 未来的Many Core 或者Multi Core 都可以直接运行,运行的效率,由Intel 开发的RT 支持决定,这和CUDA 相比,实在是天上地下的差别,对于做计算应用的开发人员来说,如何选择是很容易的。
目前科学计算软件,大一点的,代码量超过百万行,用CUDA 改写再调优,恐怕这个工作本身就会消耗数以千计的人年,未来硬件架构的变化,未来计算规模的变化,都可能影响这几千人年的工作,这是任何软件公司都无法承受的,对于这样的项目,CT 很明显是更好的选择,也许是目前能够看到最好的选择,所以保持观望的人非常多。中科院在IPE 采购了800+TFlops 的Tesla 后,又设立基金鼓励使用IPE Telsa 并购买GPU 系统,申请者寥寥,多数开发者试水后,基本是保留态度。
回复

使用道具 举报

43#
发表于 2009-7-5 21:00 | 只看该作者
本帖最后由 iverlin 于 2009-7-5 21:37 编辑

LS可谓扭曲事实,居然说LARRABEE并非针对服务器领域,难道针对PC个人用户?谁有这个能力来消受?还比G300进度乐观很多呢。。。INTEL自己都绝对不敢说这个,先查清楚LARRABEE目前的效能再说吧。

这张图是我用3D软件,用Q6600 OC3.6G,历时10分钟渲染出来的,这是基本的光线追踪效果,
LARRABEE要实现这个级别的光线追踪效果的游戏达到每秒30帧的话,通过架构改革,硬件和软件架构的效能需要等效于Q6600 3.6G的
10X60X30=18000倍!

虽然不能这样对比,但是足以见得,即使架构怎么优秀,只要是基于X86实现光线追踪,也是一个很恐怖的性能要求,所以我才说LARRABEE不是大众化的产品,因为这个技术难度决定了LARRABEE之于普通消费者是个遥远的东西,不管是从时间上,还是金钱上


以下这个是LARRABEE目前能达到的光线追踪效果,分辨率是450X320
建议点击看“大图”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

44#
发表于 2009-7-5 21:51 | 只看该作者
43# iverlin
不仅仅针对服务器领域,请完整理解我的话。
Larrabee 面向的是包括游戏显卡在内的众多领域,至于价格,基本上是主流GPU 的水平,不过有可能会在驱动或者显卡硬件做一点手脚,做显卡用,不能完全发挥性能。
Larrabee 已经经过了两次流片,硬件设计包括后端,基本凝固,进度上,G300 离这个目标还很遥远。
我们现在的比较是Larrabe 24c 800M 和i7 965 做对比,单精度amber 变换 上可以做到10倍左右加速比,和S1070 做得差不多,而精度要强一些。
要知道,CT on Larrabee 我们只用了一个星期就完成了代码移植,而CUDA 我们做了近3个月,二者差距多大,不言而喻。
以CUDA 来说,CUDA 能够做到的,Larrabee CT 可以做得更快更好,开发难度更低,而Larrabee 在GPGPU 领域做不了的,CUDA 一定也做不了,CUDA 做不了的一些算法,Larrabee CT 仍然可以做得很好,我想这就是二者目前的基本比较了。
另外,我好象没有看到任何你用CUDA 做的例子,能脱离空想说点实在的吗?
回复

使用道具 举报

45#
发表于 2009-7-5 21:55 | 只看该作者
44# tomsmith123
另外,Larrabee 不是救世主,聚合计算能力1G 的Larrabee 24C 也只有1.5T 单精度,这和大约120G 的I7 来说,至少不是天上地下的差别。
回复

使用道具 举报

46#
发表于 2009-7-5 22:15 | 只看该作者
这个很有技术含量。。。。
回复

使用道具 举报

47#
发表于 2009-7-5 22:15 | 只看该作者
本帖最后由 iverlin 于 2009-7-5 22:18 编辑
43# iverlin  
不仅仅针对服务器领域,请完整理解我的话。
Larrabee 面向的是包括游戏显卡在内的众多领域,至于价格,基本上是主流GPU 的水平,不过有可能会在驱动或者显卡硬件做一点手脚,做显卡用,不能完全发挥 ...
tomsmith123 发表于 2009-7-5 21:51


我也说了不仅仅是服务器,我说过针对的是“服务器和工作站”,而不是PC,不是PERSONAL COMPUTER,既然不是PC就不会引领一个时代。

流片?龙芯也出N次流片了,能说明什么?不能用的东西能说明什么?G300估计今年内就能上市了,LARRABEE能吗?估计G500出来LARRABEE还是没有上市!
回复

使用道具 举报

48#
发表于 2009-7-5 22:33 | 只看该作者
47# iverlin
龙芯3 今年6月第一次流片完成,你的龙芯流过几次片从何说起?
如果G500 出来,Larrabee 没有上市,我输你1万人民币,否则你输我1000人民币,你觉得如何?
说话尽量负责一点,不要信口开河。
回复

使用道具 举报

49#
发表于 2009-7-5 22:37 | 只看该作者
毫无疑问 CUDA或者GPGPU是带给业界的一次计算的革命.
非常出色的并行计算能力,这是带给我们最明显的特点.

当然,请不要混淆概念,目前的GPU架构来说是不可能取代CPU的.
CUDA或者GPGPU来说不是全部.

并不是任何情况都适合GPGPU或者CUDA,在串行非常多的情况下,是不适合用CUDA来做的.
CUDA只能适合高度并行的地方,并且对数据精度要求不高的地方.
目前CUDA的环境来说,只有GT200芯片才能支持double数据类型,其他所有芯片G9X和G8X系列都不支持double数据类型,仍然在32 位,这对一些高精度的数据类型来说是一个很难办的事情,而且GT200芯片对于double的运算性能非常差(64bit运算单元在每个SM中只有一个, 因此运算速度只有32bit数据的八分之一到十二分之一左右.),不过NVIDIA已经在GT300中大幅加强了双精度的计算性能.

CUDA的另外一个限制是:对于分支预测太多的地方,是非常不适合用CUDA计算的,因为NVIDIA的SM没有预测执行机制(分支预测单元(Branch Predicator))。这是与CPU一个重大区别的地方。GPU的任务是处理不需要预测的任务,因此也就可以省掉预测相关的电路,降低功耗。在需要分支时,只有当warp中所有的thread都计算出各自的分支的地址,并且完成取指以后,warp才能继续往下执行。一个warp内的线程是由同一个SM执行的,而一个SM只有一组取指、译码单元。如果一个warp中需要进行分支(即warp内的线程执行的指令指针指向不同的位置),性能将急剧的降低。

另外一个和CPU重要不同是的向量中的元素相互之间可以自由的相互通信,因为它们存在于相同的地址空间;而CUDA中的warp中的每个线程的寄存器都是私有的,它们只能通过shared memory或者缓慢的global memory来进行通信。

设计CUDA的程式,还需要尽量避免host和device过多的数据通信,因为PCI-E通道的带宽还是小了一些(即使是PCI-E 2.0 X16),数据传输的时候需要尽量设计 内存对齐 以求获得最大的存储器性能.

CUDA的device端的程式调试起来是比较困难和痛苦的,因为不能像以往的程式那样设置断点或者很清楚的侦测到数据异常,调试的话只能用EMU(模拟)模式运行,但是模拟模式运行的话速度又慢而且还不一定准,所以这是痛苦的事情,还好据说CUDA 2.2中已经加入了GPU硬件模式的debugger,不过还没有用过这个东西,还不清楚这个是否会带来一些好的改变。

CUDA 2.2的发布带来了一些可喜的进步,比如Zero-copy功能,可以让程序直接访问系统内存(host,非device),这样有效的降低了host与device之间的数据传输量,当然,这个也仅仅支持GT200芯片。

CUDA的一个重要的进步在于,改变了传统的GPGPU的模式,传统的GPGPU模式需要把指令一个一个的映射成为DirectX指令,这无疑大大的增加了编程的难度,但是CUDA不再需要这样做,这样大大降低了入门的难度。
再来说说OpenCL,目前OpenCL尽管已经发布了1.0的规范,但是却并没有流传开来其OpenCL的编译器(据说已经出现了OpenCL编译器),其底层度和CUDA的Driver API相当,当然,偶现在还不太熟悉OpenCL,所以暂时不发表什么言论。


尽管有诸多限制,但是CUDA现在来看依然是非常喜人的,极其强大的运算性能和并行能力,在一些地方有着一两个指数级的加速比,这是非常惊人的,在我自己做的部分程式中,平均能够带来60倍左右的加速比(当然,偶现在写的都是些比较简单的程式),这是非常惊人的加速比。

综上所述,在PC上面CUDA可以使显示卡变成一颗高性能的协处理器(coprocessor),这是一个大好的资源。

P.S.CUDA入门并不难,具有C语言基础和一些计算机常识即可.
回复

使用道具 举报

50#
发表于 2009-7-5 22:43 | 只看该作者
本帖最后由 iverlin 于 2009-7-5 22:48 编辑

龙芯2F之前的2E不是流片过了么
你说LARRABEE比G300还乐观,如果G300上市了LARRABEE还没上市的话,你输我100好吗?相反我输你10000!

请说话负责点。
回复

使用道具 举报

51#
发表于 2009-7-5 22:47 | 只看该作者
50# iverlin
龙芯2F 已经上市了,所谓龙梦就是用的龙芯2F,目前流片的是四核的龙芯3,计算所原计划6月下旬给我们一批样片,因故推迟了。
回复

使用道具 举报

52#
发表于 2009-7-5 22:52 | 只看该作者
毫无疑问 CUDA或者GPGPU是带给业界的一次计算的革命.
非常出色的并行计算能力,这是带给我们最明显的特点.

当然,请不要混淆概念,目前的GPU架构来说是不可能取代CPU的.
CUDA或者GPGPU来说不是全部.

并不是任 ...
玉清 发表于 2009-7-5 22:37


很好的回应了对方CUDA编程难的论点
回复

使用道具 举报

53#
发表于 2009-7-5 23:02 | 只看该作者
52# iverlin
这篇应该是CSDN 上介绍CUDA 的入门贴。
用CUDA 写程序本来不难,但是写好就太不容易了。
回复

使用道具 举报

54#
发表于 2009-7-5 23:05 | 只看该作者
52# iverlin  
这篇应该是CSDN 上介绍CUDA 的入门贴。
用CUDA 写程序本来不难,但是写好就太不容易了。
tomsmith123 发表于 2009-7-5 23:02



这位说话请您先调查清楚,这是我的原创,其中参考了 NVIDIA's GT200--- Inside a Parallel Processor一文。

这是我首发在GZ,假如您说这是在CSDN上面的帖子,请您先给出确凿证据,谢谢!
回复

使用道具 举报

55#
发表于 2009-7-5 23:08 | 只看该作者
54# 玉清
抱歉,这样的帖子看得比较多。
不过我实在看不出哪里是新意。
回复

使用道具 举报

56#
发表于 2009-7-5 23:09 | 只看该作者
54# 玉清  
抱歉,这样的帖子看得比较多。
不过我实在看不出哪里是新意。
tomsmith123 发表于 2009-7-5 23:08


看不出新意不代表就是抄袭,谢谢.
回复

使用道具 举报

57#
发表于 2009-7-5 23:14 | 只看该作者
56# 玉清
至于你提到的60倍加速比,参照系统是什么?使用的平台是什么,能大致说一下吗?
回复

使用道具 举报

58#
发表于 2009-7-5 23:16 | 只看该作者
56# 玉清  
至于你提到的60倍加速比,参照系统是什么?使用的平台是什么,能大致说一下吗?
tomsmith123 发表于 2009-7-5 23:14


参照是我自己写的程式:
由于是初学,所以写都比较简单,做过个简单的Prime验证,加速比是达到了100倍.
当时的平台是9600GT+运行在3Ghz的Athon 64 X2.

要截图的话我再跑一遍测试给你看.

不过现在换U了.
回复

使用道具 举报

59#
发表于 2009-7-5 23:22 | 只看该作者
58# 玉清
哦,我想数字恐怕有不少问题。
理论上,2G 的X2 大致有10-18GFlops 的性能,96GT 大致是200-220GFlops 单精度的性能,也就是说,理论上二者差距也仅仅是不到20倍,当然,如果你在X86 上性能不高,GPU 上发挥到极限,也不能排除有这样的结果。
目前单精度看,最好的GPU 是最好的CPU 的10倍左右,而实现GPU 高效率,难度远远高于CPU。
回复

使用道具 举报

60#
发表于 2009-7-5 23:32 | 只看该作者
58# 玉清  
哦,我想数字恐怕有不少问题。
理论上,2G 的X2 大致有10-18GFlops 的性能,96GT 大致是200-220GFlops 单精度的性能,也就是说,理论上二者差距也仅仅是不到20倍,当然,如果你在X86 上性能不高,GP ...
tomsmith123 发表于 2009-7-5 23:22


不好意思,请不要妄下结论.
加速比达到20倍以上的CUDA程式 我周围很多牛人都有很多.
具体可以参考CSDN的CUDA版块校园程式设计大赛那里有部分.

还有,请不要直接以数字直接做结论,不能这么简简单单的考虑就说不可能达到100倍的加速比.
host端的代码偶写的是串行的,并没有Mutil-Thread,而device端到底并行还是串行你应该知道是什么情况.

假如您有需要,我可以把code和运行的截图贴出来,欢迎您来指点.
回复

使用道具 举报

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

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-4-25 17:05

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表