免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: prolj
打印 上一主题 下一主题

CUDA很不错啊 [复制链接]

论坛徽章:
0
71 [报告]
发表于 2009-01-11 20:54 |只看该作者
这个东西一出来,intel就要头大了,呵呵!

论坛徽章:
0
72 [报告]
发表于 2009-01-11 20:58 |只看该作者

简单分析下

在CUDA中,GPU应该通过AGP高速接口与CPU架起桥梁。
CPU拥有所有外设资源即可以直接访问任何外部资源。最关键的是主存
GPU不拥有所有外设的访问权。比如硬盘等。也没有直接访问主存的权利,需要通过CPU间接访问。

现代PC最大的速度瓶颈是主存,硬盘而不是CPU本身。CPU已经相当的快以至于大多时间上是在等待主存,硬盘等这些。

由于GPU与CPU这种共享资源的方式,所以CUDA无法改善上面提到的PC系统瓶颈问题。
GPU的改善是在计算能力,还是以前的例子,比如计算A*B+C*D+E*F+G*H。这也就是为什么CUDA主要还是面向并行计算的。

对比多核CPU,就是现在的双核,四核,不是64位核。其计算能力不如GPU(更多核)改善的猛烈。但是这种却可望改善上面提到的PC系统瓶颈问题。每个核都拥有对外设的直接访问权,所以按多线程式的就可以改善对主存,外设等的流水处理。

真正的并行,可以这样看:
读数据 --> 运算 --> 存数据
对读数据就是涉及主存操作,比如上面的式子,最大并行就是同时读到A,B,C,D,E,F,G,H。这个要求置8组内存控制器,8组内存等。
对运算部分,最好就是一次计算得到A*B+C*D+E*F+G*H,但通常实现时不行的,于是最大并行就得最少四个运算核。比如4个乘法,两个加法核这样的塔状计算网。

最存储部分要求一般都是跟读取一致。
这样的配置,对PC而言这样就有点太夸张了。
由此,看到GPU在运算部分就很接近这样的部分了。但是它不能解决主存操作部分。

[ 本帖最后由 fineamy 于 2009-1-11 21:16 编辑 ]

论坛徽章:
0
73 [报告]
发表于 2009-01-11 21:03 |只看该作者
基于Gpu写一个OS,或许是一个新的机会!各位大牛牵头搞一个linux移植上去试试!
可能还需要bios和控制芯片支持,这些东西对于GPU制造商不是什么难事,期待这项技术的发展,哪天只插个显卡就OK了,这也是对intel增加显示核心的最好回应!

[ 本帖最后由 rawa9999 于 2009-1-11 21:22 编辑 ]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
74 [报告]
发表于 2009-01-11 23:43 |只看该作者
原帖由 rawa9999 于 2009-1-11 21:03 发表
基于Gpu写一个OS,或许是一个新的机会!各位大牛牵头搞一个linux移植上去试试!
可能还需要bios和控制芯片支持,这些东西对于GPU制造商不是什么难事,期待这项技术的发展,哪天只插个显卡就OK了,这也是对inte ...

你这就是在搞笑了

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
75 [报告]
发表于 2009-01-11 23:55 |只看该作者
原帖由 fineamy 于 2009-1-11 20:58 发表
在CUDA中,GPU应该通过AGP高速接口与CPU架起桥梁。
CPU拥有所有外设资源即可以直接访问任何外部资源。最关键的是主存
GPU不拥有所有外设的访问权。比如硬盘等。也没有直接访问主存的权利,需要通过CPU间接访问 ...

I/O速度差别很多时候不是1倍2倍的差别,而是数量级的差别。所以,cache(硬cache以及软cache)是多么的重要啊,呵呵。
中断方式最早出来的原因记得好象也是因为I/O太慢

论坛徽章:
0
76 [报告]
发表于 2009-01-12 01:23 |只看该作者

cache

I/O速度差别很多时候不是1倍2倍的差别,而是数量级的差别。所以,cache(硬cache以及软cache)是多么的重要啊,呵呵。
中断方式最早出来的原因记得好象也是因为I/O太慢


cache是性价比导致的,解决主存与CPU的交互问题。
中断解决CPU与外设I/O的交互问题。

CPU有众多的外设,CPU通过桥或BUS将网卡,硬盘,U盘,鼠标,显卡,声卡,各种扩展卡等等连在一起,
于是构成了一个网状系统,比较简单的如星状网,总线式。这里我们统一理解为网状系统。
这些外设有的比较傻瓜(好像还很难找到一个傻瓜设备,比如并口设备吧),有些却是相当智能的,比如硬盘控制器,显卡控制器,USB控制器等。无论是傻瓜外设,还是智能外设,他们构成了这个网状系统的节点。其中CPU本身也是这个网络系统中的一个节点,只是它是一个关键节点。

现在就有个概念,比如internet网络常常有人做类似的事情:一个大型的复杂任务,一个人单独计算任务太大,于是就有算法提出来,拿到internet上,靠这个巨型网上有能力的节点分散来计算。
从这个角度来看,CPU及智能外设组成的网络就像这里internet上这个网络类似,当然规模不同。
由于现在大多数PC外设都具有智能性,这里智能性指其内部有CPU。如果能将这些CPU适当的开放出来,而不是封闭的,只限于外设自己使用。那么这个网络的计算能力将大大加强。如果说原来的CPU与外设是主仆关系,那么现在就变成了朋友关系,伙伴关系。

NV的CUDA实际就是基于这种类似的思想,把显卡这个智能外设的GPU开放出来,可以配合CPU做一些工作。
随着硬件价格的不断下降,更多的外设也可以参与进来。
不过正向NV所说,AGP给它提供了足够的带宽,再加上GPU的优势,所以GPU先行了一步。

话说回来,这种GPU与CPU配合的思想,实际上也不是什么新鲜玩意,如LS有人说的FPU的协处理。
但是无可否认NV第一个提出CUDA?

[ 本帖最后由 fineamy 于 2009-1-12 01:27 编辑 ]

论坛徽章:
0
77 [报告]
发表于 2009-01-12 09:59 |只看该作者
运算一个64M字节的Des编码GPU比CPU快11.4倍,我觉得至少可以修改linux内核,使一些任务偏向GPU运算,比如加密、压缩等等

论坛徽章:
0
78 [报告]
发表于 2009-01-12 11:30 |只看该作者
原帖由 cjaizss 于 2009-1-10 12:37 发表

GCC的优化倒不是比较落后,而是初衷就不同。
GCC从一开始就要把它变成一个通用编译器,通用编译器的原则就是不偏袒哪个处理器。如果要在哪个处理器上实现特殊的处理,那几乎是哪个CPU公司要用,那么公司自己 ...

Pro64和LLVM都是通用的啊,Open64现在支持的Arch只有x86,x64,IA64,MIPS和CUDA,LLVM主流的Arch都支持,包括Cell。LLVM通用到还支持JIT和bytecode虚拟机了,并且CG算法、寄存器分配算法...都是很容易替换的。
三个编译器都在发展,设计和实现上各有特点,有些细节上都有对方的影子。

论坛徽章:
0
79 [报告]
发表于 2009-01-13 18:30 |只看该作者
原帖由 rawa9999 于 2009-1-11 18:17 发表
并行处理是多个处理核心同时具备统一的指令集,协处理和主处理器拥有各自的指令集,这是最大的区别!指令调度则类似!

1)“并行处理是多个处理核心同时具备统一的指令集”,这是同构多处理。各个处理器可以有不同的指令集,就叫异构多处理。
2)对于传统浮点协处理来说,CPU与FPU确实是完全不同的指令集。但是,这并不意味着协处理器与主处理器就必须是不同的指令集。像CUDA那样的东西,我猜想,相同的矢量计算指令才能获得较高的效率。
3)是并行处理,还是协处理,关键在于指令调度。

论坛徽章:
0
80 [报告]
发表于 2009-01-13 19:48 |只看该作者
理论上的东西不想多说,现在说道多处理就是具备相同指令集的多处理器,不知道那些不同指令集的多处理有什么应用?比如哪一款处理器是采用不同指令集的并行多处理?

[ 本帖最后由 rawa9999 于 2009-1-13 20:11 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP