POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

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

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

[复制链接]
61#
发表于 2009-7-9 21:05 | 只看该作者
140# arnew

32位 和 64 位 等等只系硬件的数据表示, 在高级语言上(软件层)可以实现128位甚至更高位的数据类型,譬如mathlab,mathmaticas 等数学软件的编程上。
回复

使用道具 举报

62#
发表于 2009-7-9 21:17 | 只看该作者
157# 玉清

没错,是有损失, 就像你用高级语言写的程序 执行效率没有 汇编写的这么高,
回复

使用道具 举报

63#
发表于 2009-7-9 21:18 | 只看该作者
编程难度和 执行效率之间有个比较微妙的权衡。
回复

使用道具 举报

64#
发表于 2009-7-9 21:40 | 只看该作者
本帖最后由 arnew 于 2009-7-9 21:58 编辑
140# arnew  

32位 和 64 位 等等只系硬件的数据表示, 在高级语言上(软件层)可以实现128位甚至更高位的数据类型,譬如mathlab,mathmaticas 等数学软件的编程上。
tyro 发表于 2009-7-9 21:05

我已经很明确说了,从理论上,你可以用数组来实现任何长度的大数运算,这个没问题。

不过不知道你是否做过大数运算的实现?大数加法问题不大,但是大数乘法和除法的实现,你知道算法复杂度多少吗?

远远不是你说的汇编和程序的差别!针对一些运算,当然不是所有,SSE128位指令的加速效果是非常明显的。

另外提一下,现在的编译器优化能力还是很强的,对很多普通人,如果没有深入了解指令,用汇编写的东西,综合开发成本,还不如直接用高级语言。
回复

使用道具 举报

65#
发表于 2009-7-10 08:51 | 只看该作者
本帖最后由 贵甲 于 2009-7-10 08:58 编辑
140# arnew  

32位 和 64 位 等等只系硬件的数据表示, 在高级语言上(软件层)可以实现128位甚至更高位的数据类型,譬如mathlab,mathmaticas 等数学软件的编程上。
tyro 发表于 2009-7-9 21:05


mathlab,mathmaticas 我记得也说过要支持cuda 但后来看见个demo 就没有下文了

技术部分可行 但没有人支持
回复

使用道具 举报

66#
发表于 2009-7-10 10:56 | 只看该作者
160# 玉清

是啊, CUDA 适合计算密度很大的编程模型,而且子任务的相关性较低。你说的分支就是相关性当然会影响性能,时线程同步和互斥也会影响。

这个也是GPU和CPU在硬件上的区别,GPU以大多数的晶体管来实现运算单元。而CPU则有较多是逻辑电路用于控制单元和高速缓存。
回复

使用道具 举报

67#
发表于 2009-7-10 10:59 | 只看该作者
161# arnew

现在大位数的运算要用软件实现,如果要硬件实现那么可能在大型机上,这样成本太高,而且通用性一般
回复

使用道具 举报

68#
发表于 2009-7-10 11:35 | 只看该作者
CPU和GPU 不能互代替,两个在不同的方向上发展。不过近年人们对视觉计算,图形性能的要求 较高。

CPU在硬件方面的发展的确遇上了瓶颈,譬如intel的上代旗舰U的和现在I7综合性能相差不到50%(QX9770和i7 965/975),但是nv/AMD 近期GPU,每代的提升都差不多接近100%。CPU的频率较难提升,在系统结构层面上的改进的成效也不太大。这样只能“横向”发展,多核! i7的高端系列更回归了超线程技术。intel视乎也学amd的HT3.0那样可以通过QPI总线组成分布式系统,这也体现CPU也像“横”发展。 这和GPU类似,只不过GPU处理的是更轻量级线程。
回复

使用道具 举报

69#
发表于 2009-7-10 16:43 | 只看该作者
显示芯片的运算单元数量很多,因此对于不能高度并行化的工作,所能带来的帮助就不大。

显示芯片通常不具有分支预测等复杂的流程控制单元,因此对于具有高度分支的程序,效率会比较差。

因此,最适合利用 CUD ...
weihua8206 发表于 2009-7-10 12:49


GPU里面好像是有线程派分处理器的,不过好像没详细地说过,记得PS3的CELL好像是也是有个处理器专门做派分任务的。而一般的操作系统的CPU调度算法是软件实现的(当然某些算法要有一定的硬件支持)。

其实CUDA 不是单单GPU在“动”,而是依靠一起的,不恰当地说其实也是一种CPU+GPU的模型(不过是CUDA做桥梁)。 CPU可以执行串行的代码,而核心部分的并行代码则由GPU执行。编译器把CUDA代码编译成PTX代码(GPU执行)和CPU代码(CPU执行)。

举个例子,例如一个待解决的问题的一个模型为G(f(1),f(2),f(3),f(4),f(5),.....f(n)),且f(i)的相关性不大,因此可以用GPU多线程去实现f(i)子任务,而且G功能则由CPU实现。如果子任务f(i)可以再分割成更轻量级的q(i)(t1,t2,t3,t4...tn),则G.f功能可以由CPU实现,t功能由GPU实现。或者G由CPU实现,f.t功能由GPU并行化实现。这就是CPU+GPU协作的一个体现。
回复

使用道具 举报

70#
发表于 2009-7-10 17:00 | 只看该作者
GPU运算针对密集型运算有着不错的优势。但是在有些算法并行化上要求建立一定的数学模型,对于编程人员来说问题就编程了 算法的并行化。

以前看过过一个设计方案,是用来解决海上事故而产生的原油泄流问题的。它的思想大约是依靠许多设计简单功能有较多限制的“个体”一起协作,并且通过恰当的模型把他们总体的表现出一个有较高自治性的系统。像蚁群系统那样,单个蚁表现出较低的适应性,但由许多蚁个体组成的整个蚁群却表现出极强的生命力和顽强性。 GPU里面的多个功能较为单一的SPs们可能可以通过某种复杂的建模方法组成一个较强的系统,从而可以实现较强通用性和适应力。(其实我对这些模型也没太多了解,拿来探讨一下)
回复

使用道具 举报

71#
发表于 2009-7-11 18:58 | 只看该作者
CS4  使用用 OPENGL 做加速的,没用上CUDA。
回复

使用道具 举报

72#
 楼主| 发表于 2009-7-15 14:12 | 只看该作者
看到大家那么热烈的辩论,本辩论暂时再延长一周,大家可以畅所欲言,发表自己见解
回复

使用道具 举报

73#
发表于 2009-7-15 22:17 | 只看该作者
说一千道一万 目的是什么才是最重要的事情。说这些没用的干什么,人家的目的就是为了把你的钱变成人家的,为了这个目的,什么这个啦那个拉德都能出来,改天再炒作一把一个显卡就能如何如何,还不是为了挣钱?太无聊了。
回复

使用道具 举报

74#
发表于 2009-7-15 23:10 | 只看该作者
本帖最后由 Mehus 于 2009-7-16 01:12 编辑

我觉得作为一个用户最希望看到的是能够出现更多基于CUDA技术的应用程序,我认为GPGPU没有必要兼容X86,完全可以在软件设计中将各种任务进行合理分配,其实这点也很简单就可以做到,CUDA已经提供了一系列的平台方案,但是关键是应该提供给程序员一个方便而快捷的方法来从X86转换到CUDA,一个X86程序如果只需要通过在源代码中查找替换这种方式就转换为CUDA运行,在显卡上去更加高速的计算,这不是很吸引人吗,当然还不是这么简单,而很多需要进行大量计算又愿意付出一些时间重写代码的人现在已经这么做了。如果可以更简单,CUDA程序肯定会爆炸性的出现(最好给OpenCL的代码也提供一个代码转换工具或方便的转换方法)。
这肯定是一个趋势,计算机需要处理的数据会越来越多,程序会越来越庞大,数据处理肯定也是会多流向分布式计算发展,当然CPU肯定还是中央处理器,而GPGPU我觉得完全可以理解成一颗很强的协处理器。
对于普通用户也是愿意接受的,因为买了一个显卡就已经拥有硬件平台了为什么不让他发挥能力呢。对于专业用户他们更愿意接受,因为花更少的钱他们可以获得更强大的计算性能。
未来会不会出现类似这样的一张“显卡”——上面的主芯片也就是“GPGPU”是插在GPGPU插槽上的,旁边插有“显存条”,卡的接口是PCI-E X64,而那时的主板上可以同时插上4块这种卡……
所以我认为两点很重要,第一,能够提供更强的处理能力和效能;这点没有什么问题。第二,更强的易用性,包含更好的移植性和开放性;
CUDA是又优越又有危机的东东。“GPGPU“,也许以后不叫GPGPU,他肯定会发挥其强大的计算能力。CUDA可以说是一个市场和应用的开山人,虽然CUDA执行效率肯定会比OpenCL高,但是可能顶不过OpenCL和DirectX11CS使用的普遍性。不过就算OpenCL和DirectX11CS很普遍,CUDA还是工作在更低的层上的,有不需要跨平台的计算仍然可以直接使用CUDA C以获得更高的效能。

结论:“GPGPU”的崛起并非CUDA一人的功劳,CUDA开启了在GPU上的通用计算之门,通用计算技术带领大家进入“GPGPU”时代。

尾语:我觉得大家应该跳出某种现有状况的局限,事物都是发展变化的。我不是学计算机专业的让大家见笑了,说得不对的请见谅
回复

使用道具 举报

75#
发表于 2009-7-15 23:37 | 只看该作者
支持
英伟达最近几年被intel蹂躏的够呛啊
回复

使用道具 举报

76#
发表于 2009-7-16 00:35 | 只看该作者
本帖最后由 Mehus 于 2009-7-16 05:09 编辑

我是中立的,对标题我只赞成一半
通过替换查找就能实现的东西还不如直接typedef......
玉清 发表于 2009-7-15 23:24

很有道理,我了解的程序员都是很勤奋的


x86和CUDA是不冲突的,一个CUDA程式是需要运行在x86的CPU上面的,CPU是存在的.
玉清 发表于 2009-7-15 23:24

没错,这点我很赞成,使用CUDA C的程序是在VC下面挂CUDA的库来编写的,所以其本体是个能够将部分功能转移至GPU的VC程序。
从某种意义上看,我觉得GPGPU不支持X86并不是劣势。


CUDA的执行效率比不比OpenCL现在还不好说,毕竟现在还难以看到OpenCL的编译器...
OpenCL的底层程度和CUDA的Driver API差不多...

CUDA工作层我想应该要比DX11的CS高吧..
玉清 发表于 2009-7-15 23:24

关于OpenCL和CUDA C的效能我主观上感觉CUDA C会好一点,毕竟他和CUDA是同生的,从NV的解释看CUDA应该理解成一种指令集,CUDA C、OpenCL和DX11都是在CUDA构架上运行的一种语言,都需要先通过驱动编译成PTX语言(类似于X86汇编)来在GPU上运行,虽然NV的驱动也会对OpenCL做优化但肯定没有CUDA C更适应NV的GPU的硬件结构和内存管理特性,CUDA C来得更直接,DX11就说不清楚了,这就有点战略性了,对谁优化多一点NV的PTX编译驱动很关键,但我觉得可以大胆推测现有平台上:效率(OpenCL on AMD)<效率(OpenCL on NV)<效率(CUDA C on NV)。效率应该是(单位时间内数据处理量)/(晶体管数*工作频率)。未来AMD也可能改善它的底层构架来更好的支持OpenCL,但是NV也没停下,而且起点比他高。

CUDA是好东西,是很好的开拓者,当然现在也是领先者,但是进入“GPGPU”时代并非完全是CUDA的功劳,而是多种通用计算平台整合的结果,主要是DX11和OpenCL,虽然CUDA C可能比他们更快。
回复

使用道具 举报

77#
发表于 2009-7-16 03:11 | 只看该作者
现在很多软件还是在X86架构,只是有很少的软件为CUDA做了优化.而且就算是有最好的技术也不一定可以成功,RAMBUS就是个例子.INTEL也不会就这样让让NV做大的,也会推出新的技术来抗衡的.
回复

使用道具 举报

78#
发表于 2009-7-16 10:50 | 只看该作者
这是反垄断的开始,好现象。支持
回复

使用道具 举报

79#
发表于 2009-7-16 10:58 | 只看该作者
支持反方
目前用的机器的表现来看
显卡的性能总能发挥到极限
而U在划水
回复

使用道具 举报

80#
发表于 2009-7-16 12:41 | 只看该作者
Elvis老大,我的风扇怎么样了,发出来了吗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 02:46

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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