日期:2014-07-15 09:41:29
就当大家都一筹莫展之际,有人突然想到,既然单个CPU的速度没法提升了,能不能将多个CPU合在一处发力,相互之间彼此进行合作,来提高计算机的计算能力呢?
什么,这个想法不错?
如果你也觉得这个方法可行,那我要告诉你,你大概真的不懂计算机!
虽然说上诉设想基于“一加一等于二,二加二等于四”的原理出来的产物,意思是两个人干活总是要比一个人干得快,而三个人干活总要比两个人干得快……这个浅显的道理,大家都能明白。
但是在计算机领域,这个法则却不一定适用!
日期:2014-07-15 09:42:11
原因很简单,写过程序的童鞋应该都知道,任何程序都是按照程序的顺序依次依次执行的。比如说要计算1000个1相加,那计算机必然是从1开始,累次进行递增,最后结束于“999+1=100”这一步。这也就是说,计算机(CPU)的运算步骤至始至终都是串行的。
如果只有一个CPU,那很好办,就让它从头到尾跑一遍就行了。
但是如果有多个CPU呢?该如何来规划每个CPU的工作内容和工作范围呢?
日期:2014-07-15 09:42:34
方法一:第一个CPU跑1/N的计算过程,然后将计算的结果发送给第二个CPU,让它接着跑,然后依次接力,完成整个运算。
评价:不要用猪的思维来考虑问题好不好!
整个过程中,我们发现第一个CPU在传递完参数之后就一直在休息了,而其他的CPU在前一个结果还未接收到是也一直处于闲置状态。这种玩法跟用单独CPU进行运算有什么区别呢?甚至还不如单独CPU省事!
日期:2014-07-15 09:44:48
方法二:每个CPU负责一段计算过程,最终将每个CPU所得的结果汇总。
评价:略有进步,但不足之处也多!
首先,每个CPU负责的计算范围如何控制?其次,1000个1相加是这类问题中最为简化的一种,如果碰上傅里叶转换之类的世界级问题,如何对整个问题进行拆分?还有,拆分之后的问题的复杂程度会不会比原问题高出几个数量级,如此一来,加再多的CPU都没有用……
日期:2014-07-15 09:46:22
多加几个CPU会带来更多的问题!
这一下让科学家们都傻了眼,接下来该怎么办?
不要紧,既然存在问题,那必然有解决问题的方法。
这样的焦虑随着一种叫做并行算法的正式诞生逐渐消失,该算法在一定程度上(注意这个用词)解决了多CPU合作的问题,同时也是计算机史上一次伟大的变革,从此计算机开始走入了并行时代。
问题马上来了:什么是并行算法?
我们还是以刚才那个1000个1相加的例子,简要解释一下并行算法的概念。
日期:2014-07-15 09:47:22
如果我们面对一台拥有2个CPU的的计算机,那我们可以让每个CPU执行500次1相加的指令,然后再用其中的某个CPU将两个CPU计算的结果相加,答案就出来了。
对于拥有3个CPU的计算机,我们同样可以将问题均分为三份,同样4个CPU,N个CPU的计算机亦是如此……
这样一来,每个CPU仅执行了1/N的次数,效率提高了N倍。而其中将1000次1相加进行均等划分的算法,就称之为并行算法!
并行算法会根据不同的问题,将计算规模合理地分配到每个CPU上,并规定相互CPU之间的合作模式(同步、异步)等, 并得到最终的计算结果。
并行算法的出现,使得多CPU协同合作成为了可能,同时也为超级计算机的出现铺平了道理。
日期:2014-07-15 09:48:55
但是如果我们对上述例子多做些思考,其实也不难发现,并行算法也不是万能的:首先,并不是所有的问题都有行之有效的并行算法;其次,CPU之间的数据传输也是制约并行算法效率的不利因素。
虽然这些不利因素相对于一条道走到黑来提高单个CPU计算速度的恶劣影响要轻的多,但也不是那么轻易能够做到的。
IBM曾经玩过一次著名的广告,其影响之轰动,让我都觉得凭IBM的广告水平,如果投身于传媒领域,混个前三绝对没问题。
日期:2014-07-15 09:49:21
那时IBM刚弄出了一台名为“深蓝”的超级计算机,为了向世人炫耀其独一无二的计算能力,便向国际象棋冠军卡斯巴罗夫挑战。
第一次交锋,这个号称世界第一快的“深蓝”灰头土脸地以2-4落败。
一年之后,经过数次改良的“深蓝”再次挑战卡斯巴罗夫,最终以3.5-2.5险胜。
我们来看一下当时的数据,第一次挑战卡斯巴罗夫时,“深蓝”的计算速度是每秒一亿步棋,而经过一年的改良,达到了每秒两亿步棋,性能上整整提高了一倍。
一年的时间啊!
拥有世界顶尖科研水平的IBM集全公司之力,尚且花了一年多的时间,才将超级计算机的性能提高了一倍,可想而知难度有多大,这也从另外一个方面证明了并行算法也并非灵丹妙药!
日期:2014-07-15 09:49:52
关于超级计算机方面的结束到此告一段落,相信各位已经对超级计算机极为复杂的结构,极为牛逼的性能有了个概念上的了解。
可是安德森,超级计算机有那么屌,你造吗?
安德森第一次与超级计算机进行亲密接触时,他感觉自己就像个白痴,似乎以往所拥有的计算机技能,在这里都没有了用武之地。
这哥们原本是想找个可以继续混日子的地方,好好地混完接下来一年半载的学生生涯,然后离开学校,做一个中产阶级安德森。
但从目前的情况来看,他的这个美好愿景彻底破碎了。这个地方不仅不能混,而且还不好混。
先别说研究超级计算机了,赶紧学习一点超级计算机的知识才是正事!
日期:2014-07-15 09:59:17
从这天起,懒汉安德森瞬间转型为学习狂安德森,一头扎进了浩瀚的专业计算文档中,日以继夜地开始了对超级计算机的钻研。
那个十岁的时候醉心于Basic学习的安德森又回来了,只不过当时是以兴趣的方式,而这一次则是形势所迫。
没有多久,安德森就发现了一个怪现象。
日期:2014-07-15 09:59:53
与他一同来进来实习的小伙伴,以及在他之前进来的前辈们,对这个所谓的超级计算机似乎兴趣不太大。整整一个偌大的计算机中心,除了安德森童鞋一个人在积极的学习超级计算机之外,其他人顶多也就是在装装样子。
原来混日子也是分很多种的,有的人你看他一天到晚无论工作学习都很认真的样子,但是却看不到任何成效,谁也不知道他心里到底在想写什么,这种叫做“心混身不混”,
安德森周围的同事以这种类型的居多。
而安德森的之前的那种混法,则是“身心合一”的混日子,很容易被他人甄别,这才让安德森感到心虚,在进入NSCA后,立马换了个姿态。
可是安德森童鞋,你怎么就这么实在呢?
日期:2014-07-15 10:00:15
其实大家对超级计算机不敢兴趣,也怨不得他们,因为这样东西对立志于搞学术研究的人来说是个宝贝,对于立志不搞研究的人来说,也是宝贝,只不过是可以用价格来衡量的宝贝,如果这些机器都能卖的话。
当时来说,由于超级计算机又贵又难操作,诸如“SUN”之类的公司就开发了另一种称之为工作站的计算机。这是一种功能介于超级计算机和个人计算机之间,能够提供强大的计算能力,同时价格还颇为便宜的计算机。这样的机器,对大多数企业而言,有着致命的杀伤力,并不断蚕食超级计算机的市场。
日期:2014-07-15 10:00:43
实习生毕竟只是实习生,并非专业的科研人士,况且他们将来毕业之后大多数是要进入企业去发展的。在这样一种情况下,肯花大力气去钻研这种“食之无味,弃之也不甚可惜”的超级计算机,那除非是脑袋进水了!
安德森的脑袋并没有进水!
但是,他反而钻研的更为勤奋了。在众人惊异的目光中,他每天很早就来了,工作到很晚还不回去,一不小心成为NSCA史上最为勤奋的实习生。
原来,他在无数个日日夜夜枯燥无趣的钻研生涯中,发现了一件极为有趣的玩意。就连安德森本人也未曾料到,这样东西将改变人类的将来,同时也改变他的命运。
这玩意就是互联网。
【网站提示】 读者如发现作品内容与法律抵触之处,请向本站举报。 非常感谢您对易读的支持!
举报
© CopyRight 2011 yiread.com 易读所有作品由自动化设备收集于互联网.作品各种权益与责任归原作者所有.