不支持Flash

图文:Intel软件产品部James Reinders

http://www.sina.com.cn 2007年11月30日 01:08  新浪科技
科技时代_图文:Intel软件产品部James Reinders
图为:Intel软件产品部首席宣传官兼市场总监James Reinders(骆磊 摄)

  2007年11月29-30日,软件开发2.0大会在北京九华山庄召开。“软件2.0”是正在发生的技术革命,其意义远远大于任何一个单项的新技术和新方法。

  图为:Intel软件产品部首席宣传官兼市场总监James Reinders(骆磊 摄)

  以下为其演讲全文:

  James Reinders:非常感谢。我的名字是James Reinders,我是Intel的员工,我在Intel已经有19年的时间了,最初是在美国,我刚开始加入Intel的时候,我主要是负责超大型计算机的工作。我帮助设计了一台比较著名的划时代的计算机,不过在那时候这个概念还是比较窄的。最近处理器发生了一些变化,它的基本架构已经发生了一些变化,它纳入了一些并行的东西,两年前,我们有了第一个双核的处理器,第一个微核处理第一次可以做两件事情,现在我们有四核的处理器,出来了四年多的时间了,它对于软件开发带来了很多的影响。

  我想跟大家分享一下,以上对于软件开发者意味着什么,我们了解的主要方面是什么,才能充分利用并行的优势,多核的处理器使我们有机会来在多核上同时并行地设计一些软件,来满足这种同时性的要求,我们已经讨论了很多使用Web,使用一个计算机和另一个服务器,和另一个WEB和另一个计算和数据库通话,所有这些都是涉及到并行的问题,因为它和计算机放在了一起。现在我们看一些基本的问题,看一下计算机的软件如何把它纳入同时性的话题当中,这对于软件开发者来说也是非常重要的话题。我想,当你开始这么想的时候,一开始采用这种思维可能整个流程会变得更加简单一些。

  现在我们看一下专家的一些看法。在很长一段时间内,微处理器速度变得越来越快了,有人甚至把它称为免费的午餐,微处理器速度越来越快,大家就想当然地认为它是免费的午餐,不过现在这个趋势正在发生变化,微处理器正在变得越来越快,不过它是加入了很多并行的核心,这个趋势已经有两年时间了。这是一个图片,展示了一个Tomshardware这个网站做的数据调查,我想给大家展示的是随着时间的发展,Intel引入了多核的微处理器,现在这个性能是获得逐渐的加强,我们在这个月早些时候公布这个微处理器超过了三个G,但是它还不是说这个速度增长的趋势像过去那么明显,不像一年半两年前那么明显,就是说它的速度的增长是有一些限制的,是已经趋缓了。现在这些应用却是在逐渐地改善和提高,这都是由于并行性给我们带来的,我不是谈未来我们面临的挑战。这已经是我们现在的挑战了,因为这个事情、这个概念的存在已经有两年的时间了,今天它已经变成了一个非常重要的话题,一个拐点,Jon把它叫做TippingPoint,在Intel我们称之为拐点,在这个拐点上有些事情发生了变化,而这些变化对我们来说是非常重要的,我们在建设处理器过程中,我们可以把它弄成是很多很多核的。

  其实在实验当中,我们其实已经可以做到80个核了,不过这只是实验中的结果,如果我们明天要发布一些80核的处理器的话,我相信会有人买,但是买的人不会太多。不过在5年之内,我们会看到10几个20个甚至多达40个核的处理器,未来5-10年中会有这样一个状况,有一个你可以观察到的事情就是它的属于不会增长得太快,你会看到一些软件,它的速度会有一些提高,但是如果它不适用这种同时性,也就是Concurrency的话,它的速度不会提高太快。另外所有的过程中,它的性能也要不断增强,增强它的性能需要充分考虑这种同时性和并行性。

  两个核、四个核、八个核是这样,在未来推到100个核你是否能充分利用这种并行性就变得至关重要了。当我们一直用“我们”,我所说的“我们”并不是指Intel,还包括很多其他的公司、大学、研究机构,我们都需要充分地做工作,来从这一趋势中受益。对于Intel来说,我们现在在这个领域做了很多的工作,我在这儿的目的不是来夸Intel或者来宣传Intel,我是来给大家介绍一下我们在做什么。

  大家看一下,我们现在在对软件工具进行一些投资或者说对研发进行一些投资,一些关键的软件开发研发领域进行投资,比如说多线程的一些情况。而且我们还做了很多的培训和教育项目,我和全球很多的教授都有沟通,我会问问他们说这个概念如何更好地让人们来了解等等。不过现在我们还不知道。

  我们知道做其中的一些,但是如何有效地培训我们还不知道。Intel在这方面做了很多的事情,我非常喜欢这个大会,因为我们有能够自己学习到很多东西,有一些东西是非常容易自己做,但是如何教给大家是比较困难的,但是我们在这方面做投资,什么叫推进我们的动力呢?要想实现并行编程要强调三点,这三点要非常好的理解才能做到并行编程,一个是可伸缩性,就是如何使应用能够有很好的伸缩性。另外还有准确性,你如果有并行的程序,如果它出了问题怎么样纠正它,另外你的编码是如何可维持的。维持性是一个问题,就像是并行编程的话给了我们新的拐点,因此这三个方面都能给我们很大的价值,有时候我们写一个编程,可能是在一个单核的处理器上运转得很好,但是在双核的处理器上并行就不见得好。有时候序列码不见得是在并行的情况下做的非常好,但是以后我们会要面对越来越多的并行处理器。因此,未来我们写编程的时候,既能够在单核处理器上运行很好,同时在双核上也要运行很好。

  我们出现了很多的多核的处理器,很多人都不能用,所以我们更要学习并行的编程。因此我们要谈可伸缩性,可伸缩性能够增加速度,在四核上给我们增加三倍、四倍,这是很好的。关键是每次我增加处理器的核我们都是想增加速度,两核要比一核的速度快,四核要比二核的速度要快,十核要比四核要快,这是我们的目标等等。

  可伸缩性非常重要,因此最终就有一些具体的东西你要做,在软件开发方面,你做的事情就能够使得编程,如果不能够继续伸缩和扩展,就成问题了,我知道有一些人他们做一些并行的程序,但是他们一开始考虑的是可伸缩性,然后再考虑效率。我觉得这样做很好玩,但是我们可以有不同的思维模式。因此,我们要考虑可伸缩性,如果从我的发言里面想得到东西的话,最重要的一点就是什么样叫可伸缩的程序,比如说编程,因此如何使我们的程序实现这种可伸缩性,我们早就应该考虑这一点。软件不光是多核的问题,也有可伸缩性的问题,这是一个多方所显的编码,有的比如说显示出来是手写的,非常复杂,有几百行,然后再加了两百行,为了实现并行又加了两百行。另外一条线是更加可伸缩性,在我们增加处理器的时候,在采用这种抽象化的原理,叫CallOpenEndp。我们看到首先写起来非常复杂,但是他们所实现的速度差不多,但是在并行的时候,六核的时候表现好,但是八核的时候就不行了,这是因为手写的编码跟不上,这是一个编码上的问题,手写的编码它有一个全面的瓶颈,因此每次要做变化的话,要对全面的修改,形成了一种局限。比如我们用

JAVA,我们要花很多的时间,要等着另外一个增加放到一个堆栈里面,这也是一样的,如果一个手写的编码要增加200行,这是很没有效率的。因此这里的关键是这种技术不应该让我们每次都要增加很多的软件,今天下午我会谈解决方案,因此可伸缩性要我们考虑如何编程,以及编程的一些技巧,不仅仅是靠多写编码,因为这样的工作量太大了。

  另外一个挑战就是作为准确性,这已经是我们面对的挑战了。如果在一个Web的环境里面我们有多个电脑编程,实现这种准确性。比如说飞机上的座位安排,你把一个座位卖出以后,不想再重复卖一次,同样多核也有这样的问题,软件有两个领域。你在多核的时候可能会遇到问题,一个就是在竞争的条件,另外就是死锁的情况,如果不知道这两个概念是什么意思的话,这两个是非常基础的东西,需要我们知道。所谓竞争状态指的就是持续不同的方法,他们同步出现的问题。结果是我们不能够预先来判断的,这是因为你的程序里面他们彼此独立运作,他们彼此不能很好地同步。而死锁方面,也是程序的一个部分要等另外一个部分,或者这个部分等另外一个部分,这个程序就不能往前进了。

  这两个概念在并行编程是我们教学的时候非常强调的,这样的话我们才能够更好地利用并行性。

  最后一个话题就是我们要解决的,就是我们有了编程,我们要对编码要做非常好的维持,这对于编程来讲是非常关键的。我们的JAVA的语言C++的语言,所有的编程人员会使编程更加容易。并行程序里面不仅有抽象化,抽象化也是非常重要的。刚才讲了并行性的有时候可能会失败,有时候红色的是手写码,粉红色的是抽象的码,绿色是比较容易写,比较容易排错比较容易提升的,因此我们就需要正确的工具,我们来做更好的排序。Intel在这方面非常的积极,还有其他有一些项目也在进行当中,这实际上是非常重要的。

  有三件事情,首先是库,库的问题都能够给我们带来很大的方便,人们把程序里面镶嵌到Libraries,还有OpenMP,是非常通行,非常有效,非常好用的,在Intel我们也用。

  还有多线性也是非常重要的,所有这些。以上三点非常重要,一个是可伸缩性,一个是正确性,还有一个可维护性。下午四点我会就这三方面讲更多信息,我们整个的时间安排非常紧,我们希望花一些时间学习这些,对于编程来说,这些是非常重要的,未来的多核如果善于利用好并行性的话,就可以带来更多的机会。谢谢。

发表评论 _COUNT_条
Powered By Google
·《对话城市》直播中国 ·城市发现之旅有奖活动 ·企业邮箱换新颜 ·邮箱大奖等你拿
不支持Flash
不支持Flash