多核领域的恐慌

最新ubuntu/linux/开源新闻或者其它IT相关资讯
zzsczz
帖子: 67
注册时间: 2006-07-18 16:15

Re: 从回复的人就知道这是灾难

#16

帖子 zzsczz » 2008-04-05 22:24

joo.tsao 写了:以上这么多人的回复都没人理解并行编程的难度以及调试地狱,哪怕是一点点,可以知道这是多么大的灾难!
关于并行编程,应用级别的开发 操作系统或者虚拟己经提供了基础设施,如线程、进程,java的java.util.concurrent等,按照手册编写即可,最终操作系统会把并行处理的任务分配到某个核上。编码是实现,体力活,调试只是辅助手段,用log4j之类的工具;关键是设计的结构要可以有效利用多核。

多核方面系统级别的开发,国内没有应用的需求牵引和实践的市场。编译器级别的开发么,中文没有文化优势,而且硬件没有自己的平台,做来做去还不是替老外打工,当然ms或者intel的研究院就另当别论。

利用多核还有一些方式,如虚拟机运行多个os,每个os运行一个应用,这是加速现有应用的最直接的方式,而且不用重新编译(如果这个应用适应这种结构)

操作系统很早就能管理多个cpu了,以前是用在工作站或者服务器上。现在cpu的频率上不去了,只好多核骗钱,结果就把以前超级服务器的应用搬到pc上,从这个方面看没什么稀奇的
salal
帖子: 18
注册时间: 2008-04-23 1:53
来自: 北京

#17

帖子 salal » 2008-04-23 3:39

没有AMD,我们就得天天被Intel吸血了
Phenom 9750\2G DDR800 X4\640G SATAII X4\2900XT 1G DDR4\2008SERVER+UBUNTU
头像
akvact
帖子: 60
注册时间: 2007-10-22 11:50
来自: 影子世界

#18

帖子 akvact » 2008-04-23 18:15

挑战VS机遇,得要领者会是下一个M$?
waynehuge
帖子: 7
注册时间: 2006-08-09 0:53
来自: Wuhan Hubei

#19

帖子 waynehuge » 2008-04-24 15:15

真正的多线程时代来了
-------------------------------
way
kevin.c
帖子: 145
注册时间: 2008-04-01 12:28

#20

帖子 kevin.c » 2008-04-24 16:50

多核任务分工及调度应该是由操作系统来进行 而不应该将这些细节暴露给应用层
polo_linux
帖子: 35
注册时间: 2008-04-23 15:29

#21

帖子 polo_linux » 2008-05-08 9:20

毛主席说过:人多力量大。现在核多芯量大。
头像
pengpeng1987
帖子: 73
注册时间: 2008-05-06 11:02
来自: 野猪帝国

#22

帖子 pengpeng1987 » 2008-05-09 13:42

貌似Intel更重视超线程,AMD更重视多核共同为单线程加速,我个人更倾向于AMD,毕竟现在能够让每一个核心都100%占有率的多线程应用还是很少的,我还是更希望我现在手头上的工作完成得更快而不是苦苦等待 :oops:
wallstreeusa
帖子: 12
注册时间: 2008-04-26 10:15

Re: 从回复的人就知道这是灾难

#23

帖子 wallstreeusa » 2008-05-09 20:21

zzsczz 写了:
joo.tsao 写了:以上这么多人的回复都没人理解并行编程的难度以及调试地狱,哪怕是一点点,可以知道这是多么大的灾难!
关于并行编程,应用级别的开发 操作系统或者虚拟己经提供了基础设施,如线程、进程,java的java.util.concurrent等,按照手册编写即可,最终操作系统会把并行处理的任务分配到某个核上。编码是实现,体力活,调试只是辅助手段,用log4j之类的工具;关键是设计的结构要可以有效利用多核。

多核方面系统级别的开发,国内没有应用的需求牵引和实践的市场。编译器级别的开发么,中文没有文化优势,而且硬件没有自己的平台,做来做去还不是替老外打工,当然ms或者intel的研究院就另当别论。

利用多核还有一些方式,如虚拟机运行多个os,每个os运行一个应用,这是加速现有应用的最直接的方式,而且不用重新编译(如果这个应用适应这种结构)

操作系统很早就能管理多个cpu了,以前是用在工作站或者服务器上。现在cpu的频率上不去了,只好多核骗钱,结果就把以前超级服务器的应用搬到pc上,从这个方面看没什么稀奇的
操作系统在管理多个CPU上的确是已经实现,但这跟并行程序的编写是两码事。操作系统通过调度器,可以把进程分派给每一个CPU,然后它就没事了。但编写完成某个任务的并行程序并不是这么回事,多个程序完成一个任务,就要涉及到任务的分割,但实际上现有的程序设计理论是单入口的,完成这个任务的程序无论如何复杂,他的运行线索只有一条,要把它分开为多条线索并交由各个程序执行,除非这个这个任务的确很容易划分为各个子任务,否则,并行就很难发挥作用了,这就是为什么并行都是用在大型计算上。
头像
paul
帖子: 510
注册时间: 2005-09-01 20:48

#24

帖子 paul » 2008-05-10 22:14

同楼上,很多时候单个任务要想分成多个并行处理的任务,意味着重新设计算法,一个很简单的问题并行之后可能变得异常复杂;更不用提调试的时候多个线程同时运行带来的难度了。
头像
寂寞杀手
帖子: 335
注册时间: 2006-09-27 19:59
来自: 银川,宁夏

#25

帖子 寂寞杀手 » 2008-05-11 0:37

paul 写了:同楼上,很多时候单个任务要想分成多个并行处理的任务,意味着重新设计算法,一个很简单的问题并行之后可能变得异常复杂;更不用提调试的时候多个线程同时运行带来的难度了。
那就不要在简单的问题上浪费精力去搞什么并行算法——哪个核闲着就让哪个核去干,反正是简单的问题……这样以来,N个简单的问题就构成了复杂的问题,还是一样的嘛
我是一阵风,吹过飘零的天空;沾染了一身的灰尘,却抹不去飘浮的云……
sarevok
帖子: 7
注册时间: 2007-04-24 22:15

#26

帖子 sarevok » 2008-05-12 0:20

寂寞杀手 写了:
paul 写了:同楼上,很多时候单个任务要想分成多个并行处理的任务,意味着重新设计算法,一个很简单的问题并行之后可能变得异常复杂;更不用提调试的时候多个线程同时运行带来的难度了。
那就不要在简单的问题上浪费精力去搞什么并行算法——哪个核闲着就让哪个核去干,反正是简单的问题……这样以来,N个简单的问题就构成了复杂的问题,还是一样的嘛
试试就知道没有那么容易的,最主要是编程模型完全不同。
实际中任务不是想分割就可以分割的,不说复杂的,分割后不同的任务间要同步或者是交换数据,都会带来性能损失,搞不好会造成实际性能的下降;还有并行带来的对片内通信(尤其是内存访问)的的压力可是会成倍地增长的。

我试过在PS3的CELL上做个生成分形图案的程序,优化起来十分麻烦,虽然是用C/C++开发,但感觉上和写汇编差不多,不优化的话,性能又很差,完全发挥不出什么优势。
另外一个同构3核平台上做过JPEG解码器,也是感觉十分头痛,任务划分不好做,想很好地发挥多核性能优势还得费一番功夫
头像
paul
帖子: 510
注册时间: 2005-09-01 20:48

#27

帖子 paul » 2008-05-12 9:45

很巧,我去年也写过PS3 Cell的程序,我的感觉是:Cell是硬件设计上的杰作,同时也是程序员的噩梦,太多的底层操作了!同样的矩阵运算,单线程上百行的C,要想用Cell的多核,很容易就上千行了。
头像
ericzb
帖子: 441
注册时间: 2006-11-16 21:34
来自: Bridge View
联系:

#28

帖子 ericzb » 2008-05-19 4:51

家用机上要实现并行计算?
qazsss
帖子: 14
注册时间: 2008-05-26 0:47

#29

帖子 qazsss » 2008-05-28 0:09

lxf1597 写了:
zzsczz 写了:原因是intel的扣肉 比 amd的双核速龙64 要变态一些

实际上 双核速龙64 运行 2个super pi要比扣肉运行2个super pi花的时间少

但是只运行一个super pi,扣肉 比 双核速龙64花的时间少


双核速龙64运行一个superpi和2个super pi的时间相等
结构上不同的缘故么?原生多核和物理粘贴多核的区别?
我个人始终觉得AMD的未来发展更有前途些
其实 在讨论谁更有发展前途的时候 不要忽略
很多企业行为是根据市场来的
这就决定了
1 采用什么技术,什么时候采用,什么时候更新,由市场需要决定
2 利润同样也起到决定性的作用,这样的例子举不胜举

因此 现在就说谁更有前途 为时尚早
amwsmgk
帖子: 1
注册时间: 2008-05-28 11:06

#30

帖子 amwsmgk » 2008-05-28 11:09

可以在操作系统将硬件多核变成单核再根据程序的需要变成N核,并且N个核中每个核占用那个超级单核的分量各不一样.
回复